Session 상세 정보

5447 단어

1. 세션 소개


WEB 개발에서 서버는 모든 사용자 브라우저에 세션 대상 (session 대상) 을 만들 수 있습니다. 주의: 한 브라우저가session 대상을 독점합니다. (기본적으로)따라서 사용자 데이터를 저장해야 할 때 서버 프로그램은 사용자 데이터를 사용자 브라우저가 독점하는session에 쓸 수 있고 사용자가 브라우저를 사용하여 다른 프로그램에 접근할 때 다른 프로그램은 사용자의session에서 사용자의 데이터를 꺼내 사용자에게 서비스를 제공할 수 있다.
1. 로그인 정보나 사용자가 웹 응용 프로그램을 탐색할 때 필요한 추가 정보와 같은 사용자 세션 내내 상태를 유지해야 하는 정보를 저장합니다.
2. 페이지를 다시 불러오는 과정이나 기능에 따라 그룹화된 페이지 사이의 상태를 유지하기만 하는 대상을 저장한다.
3. Session의 역할은 웹 서버에서 사용자의 상태 정보를 언제든지 장치의 페이지에 접근할 수 있도록 유지하는 것이다.브라우저는 이런 정보를 저장할 필요가 없기 때문에, 패드나 휴대전화 같은 브라우저 장치라도 사용할 수 있다.

2. 세션과 쿠키의 주요 차이점

  • 쿠키는 사용자의 데이터를 사용자에게 쓰는 브라우저입니다.
  • 세션 기술은 사용자의 데이터를 사용자가 독점하는session에 쓴다.
  • 세션 대상은 서버에서 만들고 개발자는 Request 대상의 getSession 방법을 호출하여session 대상을 얻을 수 있습니다.
  • 쿠키 데이터는 고객의 브라우저에 저장하고session 데이터는 서버에 저장
  • 쿠키가 안전하지 않아서 다른 사람들이 현지에 저장된 쿠키를 분석하고 쿠키 사기를 할 수 있다. 안전을 고려하여session을 사용해야 한다.

  • 3. 세션 실현 원리

    서버는 어떻게 세션이 사용자 브라우저를 위한 서비스를 실현합니까?


    서버가session을 만들고 나오면session의 id번호를 쿠키 형식으로 클라이언트에게 돌려줍니다. 그러면 클라이언트의 브라우저가 꺼지지 않고 서버에 방문할 때session의 id번호를 가지고 갑니다. 서버는 클라이언트 브라우저가session id를 가지고 오는 것을 발견하면 메모리에 대응하는session을 사용하여 서비스를 합니다.다음과 같은 코드로 증명할 수 있습니다.
    package xdp.gacl.session;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class SessionDemo1 extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setCharacterEncoding("UTF=8");
            response.setContentType("text/html;charset=UTF-8");
            // request getSession() session, session 
            HttpSession session = request.getSession();
            // session 
            session.setAttribute("data", " ");
            // session Id
            String sessionId = session.getId();
            // session 
            if (session.isNew()) {
                response.getWriter().print("session ,session id :"+sessionId);
            }else {
                response.getWriter().print(" session ,session id :"+sessionId);
            }
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    }

     
    결과는 스스로 체험해 볼 수 있다
     
    세션 객체의 일반적인 몇 가지 방법:
    1. public void setattribute(String name, String value)는 지정된 이름의 속성 값을 설정하고session 세션 범위에 추가합니다. 이 속성이 세션 범위에 존재하면 이 속성 값을 변경합니다. 
    /*
    setAttribute(" , getAttribute, hello", );
    getAttribute("hello")
    , String,int, , get
    , set String , String s=(String)session.getAttribute("hello");

    */
    2. public Object getattribute(String name)는 세션 범위 내에서 지정한 이름의 속성 값을 가져옵니다. 반환 값 유형은 object이고 이 속성이 존재하지 않으면 null로 돌아갑니다.
    3. public void removeAttribute(String name), 지정된 이름의session 속성을 삭제합니다. 이 속성이 존재하지 않으면 예외가 발생합니다.
    4,public void invalidate (),session을 실효시킵니다.현재 세션을 즉시 무효화할 수 있으며 원래 세션에 저장된 모든 대상을 더 이상 접근할 수 없습니다.
    5, public String getId(), 현재 세션 ID를 가져옵니다.모든 세션은 서버 측에 유일한 표시인sessionID가 존재하고session 대상이 브라우저에 보내는 유일한 데이터는sessionID입니다. 이것은 일반적으로 쿠키에 저장됩니다.
    6.public void setMaxInactiveInterval(int interval)은 세션의 최대 지속 시간을 설정합니다. 단위는 초이고 음수는 세션이 효력을 잃지 않음을 나타냅니다. 
    7. public int getMax InActive Interval (), 세션의 최대 지속 시간을 얻기 위해 사용할 때 처리가 필요합니다
     
     
    전재 대상:https://www.cnblogs.com/liuhuijie/p/9180386.html

    좋은 웹페이지 즐겨찾기