본문 바로가기
Back-end/웹(web)

[웹] 데이터 공유와 쿠키

by javapp 자바앱 2020. 5. 24.
728x90

범위, 생명주기

page < request < sessing < application

 

세션 범위 : 브라우저 당 생성되는 객체

ex) 하나의 차에서 로그인 하면 다른 탭을 열어도 여전히 로그인 상태 유지

 

 

세션 기술 - 세션 관련 정보를 웹 서버에 저장

쿠키 기술 - 세션 관련 정보를 클라이언트에 저장

 

 

 

 


데이터 공유 쿠키 예)

 

//     ... /scope?m=c&id=kim& ...

@WebServlet("/scope")

public class Controller extends HttpServlet{

 

       @Override

       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

               String mode = req.getParameter("m");

               if(mode.equals("c"))

               {

                      String id = req.getParameter("id");

                      req.setAttribute("a_id", id); //request 영역

                      req.getSession().setAttribute("a_id", id);  //세션 영역

                      req.getServletContext().setAttribute("a_id", id);       //어플리케이션 영역

               }

              

               req.setAttribute("mode", mode);  //(키, 값)

               PrintNumber printer = new PrintNumber();  //PrintNumber 로 넘긴다

               printer.print(req, resp);

       }

}

 


 

public class PrintNumber{

      

       public void print( HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException{

               PrintWriter out = resp.getWriter();

               String idRequest = (String) req.getAttribute("a_id"); //object 타입을 String 으로

               String idSession = (String) req.getAttribute("a_id");

               String idApplication = (String) req.getServletContext().getAttribute("a_id");

               out.printf("request scope: %s \n" , idRequest);

               out.printf("session scope: %s \n" , idSession);

               out.printf("application scope: %s \n" , idApplication);

              

               String mode = (String) req.getAttribute("mode");

               if(mode.equals("c")) {

                      setCookie(req,resp);

                      printCookie(req,resp);

               }

       }

       public void setCookie( HttpServletRequest req , HttpServletResponse resp) { //쿠키를 설정한다.

               Cookie idCookie = new Cookie("id", "kim"); //키와 값

               idCookie.setMaxAge(60*60*24); //하루 , 쿠키 유지 시간

               Cookie ageCookie = new Cookie("pwd", "25");

               resp.addCookie(idCookie);

               resp.addCookie(ageCookie);

       }

      

       public void printCookie( HttpServletRequest req , HttpServletResponse resp) { //쿠키 출력

               Cookie[] cookies = req.getCookies();

               if(cookies != null) {

                      for(Cookie coo : cookies) {

                              System.out.printf("Name: %s, Value:%s \n", coo.getName(),coo.getValue());

                      }

               }

       }

}

세션 관련 함수

setAttribute /  getAttribute

getId

invalidate : 현재 생성된 세션을 무효화

removeAttribute

getCreationTime : 70년 1월 1일 0시 0초를 기준으로 현재 세션이 생성된 시간까지 경과 시간

setMaxInactiveInterval(int interval) : 세션 객체의 유효 시간을 초단위로 설정

 

쿠키 관련 함수

setMaxAge(int expiry)

getName()

getValue()

setName(String name)

setValue(String value)

setPath(String url)

getPath()

 

 


extern int num;   // 같은 프로젝트에 속한 모든 파일에서 접근 가능

 

 

댓글