17 Mar 2020
Web 02
forward
- 현재 url에서 결과물만 가지고 와서 보여주기 때문에 url은 변화가 없다.
- 결과를 가져와서 보여주기 때문에 영역을 공유한다.
- HTML의 페이지 이동 방식
- JSP와 별개로 영역 공유의 개념과 관련이 없다. (form, a)
- a 태그(HTML의 이동 방식) - 영역을 공유하지 않는다.
- JSP의 페이지 이동 방식
- JSP 내장 영역에 대한 개념이 존재 (forward, sendRedirect)
JSP 태그(액션 태그)
- 파라미터 전달(Parameter)
- 대상에게 메소드의 인자처럼 단순히 데이터 전달
- HTML 문서 상에 존재하는 데이터 -> *클라이언트
서버단의 데이터가 아닌 클라이언트단의 데이터 활용(param. , getParameter)
- 영역을 공유(Attribute)
- 내 자신 영역에 존재하는 데이터를 같이 사용
- 서버단에서 공유되는 영역 -> *서버
- indexTest.jsp -> forwardSet.jsp
- 파라미터 전달, 영역을 공유하는 것은 아니다.
- forwardSet.jsp -> user.jsp
- 파라미터 전달, 영역을 공유하는 것은 아니다.
-
: forward, include에서 활용, 파라미터 전달
[전달된 파라미터를 받는 방법]
- param.id -> EL의 받는 방법
- request.getParameter("id") -> JSP의 받는 방법
ex) forwardSet.jsp?id=yes
- 파라미터(전달 인자) -> id
- 값(전달된 데이터) -> yes
<!-- 파라미터를 전달하지 않은 경우 -->
<jsp:forward page="admin.jsp"/>
<!-- 파라미터를 전달하는 경우 -->
<jsp:forward page="user.jsp">
<jsp:param name="uid" value="${ param.id }" />
</jsp:forward> --%>
<!-- 전달되는 파라미터로 하는 것은 html. 여태까지 실행되는 것은 html. jsp가 아님. -->
redirect
- 결과물을 가져와서 보여주는 것이 아니라 이동을 한다.
- 현재 url에서 redirect를 만나면 해당 url로 이동을 하기 때문에 url이 달라진다.
- html의 a태그 처럼 이동만 하기 때문에 영역을 공유하지 않는다.
- sendRedirect 방식으로 이동 시 스크립틀릿 활용
<% response.sendRedirect("admin.jsp"); %>
<!-- 유저에게 응답으로 admin.jsp로 이동시키겠다. -->
- 영역을 공유하지 않기 때문에 sendRedirect는 파라미터를 포함하여 전달하는 방법이 없다.
따라서 URL에 파라미터 정보를 포함하는 GET 방식을 흉내내야한다.
GET URL 표현 : www.google.com/search?q=java
// 구글 주소를 분석 -> www.google.com/search 페이지로 이동하되, GET 방식 파라미터인 q를 포함해라.
// URL의 ? 기호 이후는 GET 전송의 파라미터 형식임을 활용
String path = "user.jsp?id=" + request.getParameter("id");
response.sendRedirect(path); // user.jsp?id=yes
cookie
HTTP의 특징
- Connection-less
- 클라이언트의 request를 서버에 보내고 서버는 클라이언트에게 response를 보내면 연결이 끊기는 특징
- request : 요청 정보를 저장하는 객체
- State-less
- 접속을 끊는 순간 서버와의 통신 유지가 사라지는 특징
쿠키(Cookie)
- HTTP의 일종으로 클라이언트에 데이터를 저장하는 파일
- Login, HOST 정보 등을 저장
- 단, 서버가 아닌 클라이언트에 저장되는 방식이므로 보안에 취약
쿠키로 저장하는 정보는 중요 정보가 아니어야 하며, 어쩔 수 없는 상황이라면 데이터를 암호화하여 저장
- 단, 서버가 아닌 클라이언트에 저장되는 방식이므로 보안에 취약
Percent-Encoding (퍼센트 인코딩, URL Encoding)
- URL에 문자를 표현하기 위한 문자 인코딩 방법
- 16진수 단위로 표현
ex) %ED%8F%AC%EC%8A%A4
Til next time,
Jeong-Yoon
at 00:00
