지난 포스팅에서 사용했던 액션태그 중 <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 |