역시 최강 포워드는 루니임

 

포워드

: 서블릿이 다른 서블릿이나 JSP에 데이터를 전달하는 방법

  • 리다이렉트 / 클라이언트가 서버에 2번 요청, 공유 불가
    1. redirect : 서버에서 동작
    2. refresh 서버 or 클라이언트(html)에서 동작
    3. location : 클라이언트 (JS) 에서 동작
  • 포워딩 / 클라이언트가 서버에 1번 요청, 공유 가능
      • 일반적인 포워딩 기능
      • 클라이언트의 웹브라우저를 거치지 않고 서버에서 포워딩이 진행됨dispatch

 

ex) Refresh Server vs client

둘 다

Server - Servlet에서

@WebServlet("/first")
public class FirstServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException{
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter out = resp.getWriter();
		resp.addHeader("Refresh","1;url=second"); //1초 뒤에 second.java로 이동
	}
}

Client - html에서

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="1;url=second"> //1초 뒤에 second.java로 이동
<title>Insert title here</title>
<script>
	location.href='second'; //얘는 바로 이동
</script>
</head>
<body>
	여기는 first html
</body>
</html>

저장소

  1. request → 하나의 요청 (attribute가 공유 안됨)
    1. getattribute
    2. setattribute
  2. session → 같은 브라우저 (attribute가 공유 됨) : 로그인 기능할때 사요
    1. getattribute
    2. setattribute

pageContext < request < session < application(Servlet Context)

 

복습내용 🙃

  1. redirect, forward 차이
  2. request, session 차이
  3. 저장소에 값을 넣고 빼는 방법
  4. context-param, init-param 차이포워드

세션 트래킹

로그인 상태처럼 웹페이지들끼리 상태나 정보를 공유하기 위해 연결해주는 기능

  • <hidden> 태그 : html hidden태그를 사용
  • URL Rewriting : GET 방식으로 URL뒤에 정보 붙이기
  • 쿠키 : 클라이언트PC에 정보 저장
    • 문자열 저장
  • 세션 : 서버에 정보 저장
    • 객체 저장

 

1. <hidden> 태그

	<!--ex-->
	<input type = "hidden" name="user_address" value="서울시 강북구"/>
	<input type = "hidden" name="user_email" value="test@gmail.com"/>
	<input type = "hidden" name="user_hp" value="010-1111-2222"/>

 

2. URL Rewriting

//ex
out.print("<a href='/pro09/second?user_id="+user_id+"&user_pw="+user_pw+
	"&user_email="+user_email+"'>두번째 서블릿으로 보내기</a>");

 

3. 쿠키

  • 클라이언트 PC에 웹 페이지들 사이의 공유 데이터 저장
  • 보안에 취약 → 개인정보와 관련 없는 ex) ‘오늘은 더 이상 보지 않기 체크’등에 사용

3.1쿠키 종류

  1. Persistence 쿠키 : 로그인 유무 or 팝업창 제한
  2. Session 쿠키(세션 아님 쿠키임) : 사이트 접속시 Session 인증 정보 유지할 때

 

 

4. 세션

  • 보안 쿠키보다 좋음
  • 서버의 메모리에 정보 저장
  • 브라우저 하나당 한개의 세션 생성

서버가 세션 객체 생성 → 세션 id를 브라우저로 전송 → 브라우저는 세션 id를 세션 쿠키에 저장 (id만 쿠키에 저장하고, 실제 데이터는 서버에 있음)

브라우저가 실행되면 세션쿠키에 저장된 세션id를 서버로 전송 → 서버는 받은 세션id를 가지고 작업

 

 

Filter

: 브라우저가 서블릿에 요청을 할때, 혹은 서블릿이 응답할때 중간에서 작업을 처리하는 기능

@WebFilter("/*")
public class EncoderFilter extends HttpFilter implements Filter {
	
	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
			req.setCharacterEncoding("utf-8");
			chain.doFilter(req, resp);
	}
}
// ' /* ' 로 모든 서블릿이 동작하게 만듬
// req.set~~utf-8을 모든 서블릿에 적용

 

hanjuCoding