본문 바로가기

JAVA/JSP

[JSP] JSP 액션태그-useBean (JAVABEAN)

728x90

액션태그란?

기존 html에는 없는 태그이다.

자바 문법을 jsp페이지에 섞어쓰다보면 혼란이 있어 자바 문법을 대신하여 제공하는 태그이다.

 

** jsp 액션태그의 종류

<jsp:useBean>

<jsp:include>

<jsp:forward>

<jsp:param>

 

 

JavaBean의 뜻과 사용하는 이유

JavaBean이란 자바코드로 이루어진 데이터 입출력, 조회 등을 담당하는 컴포넌트이다. (데이터 표현을 목적으로 함)

MVC패턴에서 M(Model)에 해당되는 것.

JSP페이지에서 디자인 요소와 데이터를 관리하는 로직요소를 분리하여 혼란을 줄이고 더 효율적으로 작업하기 위해 사용한다.

 

public class MemberDto {
	
	private String id;
	private String pw;
	private String name;
	private String address;
	private String[] hobby;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String[] getHobby() {
		return hobby;
	}
	public void setHobby(String[] hobby) {
		this.hobby = hobby;
	}
    
    	@Override
	public String toString() {
		return "MemberDto [id=" + id + ", pw=" + pw + ", name=" + name + ", address=" + address + ", hobby="
				+ Arrays.toString(hobby) + "]";
	}
	
}

 

이와 같이 값을 저장할 필드와 필드를 읽고 변경할 get, set메소드로 이루어져 있다.

 


<jsp:useBean> 액션 태그

JSP페이지에서는 <jsp:useBean>태그를 활용하여 자바빈 프로퍼티를 가져와 사용할 수 있다.

<jsp:useBean id="[빈이름]" class="[자바빈클래스이름]" scope="[범위]" />
<jsp:useBean id="dto" class="bean.MemberDto" scope="page">
</jsp:useBean>

id : JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름

 

class : 자바빈 클래스의 이름 (다른 패키지에 있을시 패키지 명도 기술

 

scope : 자바빈 객체가 저장될 영역을 지정한다.

 

영역 설명
page 현재 페이지에만 적용되며 페이지 처리가 끝나면 유효하지 않음 (기본 값)
request request 요청을 받고 처리를 완료할 때 까지 생존
session 사이트 전체의 범위를 갖지만 지속시간이 있음
application 사이트 전체 범위를 갖고 계속 유지됨

 

jsp 자바빈 코드를 자바 코드로 적는다면

<% bean.MemberDto dto = New bean.MemberDto(); %>

가 되겠다.


<jsp:setProperty> 액션 태그

 useBean 액션태그로 생성한 자바빈 객체의 속성값을 설정하는 태그 (자바 코드에서 setter메소드를 대신하여 사용함)

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

 

name : 프로퍼티의 값을 변경할 자바빈 객체의 이름 (useBean태그의 id속성에서 지정한 값을 사용하면 됨)

property : 값을 지정할 프로퍼티의 이름

value : 프로퍼티의 값 (표현식 사용 가능)

value 대신하여 param 속성을 사용할 수 있다.

param : 파라미터의 값을 프로퍼티의 값으로 지정할 때 사용 (value는 값을 직접 입력하는 것이고 param은 넘어오는 parameter의 이름을 적는 것 (form에서 사용한 name 속성의 값을 적음)

(value와 param을 같이 사용할 수 없다.)

 

 

만약 form의 파라미터 네임을 자바빈 변수와 동일하게 한다면

public class MemberDto {
	
	private String id;
	private String pw;
	private String name;
	private String address;
	private String[] hobby;
    
    /* ... 중략 ... */
    }
    
//form.html

<form name="frm" action="action6.jsp" method="get">
		- 아이디 : <input type="text" id="id" name="id" /><br>
		- 패쓰워드 : <input type="password" id="pw" name="pw" /><br>
		- 이름 : <input type="text" id="name" name="name" /><br>
		- 주소 : <input type="text" id="address" name="address" /><br>
</form>

<jsp:setProperty name="dto" property="id" />

<jsp:setProperty name="dto" property="pw" />

<jsp:setProperty name="dto" property="name" />

<jsp:setProperty name="dto" property="address" />

 

원래라면 이런 형식으로 적어줘야 할 코드를

 

 

<jsp:setProperty name="dto" property="*" />

 

이렇게 애스터리스크를 이용하여 한줄로 적을 수 있다.

 

자바 코드로 적는다면

<% dto.setId(request.getParameter("id"); %>

 


<jsp:getProperty> 액션 태그

 

객체의 property를 get하기 위해 사용한다.

(자바 코드에서 getter메소드를 대신하여 사용함)

 

<jsp:getProperty name="자바빈이름" property="프로퍼티이름" />
	 id : <jsp:getProperty property="id" name="dto" /><br>
	 pw : <jsp:getProperty property="pw" name="dto" /><br>
	 name : <jsp:getProperty property="name" name="dto" /><br>
	 addrez`ss : <jsp:getProperty property="address" name="dto" /><br>
	 hobby : <jsp:getProperty property="hobby" name="dto" />

 

자바 코드로 적는다면면 <%=dto.getId()%> 이런 형식이 될것이다.

 

*jsp 액션 태그에서의 데이터 타입은 자동으로 String과 int 등 타입에 따라서 알맞게 자동으로 값이 처리된다.