티스토리 뷰

1.    JSP 표준 액션 태그

-      액션 태그는 많은 자바 코드를 포함하고 있는 Scriptlet 태그( <% %>)를 제거 및 감소할 목적으로 제공되는 코드이다.

-      , 자바코드 대신에 액션 태그만으로도 동일한 결과를 얻을 수 있다는 의미이다.

-      액션 태그의 종류에는 다음과 같은 6가지의 액션 태그가 있다.

-      1 ) <jsp:useBean /> : 자바빈 컴포넌트를 사용하기 위한 액션 태그

-      2 ) <jsp:setProperty /> : 자바빈 인스턴스에 데이터를 저장하기 위한 액션 태그

-      3 ) <jap:getProperty /> : 자바빈 인스턴스에서 데이터를 얻기 위한 액션 태그

-      4 ) <jsp:include /> : 제공된 JSP파일을 삽입하기 위한 액션 태그

-      5 ) <jsp: forward /> : 제공된 JSP파일을 forward하기 위한 액션 태그

-      6 ) <jsp:param /> : includeforward할 때 요청 파라미터를 추가하기 위한 액션 태그

-      + 6jsp내에서 jsp를 포함할 때나 다른 jsp로 전환될 때, 그전 jsp에서 가지고 있던 데이터 중 필요 데이터를 넘길 때 사용된다.

 

2.    자바빈

-      자바빈은 JSP에서 사용되는 데이터를 저장 및 관리하기 위한 컴포넌트를 의미한다.

-      , JSP에서 데이터를 관리하는 부분을 별도의 클래스로 작성하는 것이다.

-      + DTO에서 @Data는 자바빈을 생성하는 롬복이었다.

-      일반적으로 입력 파라미터의 값을 저장하거나 관리하기 위해서 사용한다.

 

3.    자바빈즈 클래스의 규약

-      1 ) 모든 필드는 private 선언한다. ( 필수 )

-      2 ) 각 필드별 Getter/Setter 선언한다. ( 필수 )

-      3 ) 매개변수 없는 기본생성자를 가져야 합니다. (필수)

-      4 ) java.io.Serializable Tag 인터페이스를 implements 해야한다. ( 선택 )

-      + 4번의 의미는 자바빈즈 객체를 객체의 직렬화 / 역직렬화를 통해, 파일에 읽고 쓰거나, 네트워크로 읽고 쓸 수 있다는 것을 JVM에게 알려주는 역할을 수행한다는 의미다.

 

4.    <jsp:useBean> 액션 태그

-      자바빈을 JSP에서 사용하기 위한 액션 태그이다.

-      기본적인 문법 :

-      <jsp:useBean id = “빈 이름” class = “패키지 포함한 빈클래스 명(FQCN)” scope = “범위” />


[ 1. 액션태그 - <jsp:useBean id = "빈 이름" class = "FQCN" scope = "범위 지정" /> ] ( *** )

 

[ 1 - 1. 자바빈즈 클래스 ( DTO와 매우 유사 ) 생성 ]

 

package org.zerock.myapp.domain;

import lombok.Data;

@Data
public class LoginBean {
	
	private String userid;
	private String passwd;

} // end class

 

[ 1 - 2. jsp:useBean 생성 ]

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>userBean</title>
</head>

<body>
    
    <h1>/JSP/userBean.jsp</h1>
    <hr>

    <!-- 우선 자바빈즈 객체부터 생성해서, 기본 공유영역에 바인딩한다. -->
    <jsp:useBean 
        id="myBean" 
        class="org.zerock.myapp.domain.LoginBean" 
        scope="page" />

    <h1>useBean 액션태그</h1>

    <%
    
        // 자바빈즈 객체의 프로퍼티에 값을 설정
        myBean.setUserid("hehehehe");
        myBean.setPasswd("12345");
    
    %>

    <!-- 자바빈즈 객체의 프로퍼티(속성) 출력 -->
    <h3>1. userid : <%= myBean.getUserid() %></h3>
    <h3>2. passwd : <%= myBean.getPasswd() %></h3>

</body>

</html>

[ 2. 액션태그 2 - <jsp:useBean id = "빈 이름" class = "FQCN" scope = "범위 지정" /> ] ( *** )

 

[ 2 - 1. scope가 session인 jsp:useBean 생성 ]

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<jsp:useBean id="myBean" class="org.zerock.myapp.domain.LoginBean" scope="session" />

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>useBeanScope</title>
</head>

<body>

    <h1>/JSP/useBeanScope.jsp</h1>
    <hr>

    <h1>useBeanScope 연습</h1>

    <%
    
        myBean.setUserid("yoyoyo");
        myBean.setPasswd("7777777");

    %>

    <!-- 자바빈즈 객체의 프로퍼티(속성) 출력 -->
    <h3>1. userid : <%= myBean.getUserid() %></h3>
    <h3>2. passwd : <%= myBean.getPasswd() %></h3>

</body>

</html>

 

[ 2 - 2. session 공유데이터 영역에서 데이터 가지고 오는 jsp:useBean 생성 ]

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<jsp:useBean 
    id="myBean" 
    class="org.zerock.myapp.domain.LoginBean" 
    scope="session" />

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>useBeanScope2</title>
</head>

<body>
    
    <h1>/JSP/useBeanScope2.jsp</h1>
    <hr>

    <h1>useBeanScope 연습</h1>

    <!-- scope가 session이기에 useBeanScope에 올려 놓은 데이터가 살아있는 상태이다. -->

    <!-- 자바빈즈 객체의 프로퍼티(속성) 출력 -->
    <h3>1. userid : <%= myBean.getUserid() %></h3>
    <h3>2. passwd : <%= myBean.getPasswd() %></h3>

</body>

</html>

[ 3. 액션태그 3 - <jsp:setProperty name = "빈 이름" property = "속성 이름" value = "속성 값" /> ] ( *** )

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<jsp:useBean id="myBean" class="org.zerock.myapp.domain.LoginBean" scope="page" />

<!-- 속성 설정 -->
<jsp:setProperty name="myBean" property="userid" value="wowowow" />
<jsp:setProperty name="myBean" property="passwd" value="1234567" />

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>useBeanSet</title>
</head>

<body>
    
    <h1>/JSP/useBeanSet.jsp</h1>
    <hr>

    <h1>useBeanSet 연습</h1>

    <!-- 자바빈즈 객체의 프로퍼티(속성) 출력 -->
    <h3>1. userid : <%= myBean.getUserid() %></h3>
    <h3>2. passwd : <%= myBean.getPasswd() %></h3>

</body>

</html>

[ 4. 액션태그 4 - <jsp:setProperty name = "빈 이름" property = "속성 이름" param = "전송파라미터 이름"  /> ] ( *** )

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!-- 기본 scope에 바인딩 되어 있는 자바빈즈 객체를 Request 메세지의 전송 파라미터 수집용으로 사용 -->
<jsp:useBean id="myBean" class="org.zerock.myapp.domain.LoginBean" />

<!-- .getParameter 대신 해준다. -->
<!-- param 값은 전송 파라미터에 맞게 설정해 주면 된다. -->
<jsp:setProperty name="myBean" property="userid" param="myUserid" />
<jsp:setProperty name="myBean" property="passwd" param="myPasswd" />

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>useBeanParam</title>
</head>

<body>
    
    <h1>/JSP/useBeanParam.jsp</h1>
    <hr>

    <h1>useBeanParam 연습</h1>
    <h2>Param 속성을 통한 전송파라미터 자동수집 실습</h2>

    <!-- 자바빈즈 객체의 프로퍼티(속성) 출력 -->
    <h3>1. userid : <%= myBean.getUserid() %></h3>
    <h3>2. passwd : <%= myBean.getPasswd() %></h3>

</body>

</html>

[ 5. 액션태그 5 - <jsp:setProperty name = "빈 이름" property = " * "  /> ] ( **** )

 

+ 속성 이름과 전송파라미터의 이름이 같으면 *를 통해 자동 지정해 줄 수 있다.

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!-- 기본 scope에 바인딩 되어 있는 자바빈즈 객체를 Request 메세지의 전송 파라미터 수집용으로 사용 -->
<jsp:useBean id="myBean" class="org.zerock.myapp.domain.LoginBean" scope="page" />

<!-- 모든 전송파라미터가 자바빈즈 객체의 속성과 이름이 같다면, -->
<!-- 아래와 같이 한번의 jsp:setProperty로 모든 전송 파라미터의 수집이 가능하다. -->
<jsp:setProperty name="myBean" property="*" />

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>useBeanAll</title>
</head>

<body>
    
    <h1>/JSP/useBeanAll.jsp</h1>
    <hr>

    <h1>useBeanAll 연습</h1>
    <h2>Param 속성을 통한 전송파라미터 자동수집 실습</h2>

    <!-- 자바빈즈 객체의 프로퍼티(속성) 출력 -->
    <h3>1. userid : <%= myBean.getUserid() %></h3>
    <h3>2. passwd : <%= myBean.getPasswd() %></h3>

</body>

</html>

[ 6. 액션태그 6 - <jsp:getProperty name = "빈 이름" property = "속성 이름"  /> ] ( **** )

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!-- 기본 scope에 바인딩 되어 있는 자바빈즈 객체를 Request 메세지의 전송 파라미터 수집용으로 사용 -->
<jsp:useBean id="myBean" class="org.zerock.myapp.domain.LoginBean" scope="page" />

<!-- jsp에서는 주석기호를 %를 사용하여 작성해 주는 것이 좋다. -->
<!-- 모든 전송파라미터가 자바빈즈 객체의 속성과 이름이 같다면, -->
<!-- 아래와 같이 한번의 jsp:setProperty로 모든 전송 파라미터의 수집이 가능하다. -->
<jsp:setProperty name="myBean" property="*" />

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>useBeanAll</title>
</head>

<body>
    
    <h1>/JSP/useBeanAll.jsp</h1>
    <hr>

    <h1>useBeanAll 연습</h1>
    <h2>Param 속성을 통한 전송파라미터 자동수집 실습</h2>

    <!-- 자바빈즈 객체의 프로퍼티(속성) 출력 -->
    <!-- getProperty로 얻어내기 (***) -->
    <h3>1. userid : <jsp:getProperty name="myBean" property="userid" /> </h3>
    <h3>2. passwd : <jsp:getProperty name="myBean" property="passwd" /> </h3>

</body>

</html>

[ 7. 액션태그 7 - <jsp:include page = "삽입될 페이지 위치" flush = "true"  /> ] ( ***** )

 

[ 7 - 1. main.jsp에 넣을 header.jsp 생성 ]

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@page import="java.util.Calendar" %>

<%

    String httpMethod = request.getMethod(); // GET / POST

    String nickName = request.getParameter("nickName");

    Calendar cal = Calendar.getInstance(); // 달력 객체 얻기

    int hour = cal.get( Calendar.HOUR_OF_DAY ); // 달력에서 현재 시간 획득
    int minute = cal.get ( Calendar.MINUTE );  // 달력에서 현재 분 획득
    int second = cal.get( Calendar.SECOND );  // 달력에서 현재 초 획득

%>

<h1> 1. 현재 시간은 <%= hour %>시 <%= minute %>분 <%= second%>초 입니다.</h1>
<h1> 2. 닉네임은 <%= nickName %> 입니다.</h1>
<h2> 3. HTTP Method : <%= httpMethod %></h2>

 

[ 7 - 2. main.jsp 생성 ]

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>main2</title>
</head>

<body>
    
    <h1>/JSP/main2.jsp</h1>
    <hr>

    <h1>include 지시어 태그 연습</h1>

    <p>현재 시간을 구하는 연습문제입니다. 다음줄에 삽입됩니다.</p> <br>

    <!-- target인 header.jsp를 include할 때, header.jsp에 필요한 파라미터를 전달하는 용도로 -->
    <!-- param 액션 태그를 사용해야 한다. -->
    <jsp:include page="/JSP/header.jsp" flush="true"> 
        <jsp:param name="nickName" value="한글" />
    </jsp:include>

</body>

</html>

[ 8. 액션태그 8 - <jsp:forward page = "삽입될 페이지 위치"  /> ] ( ******* )

 

[ 8 - 1. forward할 페이지 ]

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>current</title>
</head>

<body>
    
    <!-- 현 JSP에서는 아래의 태그를 응답문서 Body에 출력한다. -->
    <h1>/JSP/current.jsp</h1>
    <hr>

    <h1>forward 지시어 태그 연습</h1>

    <jsp:forward page="/JSP/forward.jsp"> 
        <jsp:param name="nickName" value="한글" />
    </jsp:forward>

</body>

</html>

 

[ 8 - 2. forward 받을 페이지 ]

 

<%@ page 
    language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>forward</title>
</head>

<body>
    
    <!-- 현 JSP에서는 아래의 태그를 응답문서 Body에 출력한다. -->
    <h1>/JSP/forward.jsp</h1>
    <hr>

    <h1>forward 지시어 태그 연습</h1>
    <h2>/JSP/current.jsp에서 포워드된 화면</h2>

    <%
    
        String httpMethod = request.getMethod(); // HTTP Method

        String data = request.getParameter("data");

        // current.jsp에서 준 전송파라미터 획득
        String nickName = request.getParameter("nickName");
    
    %>

    <h3>포워드 되었으며, 넘어온 파라미터값은 <%= nickName %>입니다. </h3>
    <h3>직접 입력시킨 파라미터값은 <%= data %>입니다. </h3>

    <h3>HTTP method : <%= httpMethod %> </h3>

</body>

</html>

 

 

 

 

728x90
댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항