액션 태그
자바 코드는 디자이너들에게 너무 복잡하고 어려우므로 디자이너 입장에서 더 쉽고 편리하게 작업할 수 있는 태그 형태로 기능을 제공하게 되며 액션 태그들로 자바 코드를 대신하게 되었습니다.
액션 태그 | 형식 | 기능 |
인클루드 액션 태그 | <jsp:include> | 이미 있는 JSP 를 현재 JSP 에 포함하는 태그 |
포워드 액션 태그 | <jsp:forward> | 서블릿에서 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그 |
유즈빈 액션 태그 | <jsp:useBean> | 객체를 생성하기 위한 new 연산자를 대신하는 태그 |
셋프로퍼티 액션 태그 | <jsp:setProperty> | setter 를 대신하는 태그 |
겟프로퍼티 액션 태그 | <jsp:getProperty> | getter 를 대신하는 태그 |
인클루드 액션 태그(Include Action Tag)
인클루드 액션 태그는 인클루드 디렉티브 태그처럼 화면을 분할해서 관리할 때 사용합니다.
메뉴 화면과 카테고리 화면 등을 분할해서 사용할 수 있겠죠?
인클루드 액션 태그 형식
<jsp:include page = "페이지.jsp" flush = "true or false">
...
</jsp:include>
page 는 포함할 JSP 페이지이고 flush 는 지정한 JSP 를 실행하기 전 출력 버퍼를 비울것인지를 설정합니다.
인클루드 액션태그와 인클루드 디렉티브 태그 비교
항목 | 인클루드 액션 태그 | 인클루드 디렉티브 태그 |
기능 | JSP 레이아웃 모듈화 | JSP 레이아웃 모듈화 |
처리 시간 | 요청 시간에 처리 | JSP 를 자바 코드로 변환 시 처리 |
데이터 처리 방법 | param 액션 태그를 이용해 동적 처리 가능 | 정적 처리만 가능 |
포함된 JSP 자바 파일 변환 여부 | 포함되는 JSP 가 각각 자바 파일로 생성 | 포함되는 JSP 가 포함하는 JSP 에 합쳐진 후 한개의 자바 파일로 생성 |
인클루드 액션 태그 예제
<!-- image_test.jsp -->
...
<%
String name = request.getParameter("name");
String fileName = request.getParameter("fileName");
%>
...
이미지 이름은 <%=name %> 입니다. <br>
<img src = "./image/<%=fileName %>" />
...
<!-- include1.jsp -->
...
<jsp:include page = "image_test.jsp" flush = "true" >
<jsp:param name = "name" value = "이미지1" />
<jsp:param name = "fileName" value = "image1.png" />
</jsp:include>
...
<!-- include2.jsp -->
...
<jsp:include page = "image_test.jsp" flush = "true" >
<jsp:param name = "name" value = "이미지2" />
<jsp:param name = "fileName" value = "image2.png" />
</jsp:include>
...
include1.jsp 와 include2.jsp 에 value 값을 다른 것으로 지정함으로써 다른 결과를 출력할 수 있습니다.
이처럼 인클루드 액션 태그는 포함되는 자식 JSP 에 데이터를 동적으로 전달하여 원하는 결과를 출력할 수 있습니다.
포워드 액션 태그(Forward Action Tag)
RequestDispatcher... 과 같은 자바 코드를 이용하지 않고 포워드 액션 태그를 이용해서 포워딩할 수 있습니다.
포워드 액션 태그 형식
<jsp:forward page = "페이지.jsp or servlet">
...
</jsp:forward>
포워드 액션 태그 예제
// java
<%
/*
RequestDispatcher dispatch = request.getRequestDispatcher("login.jsp");
dispatch.forward(request, response);
*/
%>
// forward action tag
<jsp:forward page="login.jsp" />
// forward action tag with param
<jsp:forward page="login.jsp" />
<jsp:param name = "id" value = "<%=id %>" />
<jsp:param name = "pwd" value = "<%=pwd %>" />
</jsp:forward>
useBean 액션 태그
자바 빈은 웹 프로그램, 즉 Java EE 프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는데 사용합니다.
자바 빈을 만드는 방법은 VO(Value Onject) 클래스를 만드는 방법과 같으며 특징은 다음과 같습니다.
- 속성의 접근 제한자는 private 입니다.
- 각 속성은 getter/setter 를 가집니다.
- getter/setter 이름의 첫 글자는 반드시 소문자입니다.
- 인자 없는 생성자를 반드시 가지며 다른 생성자도 추가할 수 있습니다.
이렇게 자바 빈을 사용할 경우 화면이 복잡해진다는 단점이 있습니다.
이러한 단점을 보완하기 위해 나온 것이 유즈빈 액션 태그입니다.
유즈빈 액션 태그 형식
<jsp:useBean id = "빈(bean) 이름" class = "패키지 이름을 포함한 자바 빈 클래스" scope = "접근범위" />
<jsp:useBean id = "m" class = "member.memberVO" scope = "page" />
여기서 id 는 JSP 페이지에서 자바 빈 객체에 접근할 때 사용할 이름을 의미합니다.
class 는 패키지 이름을 포함한 자바 빈 이름을, scope 는 자바 빈에 대한 접근 범위를 지정하는 역할을 합니다.
(scope 는 page, request, session, application 을 지정할 수 있으면 default 는 page 입니다)
setProperty / getProperty 액션 태그
앞에서 본 getter/setter 입니다.
태그 | 정의 | 형식 |
setProperty | useBean 의 속성에 값을 설정하는 태그 | <jsp:setproperty name = "자바 빈 이름" property = "속성 이름 " value = "값" /> name : <jsp:useBean> 액션 태그의 id 속성에 지정한 이름 property : 값을 설정할 속성 이름 value : 속성에 설정할 속성 값 |
getProperty | useBean 의 속성 값을 얻는 태그 | <jsp:getProperty name = "자바 빈 이름" property = "속성 이름" /> name : <jsp:useBean> 액션 태그의 id 속성에 지정한 이름 property : 값을 얻을 속성 이름 |
HTML 에서 memberVO 의 속성과 name 을 동일한 이름으로 설정하게 되면 useBean 의 속성에서 자동으로 값을 설정합니다.
<jsp:useBean id = "m" class = "member.memberVO" scope = "page" />
<jsp:setProperty name = "m" property = "id" param = "id" />
<jsp:setProperty name = "m" property = "pwd" param = "pwd" />
<jsp:setProperty name = "m" property = "name" param = "name" />
<jsp:setProperty name = "m" property = "email" param = "email" />
// 매개변수 이름이 일치할 때
<jsp:setProperty name = "m" property = "id" />
<jsp:setProperty name = "m" property = "pwd" />
<jsp:setProperty name = "m" property = "name" />
<jsp:setProperty name = "m" property = "email" />
property 속성에 * 를 지정하면 JSP 페이지에서 자동으로 매개변수 이름과 속성 이름을 비교한 후 같은 이름의 속성 이름에 전달된 값을 알아서 설정해 줍니다.
// set
<jsp:useBean id = "m" class = "member.memberVO" scope = "page" />
<jsp:setProperty name = "m" property = "*" />
// <jsp:getProperty> 로 값을 가져와서 알맞은 곳에 사용합니다.
// get
아이디 : <jsp:getProperty name = "m" property = "id" />
비밀번호 : <jsp:getProperty name = "m" property = "pwd" />
이름 : <jsp:getProperty name = "m" property = "name" />
이메일 : <jsp:getProperty name = "m" property = "email" />
여기까지 임미다.
'개발 > Java' 카테고리의 다른 글
메이븐(Maven) 설치하기 (0) | 2022.11.09 |
---|---|
[JAVA - WEB] JSP 표준 태그 라이브러리(JSTL) - fn (0) | 2022.11.07 |
[JAVA - WEB] JSP 표준 태그 라이브러리(JSTL) - fmt (0) | 2022.11.07 |
[JAVA - WEB] JSP 표준 태그 라이브러리(JSTL) - Core (0) | 2022.11.06 |
[JAVA - WEB] JSP 표현 언어(Expression Language) (0) | 2022.11.06 |
[JAVA - WEB] JSP 내장 객체(내장 요소) (0) | 2022.11.06 |
[JAVA - WEB] JSP 스크립트 요소 (0) | 2022.11.06 |
[JAVA - WEB] JSP 정의와 구성 요소 (0) | 2022.11.06 |
[JAVA - WEB] 서블릿 리스너(Listener) (0) | 2022.11.05 |
[JAVA - WEB] 서블릿 필터(Filter) (0) | 2022.11.05 |