출처사이트 : https://maribel.tistory.com/m/40
1. response 객체
- response.sendRedirect("이동할_페이지명");
- ex) response.sendRedirect("http://www.daum.net"); //외부 사이트로 이동
- ex) response.sendRedirect("./req.jsp"); //내부 파일의 상대경로를 지정하여 이동
- URL창이 이동할 페이지로 전환되면서 이동
- 데이터를 서로 공유할 수 없음
2. forward 액션태그
- <jsp:forward page="이동할_페이지명" />
- 외부 사이트로 이동 안됨
- 자기 프로젝트의 다른 페이지로만 이동 가능
- URL창이 이동할 페이지로 전환되지 않음
- 데이터를 공유하면서 페이지 이동 가능
3. 자바스크립트
- location.href="이동할_페이지명"
- location.replace("http://~이동할_페이지명")
- history.back() --> 이전 페이지로 이동
- history.go(-1) --> 이전 페이지로 이동
- history.forward() --> 다음 페이지로 이동
1. 포워드(forward)
- request스코프에 담긴값이 유효하다.(request,response가 유지된다.)
- 이동된 url이 화면에 안보인다.(사용자는 이동했는지 알수없음)
- 포워드하는 방법
1) pageContext.forward("이동할페이지");
2) ;
3) RequestDispatcher rd = request.getRequestDispatcher("이동할페이지");
rd.forward(request,response);
2. 리다이렉트(redirect)
- 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동됨.
request, response가 유지되지 않는다.(새로 만들어짐.)
- 이동된 url이 화면에 보인다.
- 리다이렉트 하는 방법
response.sendRedirect("이동할페이지");
EX>
아이디, 비밀번호를 받아서 submit.
login.jsp --> loginOk.jsp --> result.jsp
login.jsp
아이디
비밀번호
loginOk.jsp
; forward , redirect 하나씩 해보면
<%
String id=request.getParameter("id");
String pwd=request.getParameter("pwd");
// request스코프에 값 저장하기.
request.setAttribute("id", id);
request.setAttribute("pwd", pwd);
//포워드방식으로 페이지 이동하기.
//pageContext.forward("result.jsp");
//redirect방식
response.sendRedirect("result.jsp");
%>
result.jsp
<%
String id=(String)request.getAttribute("id");
String pwd=(String)request.getAttribute("pwd");
id=request.getParameter("id");
%>
request 스코프에 담긴 데이터
id:<%=id %>
pw:<%=pwd %>
; forward 방식으로 전달하면 값은 전달되고, 주소는 result.jsp로 변경되지 않는다.
; redirect방식으로 넘기면 값은 null이다. loginOk.jsp에서 값을 넘기지 않아서.. 주소는 바뀌어 있다.
; redirect방식은 request유지하지 않기 때문에 다른 페이지로 이동하면 없어진다.
; response.sendRedirect("result.jsp?id=1"); 이렇게 찍어보면 1이 넘어간다.
<jsp:forward> 태그 사용하기.
...
<%
String id = request.getParameter("id");
String pwd= request.getParameter("pwd");
request.setAttribute("id", id);
request.setAttribute("pwd", pwd);
//forward
//pageContext.forward("result.jsp");
// redirect
//response.sendRedirect("result.jsp?id="+id);
%>
<jsp:forward page="result.jsp"></jsp:forward>
..
<RequestDispatcher사용하기>
...
<%
String id = request.getParameter("id");
String pwd= request.getParameter("pwd");
request.setAttribute("id", id);
request.setAttribute("pwd", pwd);
//forward
//pageContext.forward("result.jsp");
// redirect
//response.sendRedirect("result.jsp?id="+id);
RequestDispatcher rd = request.getRequestDispatcher("result.jsp");
rd.forward(request, response);
%>
...
EX2>
로그인 후 ID/PWD가 맞지않으면 오류메시지 찍어주고, 맞으면 다른 페이지로 이동하기.
; post방식으로 전달
; id/pwd가 맞으면 session에 저장. 페이지 이동 후 아이디를 화면에 보여줌.
; 맞지 않으면 request에 담아서 login.jsp로 dispatch함. (forward)
login.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<style type="text/css">
#error{
color:red;
font-size:10pt;
}
</style>
<%
//request스코프에 담긴 오류메시지 얻어오기.
String errMsg = (String)request.getAttribute("errMsg");
if(errMsg==null){
errMsg="";
}
%>
</head>
<body>
<form method="post" action="loginOk.jsp">
아이디<input type="text" name="id"/><br/>
비밀번호<input type="password" name="pwd"/><br/>
<div id="error"><%=errMsg %></div>
<input type="submit" value="로그인"/>
</form>
</body>
</html>
loginOk.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String id=request.getParameter("id");
String pwd=request.getParameter("pwd");
if(id.equals("song") && pwd.equals("1234")){
session.setAttribute("id", id);
response.sendRedirect("../main.jsp");
}else{
//request에 오류메시지 담기.
request.setAttribute("errMsg", "아이디 또는 비밀번호가 일치하지 않아요.");
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
}
%>
</body>
</html>
맞지않으면
맞으면
'웹개발 > jsp' 카테고리의 다른 글
스프링 세션 동작 원리 (0) | 2022.02.17 |
---|---|
세션 생성 및 제거. (0) | 2022.02.17 |
JSP 페이지 이동 4가지 방법 및 특성 (0) | 2022.02.17 |
파일 업로드/다운로드구현 multipart (0) | 2022.02.17 |
jsp태그 및 <% 사용해서 개발하기 (0) | 2022.02.17 |
댓글