14. 자바빈
              
          2023. 3. 27. 17:52ㆍLang/JSP
728x90
    
    
  반응형
    
    
    
  - 프로그램을 단위별로 작성, 블럭처럼 필요시 필요한 모듈을 끼워 사용
- 로직을 담고있는 자바 클래스, 자바로 작성되어진 컴포넌트
- 목적- jsp페이지가 화면 표출 부분과 로직들이 혼재, 복잡한 구성- 복잡한 구성을 피하기 위해
 
- jsp페이지의 로직부분을 분리해 코드 재사용- 프로그램 효율 증가
 
 
- jsp페이지가 화면 표출 부분과 로직들이 혼재, 복잡한 구성
- MVC- model : 자바빈- 프로그램 로직 보유, db 연동 작업 처리
 
- view : jsp페이지
- controler : 서블릿
 
- model : 자바빈
   
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="*"/>   - 모든 프로퍼티 값이 세팅
- 폼으로부터 넘어오는 파라미터 이름이 프로퍼티 이름과 동일해야 한다
 
 
- <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으로 변경 후 비교
728x90
    
    
  반응형