반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Daemon()
- char[] String 형변환
- 리눅스세팅
- include지시자
- interrupted()
- first-child
- 스레드그룸
- InputDialog
- String char[] 형변환
- 동기화
- StringWriter
- ThreadGroup()
- 상관 서브 쿼리
- include액션태그
- 리눅스셋팅
- first-of-child
- StringReader
- interrupt()
- include 지시자
- sleep()메소드
- ID중복
- Linux셋팅
- 표현 언어
- 메모리스트림
- isinterrupted()
- 아이디중복
- Linux세팅
- ObjectInputStream
- 상관서브쿼리
- MemoryStream
Archives
- Today
- Total
다연이네
[days02] 리다이렉트(redirect)와 포워딩(forward)의 차이점 본문
반응형
ex07.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<!-- 리다이렉트(redirect)와 포워딩(forward)의 차이점 -->
<%
String name = "admin";
int age = 20;
String params = String.format("?name=%s&age=%d", name, age);
%>
<a href="ex07_redirect.jsp<%= params %>">리다이렉트(redirect)</a><br>
<a href="ex07_forward.jsp<%= params %>">포워딩(forward)</a><br>
</body>
</html>
ex07_redirect.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//ex07_redirect.jsp?name=admin&age=20 받아서
String name = request.getParameter("name");
String age = request.getParameter("age");
String params = String.format("?name=%s&age=%s", name, age);
String location = "ex07_finish.jsp"+params;
response.sendRedirect(location);
%>
<!--
http://localhost/jspPro/days02/ex07_finish.jsp
redirect가 아니라 finish 경로가 떴고, name, age 파라미터 전달이 안됐다
왜?
ex07에서 get방식으로 요청 -> redirect로 오니까 sendRedirect해서
ex07(클라이언트)한테 다시 요청하라고 시킴 (브라우저에서 다시 finish요청한 것)
-- 서버에서 간 것이 아니라 클라이언트한테 요청하라고 시키는 것이 sendRedirect
다시 새로운 요청이 일어났기 때문에 처음 요청시 파라미터 값은 전달이 안된다.
(새로운 요청 인것)
그러면 다시 finish한테도 파라미터 값을 넘기기 위해선 어떤 작업을 ?
인위적으로 파라미터값을 받아 넘겨줘야 한다 (위의 4,5,6줄 추가해줌)
-->
ex07_finish.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<!-- ex07.jsp -> xe07_redirect.jsp -> (리다이렉트) ex07_finish.jsp -->
<%
String name = request.getParameter("name");
String age = request.getParameter("age");
%>
> ex07.jsp에서 전송된 name값 : <%=name %><br>
> ex07.jsp에서 전송된 age값 : <%=age %><br>
</body>
</html>
ex07_forward.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//RequestDispatcher == 요청배송(파견)기
String path = "ex07_finish.jsp";
//전달자 객체 생성
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request, response); //기본 객체
//위 두줄은 그냥 암기 (포워딩 시킬 때)
%>
<!-- http://localhost/jspPro/days02/ex07_forward.jsp?name=admin&age=20 -->
<!-- 마지막이 finish가 아니다. finish로 간지도 모른다 그런데 파라미터 값이 전달 됐다 (이게 차이점) -->
<!--
정리
redirect로 요청시 finish로 바로 간게 아니라 클라이언트한테 알려서 브라우저인 클라이언트에서 새로 요청한 것
== 그전의 파라미터는 전달이 안돼서 인위적으로 finish뒤에 달아줘야 함
포워드는 RequestDispatcher 전달자를 만들면 클라이언트는 모르게 서버에서 finish로 전달시킴
+request, response로 파라미터를 줬기 때문에 처음 파라미터 name, age를 받을 필요도 없다
request, response가 finish까지 전달되어졌기 때문에
둘의 차이점 꼭 알고 있어야 하고, 이유 알아야 한다 개념,,+
-->
반응형
'JSP' 카테고리의 다른 글
[days03] DB연결 (알집부터) (DBConn, DeptDTO, EmpDTO) (0) | 2020.12.24 |
---|---|
[days03] 리다이렉트 + 포워딩 + 서블릿 복습 / 히든(hidden) (0) | 2020.12.24 |
[days02] 리다이렉트(redirect) (0) | 2020.12.23 |
[days02] 요청 파라미터를 처리하는 메소드 / request 요청 헤더 정보 (0) | 2020.12.23 |
[days02] 1) 표현언어 / 2)JSP 페이지 구성요소 / 3) request (0) | 2020.12.23 |
Comments