개발자 미니민의 개발스터디

[JSP] forward 액션태그 (포워딩) / element, text 액션 태그

by mini_min

JSP

[JSP] forward 액션태그 (포워딩) / element, text 액션 태그

✔️ forward 액션 태그 

요청을 다른 리소스(jsp, html, servlet ) 으로 전달하는데 사용되는 액션 태그

: 클라이언트로부터 요청받은 서블릿(JSP) 는 다른 서버의 자원(서블릿, JSP)으로 요청 정보를 전달 하여 처리하는데, 포워딩은 서블릿 컨테이너에서 이루어지므로 클라이언트는 알 수 없다.

: 브라우저 주소 줄도 바뀌지 않는다.

: 포워드 요청을 하는 페이지는 포워딩 요청을 받는 페이지(자원)에 request, response 객체를 그대로 전달한다.

: 요청하는 페이지가 포워딩한 페이지에 새로운 정보를 전달하기 위해서는 request.setAttributes(이름,값) 을 이용한다.

 

❌ 포워딩 하는 안되는 경우 ❌

DB 작업에 로그인 후, 로그아웃 후, DB의 INSERT, UPDATE, DELETE 후 포워딩 하면 XXXXXXX 객체가 살아있어서 또 반영된다.

 

🔒 포워딩 예제

: 이름, 나이값을 받는 폼

<form action="ex03_ok.jsp" method="post">
	<p> 이름 : <input type="text" name="name"></p>
	<p> 나이 : <input type="text" name="age"></p>
	<p>
		<button>확인</button>
	</p>
</form>

 

- ex03_ok.jsp

: 해당 jsp 파일에서 포워딩을 요청한다. 포워딩을 요청하면, ex03_ok.jsp 페이지는 클라이언트 화면에 보이지 않는다.

ex03_result.jsp 으로 포워딩해줬다.

<%@ page contentType="text/html; charset=UTF-8"%>
<%@page trimDirectiveWhitespaces="true" %>
<%
	request.setCharacterEncoding("utf-8");
	
	int age = Integer.parseInt(request.getParameter("age"));
	String s = age >= 19 ? "성인" : "미성년자";
	
	//포워딩하는 페이지에 새로운 정보를 전달 할 때는 setAttribute 이용!
	request.setAttribute("result", s);
		//request.setAttribute(String, Object);
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
</head>
<body>

<h3> 포워딩하면 이 페이지는 클라이언트 화면에 보이지 않는다. </h3>

<!--  jsp 액션 태그를 이용해 포워딩 -->
<jsp:forward page="ex03_result.jsp"/>

</body>
</html>

 

👩‍💻 포워딩하는 페이지에 새 정보 전달하기

포워딩하는 페이지에 새로운 정보를 전달 할 때는 setAttribute 을 이용한다!!!

나이를 받아서, 성인인지 미성년자인지 결과를 알려주는 's' 라는 String 객체를 setAttribute 를 통해 새로운 정보로 넘겨줌

request.setAttribute("result", s);

 

- ex03_result.jsp (포워딩된 페이지)

: 포워딩된 페이지는 포워딩 페이지에서 request, response 객체가 전달되므로 클라이언트가 보낸 파라미터 등의 정보를 받을 수 있다.

👩‍💻 위에 포워딩한 페이지에서 setAttribute 로 설정한 속성 값을 받을 때는 getAttribute

👩‍💻 setAttribute 으로 설정한 새로운 값은 포워딩된 페이지에서 리턴 타입: Object 이다.

<%@ page contentType="text/html; charset=UTF-8"%>
<%@page trimDirectiveWhitespaces="true" %>
<%

	request.setCharacterEncoding("utf-8");
	
	String name = request.getParameter("name");
	int age = Integer.parseInt(request.getParameter("age"));
	
	//포워딩한 페이지에서 설정한 속성 값 받기
	String s = (String)request.getAttribute("result"); // 리턴 타입: Object 인데 String 으로 캐스팅함

%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
</head>
<body>

<h3> 포워딩 페이지 결과 </h3>

<p> 이름 : <%=name %> </p>
<p> 나이 : <%=age %>, <%=s %> </p>


</body>
</html>

 

 

✔️ element 액션 태그 , text 액션 태그

: element 액션 태그는 임의의 XML 태그나 HTML 태그를 생성한다.

: text 액션 태그는 JSP 페이지나 문서 템플릿에 표시할 텍스트를 표현할 액션 태그이다.

<h3> element 액션 태그 및 text 액션 태그 </h3>

<!--  jsp:element 는 XML 또는 HTML 태그를 만든다. -->
<jsp:element name="userName">
	<jsp:attribute name="gender">
		여자
	</jsp:attribute>
	<jsp:body>사임당</jsp:body>
</jsp:element>

<!-- jsp:text 는 페이지에 표시할 텍스트 -->
<p>
	<jsp:text> text 액션 태그 </jsp:text>
</p>

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기