액션태그란?
기존 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 등 타입에 따라서 알맞게 자동으로 값이 처리된다.
'JAVA > JSP' 카테고리의 다른 글
[JSP] 서블릿(Servlet) (0) | 2021.03.31 |
---|---|
[JSP] 액션태그 (forward, include, param) (0) | 2021.03.29 |
[JSP] 톰캣 자바 클래스 컴파일 에러 (tomcat import error) (0) | 2021.03.25 |
[JSP] JSP 인자 전송 예제 (0) | 2021.03.24 |
[JSP] 쿠키와 세션에 대해 (0) | 2021.03.24 |