Action Tag - 자바빈 클래스 useBeand예시

조수경·2022년 1월 6일
0

JSP

목록 보기
12/45

자바빈 액션태그

JSP 페이지의 주용 기능 중 하나는 데이터를 보여주는 기능이다. 흔하게 볼 수 있는 게시판을 예로 들면 글 목록 보기, 글쓰기, 글 읽기 등의 기능이 이에 해당한다.

그런데 이런 데이터를 보여주는 기능과 단순하게 화면을 출력하는 부분이 하나의 JSP에 뒤섞여 있으면 문제가 생긴다. 기능을 확장하거나 코드를 재사용하기가 상당히 어려워진다. 그렇기에 JSP에서는 데이터를 자바빈(JavaBean)이라는 클래스에 담아서 값을 보여준다.

1. <jsp:useBean>

<jsp:useBean id="빈이름" class="자바빈 클래스 이름" scope="범위" />

  • id: JSP 페이지에서 자바빈 객체에 접근 할 때 사용하는 이름
  • class : 패키지 이름을 포함한 자바빈 클래스의 완전한 이름을 입력
  • scope : 자바빈 객체가 저장될 영역을 지정. page, request, session, application 중 하나를 값으로 갖는다. 기본값은 page

2. <jsp:getProperty> : 자바빈즈의 멤버 변수인 프로퍼티의 값을 저장

<jsp:setProperty name="자바빈" property="이름" value="값" />

  • name : 프로퍼티 값을 변경할 자바빈 객체 이름 <jsp:useBean> 액션 태그의 id속성에서 지정한 값을 사용
  • property : 값을 지정할 프로퍼티의 이름
  • value : 프로퍼티 값. 표현식 사용 가능

3.<jsp:setProperty> : 자바빈즈의 값을 가져와서 화면에 출력함

<jsp:setProperty name="자바빈" property="이름" value="값" />

  • name : 프로퍼티 값을 변경할 자바빈 객체 이름 <jsp:useBean> 액션 태그의 id속성에서 지정한 값을 사용
  • property : 값을 지정할 프로퍼티의 이름
  • value : 프로퍼티 값. 표현식 사용 가능

useBean03.jsp

<%@page import="ch04.com.dao.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>

<title>Action Tag</title>
</head>
<body>

<!-- private int id = 20181004;
     private String name = "개똥이";
 -->
<%-- <%
Person person = new Person();//밑에 있는 액션 태그와 같은것
%> --%>
   <jsp:useBean id="person" class="ch04.com.dao.Person" scope="request"/>
   <!-- 액션태그 : request로 받지 않고 생략하면 기본이 page임(공유불가)-->
   <p>아이디 : <%=person.getId() %>
   <p>이름 : <%=person.getName() %>
</body>
</html>

Person.java

package ch04.com.dao;

import java.io.Serializable;

//자바빈 클래스
public class Person implements Serializable {
  //Serializable를 받아서 Person 클래스를 구현한다.
	
	//1.필드(멤버변수)
	private int id = 20181004;
	private String name = "개똥이";
	
	//2.기본생성자(생략가능)
	public Person() {
		
	}
	
	//3.getter/setter메소드
	
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
}

03을실행하면 person.java에 필드에있는 변수에 값을 받아와 출력함

useBean04.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>

<title>Action Tag</title>
</head>
<body>
   <jsp:useBean id="person" class="ch04.com.dao.Person" scope="request"/>
   <!-- request니까 한번의 요청 안에서 공유가됨 -->
   <!-- 20181004, 개똥이 -->
   <p>아이디: <%=person.getId() %></p>
   <p>이름: <%=person.getName() %></p>
  <%
    person.setId(20182005); //아이디에 새로운 값을 넣어줌
    person.setName("손영흔"); //name필드에 새로운 값을 넣어줌
  %>
  <jsp:include page="useBean03.jsp" />  
</body>
</html>

o4를 실행하면 03에서 가져와서 파라미터로 받아온 아이디와 이름이 먼저 출력되고
04로 다시 돌아와서 20182005와 손영흔님이 출력된다

profile
신입 개발자 입니다!!!

0개의 댓글