요르딩딩
Servlet&JSP 프로그래밍 (26강 ~ 35강) 본문
728x90
반응형
[26. Application 객체와 그것을 사용한 상태 값 저장]
# 웹서버 -> 서블릿 context
# 서블릿 = 문맥
# form태그에 endpoint가 동작한다.
# 서블릿은 호출하고 사용되면, 다시 메모리로 돌아간다.
# 1개의 화면에서 1개의 입력창에 숫자들을 반복적으로 입력하여 계산을 하는 경우,
매번 입력된 수를 기억하고 있어야한다. 이럴때 서블릿을 사용한다.
ServletContext application = request.getServletContext();
application.setAttribute("key", value); 를 통해 저장소에 값을 저장하여 유지할 수 있다.
application.getAttribute("key");를 통해 저장소의 값을 불러온다.
ServletContext application = request.getServletContext(); ... int x = (Integer)application.getAttribute("value"); // 중요!! 앞서저장된 저장소를 활용하여 값을 불러온다. int y = v; String operator = (String)applicatoin.getAttribute("op"); ... application.setAttribute("value", v); // 중요!! 저장소에 값이 담긴다. application.setAttribute("op", op);
[27. Session 객체로 상태값 저장하기 (그리고 Application 객체와의 차이점)]
# application 객체대신 session로 대체
# application 객체는 application 범주내에서 사용가능
# session 객체는 session 범중내에서 사용가능 (현재 접속한 사용자를 위한것)
브라우저가 다르면, 세션이 다르게 됩니다. (크롬, 파이어폭스 등등)
브라우저가 같으면, 세션이 같게 됩니다. (크롬, 크롬) -> 스레드 개념으로 나눠같은 구조입니다.
ServletContext application = request.getServletContext(); HttpSession session = request.getSession(); ... // int x = (Integer)application.getAttribute("value"); int x = (Integer)session.getAttribute("value"); ... int y = v; // String operator = (String)applicatoin.getAttribute("op"); String operator = (String)session.getAttribute("op"); ... // application.setAttribute("value", v); // application.setAttribute("op", op); session.setAttribute("value", v); // 중요!! 저장소에 값이 담긴다. session.setAttribute("op", op);
[28. 웹서버가 현재 사용자 (session)을 구분하는 방법]
# WAS (application 공간, 사용자마다 session공간, servlet 공간)
# 사용자 요청 Add(SID없음) > Servlet(Add) > application > Servlet > 사용자 (SID: 107) : Session에 107 생성
다음요청시 : 사용자 요청 Add(SID: 107) > Servlet(Add) > application/ Session > Servlet > 사용자 (SID: 107)
# 다른 브라우저를 열때마다 : 사용자 요청 Add(SID없음) 이다.
# 세션값 확인 : 개발자도구 > 네트워크 > Cookie = JSESSIONID=B71~
# 마이크로 소프트는 세션정보가 매번 바뀌고, 다른곳들은 저마다의 방식으로 관리한다.
# 세션 메소드
1. void setAttribute(String name, Object value) : 지정된 이름으로 객체를 설정
2. Object getAttribute(String name) : 지정한 이름의 객체를 반환.
3. void invalidate() : 세션에서 사용되는 객체들을 바로 해제
4. void setMaxInactiveInterval(int interval) : 세션 타임아웃을 정수(초)로 설정 (기본 : 30 min)
(타임아웃은 톰캣 등 was설정에서 확인 가능)
등등
[29. cookie를 이용해 상태값 유지하기]
# 예시) session 캐비넷, cookie는 가지고 다니는 물건
- 서버쪽 저장소 : application, session
- 사용자쪽 저장소 : cookie
# 헤더설정(cookie) -> request.getHeader(), request.getCookie(); ---> 쿠키심기 :response.addCookie()
# 데이터설정 -> getParameter()
# 쿠키는 문자형만 저장이 가능합니다.
// 쿠키 저장하기 Cookie cookie = new Cookie("c", String.valueOf(result)); response.addCookie(cookie); // 쿠키 읽기 Cookie[] cookies = request.getCookies(); String _c = ""; if(cookie != null){ for(Cookie cookie : cookies) if("c".equals(cookie.getName())) _c = cookie.getValue();
[30. Cookie의 Path 옵션]
# 쿠키를 특정 서블릿에게서만 가져오도록 적용할 수 있다.
(특정 url 호출시에만 쿠키가 동작하도록 설정 가능)
# cookie.setPath("/notice"); // 특정 url 호출시에만 쿠키가 동작하도록 설정 가능
...
[35. 처음이자 마지막으로 동적인 페이지 서블릿으로 직접 만들기]
# 아래처럼 하는 이유는 기존 html은 동적인 데이터 적용이 불가능 했으나
서블릿에는 동적인 데이터값을 사용할 수 있기 떄문이다.
# 번거로움을 경험해보라
- 각 줄에 out.writer(""); 작성
- 쌍따옴표 앞에 역슬레시 적용 /"
@WebServlet ... response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); // html태그를 java단에 작성 out.write("<!DOCTYPE html>"); out.write("<html>"); out.write("<head>"); out.write("<meta charset=\"UTF-8\">"); //따옴표 적용시 역슬레시 추가 ...
728x90
반응형
'[강의] > [서블릿 JSP 강의] (뉴렉처)' 카테고리의 다른 글
Servlet&JSP 프로그래밍 (57강 ~ 67강) (0) | 2024.09.30 |
---|---|
Servlet&JSP 프로그래밍 (46강 ~ 55강) (0) | 2024.09.11 |
Servlet&JSP 프로그래밍 (36강 ~ 45강) (0) | 2024.08.21 |
Servlet&JSP 프로그래밍 (15강 ~ 25강) (1) | 2024.06.07 |
Servlet&JSP 프로그래밍 (04강 ~ 14강) (0) | 2024.06.05 |
Comments