
포워드
: 서블릿이 다른 서블릿이나 JSP에 데이터를 전달하는 방법
- 리다이렉트 / 클라이언트가 서버에 2번 요청, 공유 불가
- redirect : 서버에서 동작
- refresh 서버 or 클라이언트(html)에서 동작
- 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>
저장소
- request → 하나의 요청 (attribute가 공유 안됨)
- getattribute
- setattribute
- session → 같은 브라우저 (attribute가 공유 됨) : 로그인 기능할때 사요
- getattribute
- setattribute
pageContext < request < session < application(Servlet Context)
복습내용 🙃
- redirect, forward 차이
- request, session 차이
- 저장소에 값을 넣고 빼는 방법
- 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쿠키 종류
- Persistence 쿠키 : 로그인 유무 or 팝업창 제한
- 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을 모든 서블릿에 적용
'JSP & Servlet' 카테고리의 다른 글
[ Servlet ] 나만 보는 간단정리 part2 (0) | 2024.07.31 |
---|---|
[ Servlet ] 나만 보려고 올리는 간단정리 part1 (0) | 2024.07.31 |
[ JSP ] 내가 보려고 올리는 간단정리 (0) | 2024.07.31 |

포워드
: 서블릿이 다른 서블릿이나 JSP에 데이터를 전달하는 방법
- 리다이렉트 / 클라이언트가 서버에 2번 요청, 공유 불가
- redirect : 서버에서 동작
- refresh 서버 or 클라이언트(html)에서 동작
- 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>
저장소
- request → 하나의 요청 (attribute가 공유 안됨)
- getattribute
- setattribute
- session → 같은 브라우저 (attribute가 공유 됨) : 로그인 기능할때 사요
- getattribute
- setattribute
pageContext < request < session < application(Servlet Context)
복습내용 🙃
- redirect, forward 차이
- request, session 차이
- 저장소에 값을 넣고 빼는 방법
- 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쿠키 종류
- Persistence 쿠키 : 로그인 유무 or 팝업창 제한
- 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을 모든 서블릿에 적용
'JSP & Servlet' 카테고리의 다른 글
[ Servlet ] 나만 보는 간단정리 part2 (0) | 2024.07.31 |
---|---|
[ Servlet ] 나만 보려고 올리는 간단정리 part1 (0) | 2024.07.31 |
[ JSP ] 내가 보려고 올리는 간단정리 (0) | 2024.07.31 |