세션 - 과자 자바 기술 및 세션의 기초

  이 시점에서, 서블릿 세 개의 도메인 객체를 학습 :의 ServletContext를 (웹 프로젝트), 요청 (요구), (클라이언트) 세션! 이 같은 방법입니다!

  사용자가 작동 할 수있는 브라우저를 열고 시작에서 브라우저가 끝날 때까지 폐쇄 될 때까지 세션을 시작했다. 이 과정에서이 고유 ID 값을 찾기 위해 직접 다음 호출을 요청이 생성 될 때마다 쿠키를 생성합니다, 클라이언트가 메모리 공간을 만듭니다으로는 JESSIONID를 생성합니다. 데이터 저장 두 곳 모두에서 장점과 단점이 있습니다! 이 브라우저가 세션을 닫고 파괴하지 않았다는 것을 주목해야한다!

첫째, 세션 기술 개요 :

1 기억 클라이언트 상태 :

  HTTP 프로토콜은 각 클라이언트가 서버 측 리소스에 액세스 할 수 있음을 의미하는 비 상태이기 때문에, 서버는 클라이언트가 누구인지 모르는, 그래서 클라이언트의 기술 세션 상태를 파악하는 것이 필요하다.

세션 서버 기술 (구별 클라이언트) 클라이언트 상태를 기억하는 데 도움

(2) 세션 기술 :

①가, 세션이 될 전체 브라우저 프로세스를 종료하기 위해, 브라우저를 열지 사이트를 방문하십시오. 이 기술 세션은 클라이언트의 세션 상태 데이터를 기록하는 것입니다.

②, 기술 세션은 쿠키 및 세션을 나누어 :

쿠키 : 데이터가 스토리지 서버의 압력을 감소, 클라이언트에 로컬로 저장되고, 보안은 클라이언트 수 명확 쿠키, 좋지 않다.

세션 : 서버에 데이터를 저장하는 보안 서버에 압력을 증가 비교적 좋다.

두, 쿠키 기술 :

1, 클라이언트는 서버 쿠키 (중국어를 저장할 수 없습니다) 전송

쿠키 쿠키 = 새로운 쿠키 (문자열 이름, 문자열 값)

2, 클라이언트의 시간 영구 쿠키를 설정합니다 :

cookie.setMaxAge (INT 초)

당신이 지속 시간을 설정하지 않으면 브라우저 쿠키는 쿠키 정보가 파괴 될 때 브라우저를 닫 메모리에 저장됩니다. 다음, 메모리에 규정 된 시간됩니다 설정합니다.

3 경로를 들고 쿠키를 설정 :

cookie.setPath (문자열 경로)

당신은 경로 설정 경로를 수행하지 않는 경우, 웹 리소스에 액세스 할 수 쿠키에서 생성 된 쿠키 정보는 어디에서 쿠키 정보를 전달합니다.

4, 쿠키가 클라이언트로 전송됩니다

response.addCookie (쿠키 쿠키)

5, 클라이언트의 쿠키를 삭제

쿠키의 지속 시간의 경로와 같은 이름의 사용은 0 덮여

 

얻기위한 doGet 공개 (HttpServletRequest의 요청의 HttpServletResponse를 응답) 무효 ServletException을, IOException이가 {던졌습니다
        // 쿠키 객체 생성
        쿠키 쿠키 쿠키 새로운 새 = ( "godds", "naiping");
        // (시작 요청 서블릿에서) 지속 시간을 설정
        cookie.setMaxAge을 (60 * 2)]
        // 경로 담 쿠키 (에만 수행하기 전에이 경로에 액세스) 설정
        //cookie.setPath("/WEB07/SendCookieServlet ");
        /*cookie.setPath("/WEB07를");
        cookie.setPath를 ( "/"); * /
        // 전송
        ) response.addCookie (쿠키
    }

 

 

공공 무효의 doGet (HttpServletRequest의 요청, HttpServletResponse를 응답) ServletException을, IOException가 {던졌습니다
        //删除쿠키
        쿠키 쿠키 = 새로운 쿠키 ( "제품", "naiping을");
        cookie.setMaxAge (0);
        response.addCookie (쿠키);
    }

 

(6), 서버는 클라이언트가 쿠키 방법을 전달받습니다

서버에 처음으로 전송 모드 요청

 

공공 무효의 doGet (HttpServletRequest의 요청 HttpServletResponse를 대응) ServletException을, IOException가 슬로우 {
        //获取쿠키数组
        쿠키 [] = 쿠키의 request.getCookes ()를 ();
        //遍历쿠키数组通过쿠키名获取쿠키值
        (쿠키 C : 쿠키)에 대한 {
            (. c.getName () 등호 ( "제품"))의 경우 {
                에서 System.out.println (c.getValue ());
            }
        }

 

 

얻기위한 doGet 공개 (HttpServletRequest의 요청의 HttpServletResponse를 응답) 무효 ServletException을, IOException이가 {던졌습니다
        // 객체의 현재 시간 도착
        날짜 = 새로운 새로운 DATE 날짜 ();
        // 생성 날짜 변환 클래스 객체의
        SimpleDateFormat의 자위대 = 새로운하여 SimpleDateFormat ( "YYYY의 -MM-DD HH를 SS - mm ");
        // 문자열로 객체의 날짜
        문자열 = sdf.format 시간 (일);
        //이 쿠키 객체를 생성 현재의 액세스 시간 기록
        쿠키 쿠키 = 새로운 새로운 쿠키 ("lastTime "시간)
        쿠키 .setMaxAge (10 * 60);
        // 쿠키 보내
        response.addCookie (쿠키)
        // 쿠키 수신
        () 쿠키 [] = 쿠키 request.getCookes ()를하는 단계;
        // 변수를 마지막 액세스의 축적 시간 정의한
        문자열을 lastTime = NULL;
        // 탐색
        (C 쿠키 : 쿠키)에 대한 {
            IF (. c.getName () 등호 ( "lastTime")) {
                lastTime c.getValue = ()
            }
        }
        // 응답 왜곡 용액
        response.setContentType ( "텍스트 / HTML; 문자셋 = 8 UTF ");
        IF (lastTime == NULL) {
            // 처음 방문
            response.getWriter () 쓰기 (."당신은 첫 번째 방문이다 ");
        }는 다른 {
            response.getWriter () 쓰기 (." 당신의 마지막 방문 시간 "+ lastTime);
        }
    }

 

 

 

세 개의 세션 기술 :( 도메인 객체)

1. 소개 :

  세션 기술은 서버 측 기술이며, 각 클라이언트 측 데이터 저장을 위해 고객 데이터를 저장하는 메모리 공간의 조각을 만들 필요가 있지만, 각 시간은 클라이언트가 자신의 메모리 공간을 찾기 위해 서버에 식별 ID를 수행해야합니다. 그래서 실현이 세션 쿠키를 기반으로, 세션은 JSESSIONID 쿠키의 저장 고객의 수단으로 고유 한 식별을 필요로한다.

2 세션 객체를 얻었다 :

세션의 HttpSession = request.getSession ()

  세션 개체의 어떤 서버 측 세션이 반환 할 수있는 새로운 세션이 만듭니다없는 경우 이미 기존 세션 반환에 직접 속하는 세션 세션이있는 경우이 방법은 현재 세션에 고유 한 세션 객체 (현재의 클라이언트)를 얻을 것이다 (본질적으로 JSESSIONID에 따라 클라이언트가 세션이 이미 서버에 있는지 여부를 확인)

3 데이터 필드 오브젝트에 대한 액세스;

4, 수명주기 :

작성 ① :

    ) (첫 번째 실행 request.getSession 만들기

② 파괴 :

    하면 상폐 비 서버;

    세션이 만료 무효 (기본 30 분)

    수동 파괴 세션

③, 범위 :

  하나 개의 세션의 기본, 즉 하나 개의 세션에서, 모든 리소스에 공개 세션 객체를 말을하는 것입니다.

 

공공 무효의 doGet (HttpServletRequest의 요청 HttpServletResponse를 응답)을 ServletException이 발생 IOException을 {
        //获取세션域中的内容
        의 HttpSession 세션 = request.getSession ();
        //获取세션中的内容
        문자열 상품 = (문자열) session.getAttribute ( "제품");
        //解决乱码
        response.setContentType ( "텍스트 / HTML; 문자셋 = UTF-8");
        . response.getWriter () (상품을) 쓰기;
    }

 

 

얻기위한 doGet 공공 무효 (HttpServletRequest의 요청의 HttpServletResponse를 응답)는 ServletException을 던졌습니다, IOException가 {
        // 세션 개체를 가져
        의 HttpSession Request.getSession에게 세션 = ();
        저장 도메인에 // 세션 데이터 (쿠키 문자를 저장할 수 없습니다)
        session.setAttribute ( "제품" "병");
        // 얻을 JESSIONID
        문자열 위에서 언급 한 id = session.getId ();
        // 지속 시간 --- 새로운 쿠키가 시간을 설정 만들고 원래 덮어 쓰기 설정
        // 생성 쿠키
        쿠키 쿠키 = 새로운 새로운 쿠키를 ( 의 "JSESSIONID"ID)
        cookie.setPath ( "/ WEB08");
        cookie.setMaxAge (60 * 3).
        // 보내 쿠키
        response.addCookie (쿠키)
        response.getWriter () (기입의 "JSESSIONID". + ID);
        // JSESSIONID 결과 : 0CDD85B8A6E216CA5BDA8E9729D5F230를
       
    }

추천

출처www.linuxidc.com/Linux/2019-07/159678.htm