JSP의 bean의 활용 <jsp:usebean>

infoqoch·2021년 1월 25일
0

Servlet(JSP)

목록 보기
3/9

들어가며

  • JSP에서 객체를 잘 다루는 것이 중요하다. 이러한 객체를 bean 이라 한다.
  • bean의 활용을 정리하고자 한다.

bean의 초기화

  • 빈은 아래와 같이 초기화하고 사용한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<% 
request.setCharacterEncoding("utf-8");
String title = request.getParameter("title");
String author = request.getParameter("author");
String[] bookstore = request.getParameterValues("bookstore");

BookBean bn1 = new BookBean();
bn1.setTitle(title);
bn1.setAuthor(author);
bn1.setBookstore(bookstore);
%>

<table>
	<tr>
	<th>제목</th>
	<td><%=bn1.getTitle() %></td>
	</tr>
	<tr>
	<th>저자</th>
	<td><%=bn1.getAuthor()%></td>
	</tr>
	<tr>
	<th>구입가능매장</th>
	<td><%=Arrays.toString(bn1.getBookstore()) %></td>
	</tr>
</table>

  • 액션태그인 <JSP:명령어 >을 통해 빈을 만들 수 있다. 아래와 같다.
<jsp:useBean id="bn2" class="bean.BookBean"/>
<jsp:setProperty property="*" name="bn2" />
<jsp:setProperty property="title" param ="title" name="bn2"/>
<%
	String title1 = request.getParameter("title");
%>
<jsp:setProperty param="title" value="<%=title1 %>" name="bn2"/>
	<tr>
	<th>제목</th>
	<td><jsp:getProperty name="bn2" property="title" /></td>
	</tr>
	<tr>
	<th>저자</th>
	<td><jsp:getProperty name="bn2" property="author" /></td>
	</tr>
	<th>구입가능매장</th>
	<td><%=Arrays.toString(bn2.getBookstore())%></td>
	</tr>
</table>
  • <jsp:usebean />을 통해 객체를 생성하고 <jsp:setProperty /> 를 통해 필드값을 주입하고 <jsp:getProperty />를 통해 값을 불러온다.
  • usebean 태그에서 객체의 변수를 id라는 속성으로 정의한다. 하지만 get/setProperty에서는 name으로서 호출한다.
  • setProperty을 통해 객체의 필드값을 채울 수 있다. 그 방법은 param을 통해 파라미터를 직접 받거나, value를 통해 자바언어로 선언된 변수값으로 할 수 있다. 여기서 편의 기능으로 property="*" 가 있다. 이는 객체의 필드의 이름이 request로 넘어온 값의 이름과 같으면 자동으로 입력해준다. 다만 한계는 많다.
  • 먼저, 매개변수가 없는 생성자를 필요로 하며(TestBean tb = new TestBean()와 같기 때문에), Date 등 다양한 데이타 타입을 지원하지 않는다. 날짜 및 시간의 값을 String으로 처리하며, 그 값이 java나 html, DB에서 이해할 수 있는 규칙에 따라 작성하였으면, 자동으로 date에 걸맞는 값으로 전환한다.

scope

  • bean에는 scope라는 태그가 존재한다.

  • 객체는 기본적으로 scope가 page이다. 해당 객체는 해당 페이지에서만 유효하다. scope의 값과 사용범위는 아래와 같다.

    page 해당 페이지
    request request에 저장
    session session에 저장
    application 해당 어플리케이션
  • 보통 장바구니/로그인유지는 세션에서 사용한다. scope에 저장하려면 아래와 같이 작성한다.

<jsp:useBean id="tb" class="test.TestBean" scope="session"></jsp:useBean>
  • 생성할 때도 위의 코드를 사용하고, 해당 객체를 세션에서 가져 올때도 scope="session"을 사용한다.
  • 해당 세션을 삭제할 때는 다음과 같다. 참고로 세션(서버)와 세션스토리지(클라이언트)는 다르다.
session.removeAttribute("mid");    
profile
JAVA web developer

0개의 댓글