지난 포스팅에서 사용했던 액션태그 중 <jsp:useBean>태그입니다.

위의 태그에서는 scope(영역)라는 속성이 추가되었습니다.

scope속성으로 자바빈의 생존범위를 지정해 줍니다.


보통 웹 어플리케이션은 4가지의 영역(scope)를 가지고있습니다.

page, request, session, application 이렇게 4가지의 영역이 있습니다.

page영역 : 하나의 페이지(같은 페이지)에서만 유효

request영역 : 클라이언트(사용자)의 요청(response)가 처리되는 동안에 생기는 범위(응답이 이루어질 때 까지 유효)

[ 클라이언트가 요청을 보낼때 하나의 request영역이 생성, 하나의 요청을 처리하는데 사용되는 모든 페이지를 포함한다. ] , [ forwarding, include를 이용해서 여러 페이지에 공유가 가능함 ]

session영역 :  session이 유지되고 있는 동안의 범위 즉, 웹 브라우저를 닫기 전까지 혹은 웹 브라우저를 닫지 않더라도                     session의 사용시간까지 유효함.

application영역 : 웹 어플리케이션이 실행되고 있는 동안의 범위 즉, 웹 서버를 종료하기 전까지 유효함.


각 영역은 관련되어진 기본객체를 가지고 있습니다.

page영역 -> pageContext객체

request영역 -> request객체

sessino영역 -> session객체

application영역 -> application객체


이 4가지의 기본객체들은 속성을 가지며 속성처리를 위한 메소드를 가지고 있습니다.

(여기서 속성은 공유되는 데이터를 의미합니다)


 메소드

리턴타입 

설명 

 getAttribute(String key)

Object 

이름이 key인 속성의 값을 구한다.

(단, 지정한 key가 존재하지 않을경우 null을 리턴한다.)

 setAttribute(String key, Object value)

void 

key인 이름의 속성의 값을 value로 지정해준다.

 getAttributeNames()

java.util.Enumeration 

모든 속성의 이름을 구한다(pageContext객체에서는 이 메소드를 제공하지 않는다.) 

 removeAttribute(String key) 

void

속성중 지정된 key의 속성을 제거한다. 


4가지의 scope를 알았으니 지난 포스팅에서 사용했던 소스코드를 약간 수정해서 브라우저에서 값을 입력하고 처리되어 출력되도록 해보겠습니다.


memberInput.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보</title>
</head>
<body>
<form action="memberOk.jsp" method="post">
아이디 : <input type="text" name="id" size="5"><Br />
이름 : <input type="text" name="name" size="5"><Br />
나이 : <input type="text" name="age" size="4"><Br />
주소 : <input type="text" name="address" size="4"><Br />
이메일 : <input type="email" name="email"><Br />
<input type="submit" value="확인">
<input type="reset" valut="다시입력">
</form>
</body>
</html>
cs

입력을 받기 위한 화면


memberOk.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 
<%
    request.setCharacterEncoding("UTF-8");
%>
 
<jsp:useBean id="member" class="com.memberInfo.MemberInfo" scope="request"/>
<jsp:setProperty name="member" property="id" param="id"/>
<jsp:setProperty name="member" property="name" param="name"/>
<jsp:setProperty name="member" property="age" param="age"/>
<jsp:setProperty name="member" property="address" param="address"/>
<jsp:setProperty name="member" property="email" param="email"/>
<jsp:forward page="memberInfo.jsp"/>
cs

입력받은 값들로 MemberInfo.java자바빈의 property들을 설정


memberInfo.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    request.setCharacterEncoding("UTF-8");
%>
 
<jsp:useBean id="member" class="com.memberInfo.MemberInfo" scope='request'/>
 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원정보</title>
</head>
<body>
    이름 : <jsp:getProperty property="name" name="member"/> <br />
    ID : <jsp:getProperty property="id" name="member"/> <br />
    나이 : <jsp:getProperty property="age" name="member"/> <br />
    지역 : <jsp:getProperty property="address" name="member"/> <br />
    이메일 : <jsp:getProperty property="email" name="member"/> <br />
</body>
</html>
cs

결과를 출력



memberInput.html에서 사용자가 값을 입력하면 MemberOk.jsp로 값들을 휙~ 보내줍니다.

그럼 MemberOk.jsp에서 property들을 입력받은 값들로 설정해줍니다.

여기서 <jsp:setProperty>태그로 설정을 할때에 param이라는 속성이 등장합니다.

param속성의 값으로는 전달되어온 값들의 name 즉, html페이지에서 input태그에서의 name의 값을 적어줍니다.


이렇게 설정 후 출력을 하기위해서 <jsp:forward>액션태그를 이용해 memberInfo.jsp로 포워딩시킵니다.

memberInfo.jsp에서 7번라인처럼 액션태그를 써줘야 request영역에 저장된 자바빈 객체를 사용할 수 있습니다.

그 이유는 memberOk.jsp에서 scope를 request로 해놨기 때문입니다.



다음 포스팅에서는 몇개의 액션태그를 더 정리해보겠습니다.

'프로그래밍 > JSP' 카테고리의 다른 글

[JSP] 23. 데이터베이스 Ⅱ  (0) 2015.08.19
[JSP] 22. 데이터베이스Ⅰ  (0) 2015.08.19
[JSP] 20. 액션태그 - useBean I  (0) 2015.08.13
[JSP] 19. JavaBean(자바빈)이란?  (0) 2015.08.12
[JSP] 18. 예외페이지(에러처리)  (0) 2015.08.07