액션태그는 안보고(액션태그는 나중에 안 씀)
forward와 Redirect를 볼 것
forward 현재의 페이지에서 다른 페이지로 넘어갈 때 사용.
redirect와 비슷해 보이지만 다름!
1.forward : 받은 값을 전달한다.
2.sendRedirect : 전달하는게 아니라 새로운 객체를 생성한다
폼태그-2페이지-3페이지
forward를사용하면 폼태그 데이터를 3페이지에서 사용이 가능
폼태그에서 받은 값(Request값)을 2페이지에서 사용. 2페이지는 처리할 페이지.
redirect하면 3페이지에 갈 때 데이터가 다 날라감.
forward를 쓰면 2페이지에서 데이터를 들고 나가 3페이지에서 사용 가능
forward 사용하지 않고 보내기
send_ex01
<%@ 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>
</head>
<body>
<form action="send_ex02.jsp" method="post">
아이디:<input type="text" name="id"><br>
비밀번호:<input type="password"" name="pw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
send_ex02
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
response.setCharacterEncoding("utf-8");
response.sendRedirect("send_ex03.jsp");
%>
send_ex03
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//request객체의 생명주기는->다음페이지까지만
String id = request.getParameter("id");
String pw = request.getParameter("pw");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
ID:<%=id %><br>
PW:<%=pw %><br>
</body>
</html>
forward를 사용하지 않으면 데이터가 ex3까지 넘어가지 않는다. request객체의 사용주기는 다음페이지까지만이기 때문
===========================================================================================
forward 사용
forward_ex01
<%@ 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>
</head>
<body>
<form action="forward_ex02.jsp" method="post">
아이디:<input type="text" name="id"><br>
비밀번호:<input type="password"" name="pw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
forward_ex02
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
response.setCharacterEncoding("utf-8");
//포워드 이동
//RequestDispatcher dp = request.getRequestDispatcher("forward_ex03.jsp");
//dp.forward(request, response);
//3번 페이지에서 사용할 필요한 데이터를 담는 방법 request에 값 저장
request.setAttribute("data", "홍길동");
request.getRequestDispatcher("forward_ex03.jsp").forward(request, response);
%>
사용한 메서드는 request.getRequestDispatcher("forward_ex03.jsp").forward(request,response);
response.sendRedirect 대신 request.getRequestDispatcher로 이동,
.forward(request, response)로 값 보내기
request.setAttribute(" ", );는 한번만 사용 가능. ex3페이지에서만 사용할 목적.
forward_ex03
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//
String data = (String)request.getAttribute("data");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
ID:<%=id %><br>
PW:<%=pw %><br>
2번에서 담긴값:<%=data %>
</body>
</html>
id와 pw는 forward로 보냈기에 getParameter로 받을 수 있다.
data는 setAttribute로 생성했으므로 getAttribute로 받을 수 있다.
url을 보면
3페이지 url이 ex02로 되어 있다.
2번페이지를 실행시켜서 데이터를 그대로 가져오는 것. 새로고침을 해도 2번페이지에서 데이터를 가져온다.
'JSP' 카테고리의 다른 글
221201 session실습 redirection에 메시지 추가 (0) | 2022.12.01 |
---|---|
221201 forward 실습 (0) | 2022.12.01 |
221201 jsp error 예외 페이지 (0) | 2022.12.01 |
221201 jsp 경로 (1) | 2022.12.01 |
221201 application (1) | 2022.12.01 |