[JSP] forward 액션태그 (포워딩) / element, text 액션 태그
by mini_min[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>
'JSP' 카테고리의 다른 글
[JSP] 서블릿을 이용한 forward 포워딩 (0) | 2022.10.03 |
---|---|
[JSP] JSP 에러 처리 : page지시어 / errorPage 속성 (0) | 2022.10.03 |
[JSP] 액션 태그 (계산기) / java Bean / setProperty, getProperty (0) | 2022.10.03 |
[JSP] response 내장 객체 (redirect 메소드) / pageContext 내장 객체 (0) | 2022.09.29 |
[JSP] request 내장 객체 (0) | 2022.09.29 |
블로그의 정보
개발자 미니민의 개발로그
mini_min