- 프로그램을 단위별로 작성, 블럭처럼 필요시 필요한 모듈을 끼워 사용
- 로직을 담고있는 자바 클래스, 자바로 작성되어진 컴포넌트
- 목적
- jsp페이지가 화면 표출 부분과 로직들이 혼재, 복잡한 구성
- jsp페이지의 로직부분을 분리해 코드 재사용
- MVC
- model : 자바빈
- view : jsp페이지
- controler : 서블릿
1. useBean
- 자바빈 객체를 생성
- <jsp:useBean id = “빈 이름” class = “자바빈 클래스 이름” scope = “범위”/>
- id : 생성될 자바빈 객체 이름 명시
- class : 객체가 생성될 자바빈 클래스명 기술
- scope : 자바빈의 유효 범위, 공유 범위 지정
- page(기본값), request, session, application
2. setProperty
- 자바빈 객체의 프로퍼티 값 (멤버변수)를 저장하기 위해 사용
- <jsp:setProperty name=”빈 이름” property=”프로퍼티 이름” value=”저장할 값”/>
- name : 자바빈 객체 이름 명시
- property : 프로퍼티 명
- value : 저장할 값
- 프로퍼티가 많을 경우
- <jsp:useBean id=”sb” class=”study.javaBean.simpleBean” scope=”page”>
- <jsp:setProperty name = “sb” property=”*”/>
- 모든 프로퍼티 값이 세팅
- 폼으로부터 넘어오는 파라미터 이름이 프로퍼티 이름과 동일해야 한다
자바빈 예
vo
package com.herbmall.test;
public class SimpleVO {
//프로퍼티 - 자바빈에서의 멤버 변수
private String msg;
private String name;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
useBeanTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="useBean_ok.jsp" method="post" >
메시지 <input type="text" name="msg" size="20" maxlength="30"><br>
이름 <input type="text" name="name"><br>
<input type="submit" name="send" value="보내기">
</form>
</body>
</html>
useBeanTest_ok.jsp
<%@page import="com.herbmall.test.SimpleVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
//기존 방식
String msg = request.getParameter("msg");
String name = request.getParameter("name");
SimpleVO vo = new SimpleVO();
vo.setMsg(msg);
vo.setName(name);
%>
<h1>파라미터</h1>
<p>msg : <%=vo.getMsg() %></p>
<p>name : <%=vo.getName() %></p>
<!-- 자바빈 -->
<jsp:useBean id="simVo" class = "com.herbmall.test.SimpleVO" scope="page"></jsp:useBean>
<jsp:setProperty property="msg" name="simVo"/>
<jsp:setProperty property="name" name="simVo"/>
<p>자바빈 msg : <jsp:getProperty property="msg" name="simVo"/>
<p>자바빈 name : <jsp:getProperty property="name" name="simVo"/>
<!-- 자바빈 일괄 입력 -->
<jsp:useBean id="simVo2" class = "com.herbmall.test.SimpleVO" scope="page"></jsp:useBean>
<jsp:setProperty property="*" name="simVo2"/>
<p>자바빈2 msg : <jsp:getProperty property="msg" name="simVo2"/>
<p>자바빈2 name : <jsp:getProperty property="name" name="simVo2"/>
</body>
</html>
영역 테스트
page 영역
test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="frm1" method="post" action="scope1.jsp">
카운트 : <input type="text" name="count"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
scope.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id = "cvo" class = "com.herbmall.test.CounterVO" scope = "page"></jsp:useBean>
<jsp:setProperty property="count" name="cvo"/>
<h1>scope1.jsp 페이지</h1>
count : <jsp:getProperty property="count" name="cvo"/>
<hr>
<a href="result1.jsp">result1.jsp</a>
</body>
</html>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="cvo" class="com.herbmall.test.CounterVO" scope="page"></jsp:useBean>
<h1>result1.jsp</h1>
count : <jsp:getProperty property="count" name="cvo"/>
<hr>
<a href="scope1.jsp">scope1.jsp로 이동</a>
</body>
</html>
- 각 scope를 page, request, session, application으로 변경 후 비교