본문으로 바로가기

표준 액션

category 웹/JSP 2018. 11. 7. 20:37

이번 시간은 표준 액션에 대한 포스팅입니다.

 

표준 액션에는 두 가지가 있습니다.

 

첫 째, 표준 액션

둘 째, 커스텀 액션

 

표준 액션은 JSP페이지에서 바로 사용 가능 하고

커스텀 액션은 라이브러리를 설치해야 가능 한 형태입니다.

 

둘의 구분은 어떻게 할까요?

 

표준 액션과 커스텀 액션은 prefix 즉 접두어가 다릅니다.

 

표준 액션의 접두어는 태그 이름 앞에 jsp가 붙고

커스텀 액션의 접두어는 태그 이름 앞에 c 등등이 붙습니다.

 

1. <jsp:include>

이는 다른 웹 자원을 포함 시키고자 할 때 사용합니다.

<jsp:include page="xxx.jsp"/>

즉 jsp Page 내에서 xxx.jsp 파일의 내용을 불러드리는 거죠

 

2. <jsp:forward>

앞서 배웠듯이 다른 JSP페이지로 제어를 넘길 때 사용합니다.

<jsp:forward page="xxx.jsp"/>

 

3. 자바빈 호출 표준 액션

앞서 얘기 했던 자바빈 클래스를 통해 이를 불러서 자바빈 객체를 만들고 해당 메소드를 사용하여 데이터를 저장합니다.

이때 객체를 생성하는데 편리하게 표준 액션을 사용합니다.

<jsp:useBean id="" class=""/>

class에는 자바빈 클래스를 써줍니다.

 

원래는 자바빈 객체를 직접 생성(Product obj=new Product() => obj.set메소드 obj.get메소드) 했지만 표준액션 사용시

<jsp:setProperty name="obj" property="age" value="27"/>

처럼 사용 가능합니다. 즉 name은 객체 명 property는 자바빈의 저장할 변수 value는 해당 값입니다.

마찬가지로 불러올때도

<jsp:getProperty>표준 액션을 사용 하면 돼겠죠 ?? 이때는 value 애트리뷰트는 없습니다.

 

이해를 돕고자 간단한 예제를 보도록 하죠.

위 사진=setProperty로 자바빈에 데이터 저장 소스

 

위 사진=getProperty로 자바빈의 데이터를 불러오는 소스

 

위 사진=자바빈 클래스

 

 

서블릿에서 자바빈의 객체를 넘겨 주고 싶다면 forward를 쓰고 그 전에 setAttribute로 해당 넘겨받은 jsp페이지의 자바빈 id의 명을 써주면 됩니다.

 

지금 까지는 직접 데이터를 명시해주지만

Get방식으로 url 필드에 데이터를 입력 받는 다면 무조건 타입 변환을 해줘야 합니다.

불편하므로 자동으로 해주는

<jsp:setProperty name="" property="" value="${param.AGE}"/>

or

<jsp:setProperty name="" property="" param="AGE"/>

로 써주시면 편합니다.

그리고 자바빈의 변수가 무수히 많고 setProperty를 일일이 다 적용해주기 힘들다면

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

로 *을 통해 모든 property를 명시해주고 url 필드에 데이터는 해당 property이름으로 입력하시면 되겠습니다.

 

자바빈의 다형성 들어보셨나요 ??

클래스들이 서로 상속 관계를 맺고 있으면 서브클래스 타입의 객체를 슈퍼클래스 타입의 변수에 대입해서 사용합니다.

 

우선 슈퍼클래스(자바빈)을 소개합니다.

 

위 슈퍼클래스 자바빈

위 슈퍼클래스를 상속받아 사용하는 자바빈

위 슈퍼클래스를 상속받아 사용하는 자바빈

위 세개의 클래스를 통해

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<jsp:useBean class="mall.BookInfo" id="pinfo" scope="request"/>
<jsp:setProperty name="pinfo" property="code" value="50001"/>
<jsp:setProperty name="pinfo" property="name" value="의뢰인"/>
<jsp:setProperty name="pinfo" property="price" value="9000"/>
<jsp:setProperty name="pinfo" property="writer" value="존 그리샴"/>
<jsp:setProperty name="pinfo" property="page" value="704"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
책 정보가 저장됐습니다.<br>
-----------------------<br>
<jsp:include page="ProductInfo.jsp"/>

</body>
</html>

위에서 처럼 setProperty를 할 때 슈퍼클래스의 변수 까지 초기화 시키는 것을 볼 수 있습니다. include를 슈퍼클래스로 상속받은 jsp페이지로 할 경우 위 초기화 값이 나오게 되겠죠 ??

 

만약 슈퍼클래스가 추상클래스(abstract)면 useBean을 할 때 class가 아닌 type으로 써주셔야 한다는 것을 꼭 명심하세요

<jsp:useBean type="mall.PersonalInfo" id="pinfo" scope="request"/>

 

' > JSP' 카테고리의 다른 글

ToyProject (쇼핑몰 게시판)  (0) 2020.03.09
JSTL  (0) 2018.11.12
Tld EL함수  (0) 2018.11.05
익스프레션 언어(2)  (0) 2018.10.31
익스프레션 언어  (0) 2018.10.29