프로필사진
JSP(4) - 액션태그 (include, forward)

2019. 11. 12. 16:41🔴 JSP웹개발

300x250

액션태그 :
JSP내에서 자바코드를 효율적으로 작성하게 도와주는 기본 태그 라이브러리 

  • include

<%@ include file = "경로명"%>
<jsp: include page = "경로명"%>

  • forward

<jsp: forward page = "포워딩할 페이지"%>
: 요청을 다른 JSP으로 전달하는 것, 페이지의 기능을 분리할 때 사용
(일부 로직만 처리하고 나머지는 전달, 포워딩하기)

 

include : tomcat이 (1) 처리 → (2) 처리 → 다시 (1)로 돌아옴

forward : (1) 처리 → (2) 처리

 


<actionTag_forward1.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    <!-- JSP Model 1의 개발방법 (거의 안씀) -->
    <!-- 쓰는 것: Model 2 , MVC , Spring FrameWork -->
<%
	/* 데이터 생성 */
	String name = request.getParameter("name");
	String msg = name + "님 안녕?";
	/* forward2 파일로 보내주기위해 속성으로 객체 저장 */
	request.setAttribute("msg", msg);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<style>
</style>
</head>
<body>
	<jsp:forward page="ex04_actionTag_forward2.jsp"/>
</body>
</html>

<actionTag_forward2.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<style>
</style>
</head>
<body>
	<!-- 데이터를 가공하지 않고 화면에 구현하는 기능만 -->
	<%= request.getAttribute("msg") %>
</body>
</html>

 

→ URL상에서 파라미터 전달하기

주의: URL은 → forward1.jsp으로 떠있음!!

 

사용자는 forward2.jsp의 존재여부를 모른다!
자바 빈 관련 액션 태그들 (Spring Framework에서 객체를 자바빈으로 관리함)

 

자바빈 : Model(JSP에서 사용될 java코드)과 View(JSP에서 사용될 HTML코드)의 분리를 위해 도입된 개념
JSP내에서 자바 객체를 자바빈이라고 칭함
자바빈 관련 액션 태그 이용 → Java객체를 태그형태로 생성하고 사용
(자바객체를 태그형태로 만들 것이 자바 빈이다)

 

"JSP문서 내에서 자바코드를 쓰지 않고 HTML스럽게 쓰고 싶어!"
즉, <% 어쩌구 %>를 쓰지 않겠다!!

 

자바 클래스 생성해야함 (자바객체)
Java resources → <vo>package → class생성
(이름: v o (value object) = data를 가지고 있는 객체 이다! )

<PersonVo.java>

package vo;

public class PersonVo {
	private String name;
	private int age;
	private String gender;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	
	
}

<actionTag_bean.jsp>

<%@page import ="vo.PersonVo" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!-- 자바 객체 생성 후 -->
<!-- 자바코드 -->
<%-- <%
	PersonVo vo = new PersonVo();
	vo.setName("강다은");
	vo.setAge(26);
	vo.setGender("female");
%> --%>

<!-- 자바 빈 : 태그 형식으로 작성 -->
<!-- tomcat은 나중에 PersonVo.java를 보고 pvo라는 객체를 생성함 -->
<jsp:useBean id="pvo" class="vo.PersonVo"></jsp:useBean>

<!-- set하기 -->
<jsp:setProperty property="name" value="강다은" name="pvo"/>
<jsp:setProperty property="age" value="100" name="pvo"/>
<jsp:setProperty property="gender" value="female" name="pvo"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<style>
</style>
</head>
<body>

	<!-- 자바코드 -->
<%-- 	이름: <%= vo.getName() %> --%>

	<!-- get하기 -->
	이름: <jsp:getProperty property="name" name="pvo"/>
	나이: <jsp:getProperty property="age" name="pvo"/>
	성별: <jsp:getProperty property="gender" name="pvo"/>
</body>
</html>

<jsp:setProperty> :
property = "name" ) 실제 class 멤버 변수의 이름

value = "강다은" ) setName(" ")에서 넣어준 String 값(내가 넣어줄 값)
name = "pvo" ) 참고할 java객체의 id(이름)

 

<jsp:setProperty> 안에서 지정하는 것이 아니라 → URL에서 직접 값 넣어주기

→ 직접 String으로 넣어주려면 = value
→ 파라미터로 넣어주려면 = param


**특징1. 파라미터 값으로 set하기

<!-- 파라미터 값으로 set하기 -->

//getParameter("name") → param="name"//

<jsp:setProperty property="name" param="name" name="pvo"/>
<jsp:setProperty property="age" param="age" name="pvo"/>
<jsp:setProperty property="gender" param="gender" name="pvo"/>

**특징2. property값, param값 동일할때 : 파라미터 생략해도 된다!

<!-- property값, param값 동일할때 : 파라미터 생략해도 된다! -->
<jsp:setProperty property="name" name="pvo"/>
<jsp:setProperty property="age" name="pvo"/>
<jsp:setProperty property="gender" name="pvo"/>

**특징3. (property값, param값 동일)한번에 값을 지정할 수 있다!

<!-- 한번에 값을 지정할 수 있다! -->
<jsp:setProperty property="*" name="pvo"/>

<% 어쩌구 %> = jsp:setProperty
<%= 어쩌구 %> = jsp:getProperty


참고: https://opentutorials.org/module/2817/16198

300x250