마지막 액세스 시간을 기억
: 1. 요구
는 첫 번째 방문, 프롬프트의 경우, 1. 서블릿 : 안녕하세요, 귀하의 첫 번째 방문을 환영합니다.
2. 첫 번째 방문, 프롬프트가 아닌 경우 : 환영 다시, 당신의 마지막 방문 시간 : 표시 시간 문자열
2. 분석 :
1. 쿠키 사용하여 수행 할 수있는
쿠키의 이름 lastTime이 있는지 여부를 확인하기 위해 서버 2에서 서블릿을
1은 다음과 같습니다하지에 처음 방문
1. 응답 데이터 : 환영 다시, 당신의 마지막 방문 시간 : 2018년 6월 10일 11시 50분 20초
2. 쓰기 다시 쿠키 : lastTime = 2018년 6월 10일 11시 50분 1초
2. 번호 :에 첫 번째 방문입니다
1. 응답 데이터 : 안녕하세요, 오신 것을 환영합니다 처음 방문
2. 쓰기 다시 쿠키 : lastTime = 2018 니안 6 왕위 10 리 11시 50분 1초
3. 코드 구현 :
에 대한 패키지 페널티 쿠키, 가져 오기 javax.servlet.ServletException, 가져 오기 javax.servlet.annotation.WebServlet, 가져 오기 javax.servlet.http.Cookie, 가져 오기 인 javax.servlet.http.HttpServlet, 가져 오기 나오는 javax.servlet.http.HttpServletRequest, 가져 오기 에서 javax.servlet .http.HttpServletResponse; 오기 때 java.io.IOException; 오기 java.net.URLDecoder; 오기 java.net.URLEncoder; 오기 java.text.SimpleDateFormat에, 오기 java.util.Date; / ** 서버 서블릿의 여부를 판정한다 그것은 쿠키의 lastTime를 임명했다 가 1 : 그것은 첫 번째 방문하지 1. 응답 데이터 : 환영 다시, 당신의 마지막 방문 시간 2. 쓰기 다시 쿠키 2. 번호 : 그것은 첫 번째 방문입니다 안녕하세요, 귀하의 첫 번째 방문을 환영합니다 : 1. 응답 데이터 2. 쓰기 다시 쿠키 : * / @WebServlet ( "/에 CookieTest" ) 공개 수업 에 CookieTest 확장 HttpServlet을 { 보호 무효 의 doPost (HttpServletRequest의 요청, 응답은 HttpServletResponse를) 발생 ServletException을, IOException가 { response.setContentType을 ( "텍스트 / HTML;. 캐릭터 세트 = UTF-8" ); // 1. 모든 쿠키를 얻을 쿠키 [] = 쿠키 request.getCookes ()를을 (); 부울 에서 깃발 = false로 ; //어떤 쿠키가 lastTime 없다 // 2. 트래버스 모든 쿠키 IF (쿠키 =! 널 (null) && cookies.length! = 0 ) { 에 대한 (쿠키 쿠키 : 쿠키) { // 3. 가져 오기 모든 쿠키 문자열 = cookieName Cookie.getName ( ); // 4. 결정 상륙 여부 만약에 ( "lastTime" .equals (cookieName)) { // 하지 처음으로 착륙 깃발 = true로 ; // 마지막 로그인 시간 값을 얻을 문자열 = DATE_FORMAT 쿠키를. getValue (); // 응답 데이터 에서 System.out.println ( "디코딩하기 전에"+ DATE_FORMAT) // URL을 디코딩 : DATE_FORMAT = URLDecoder.decode (DATE_FORMAT "UTF-8." ) 에서 System.out.println ( "디코딩"+ DATE_FORMAT); . response.getWriter () 쓰기 ( "환영 다시, 당신의 마지막 방문 시간 :"+ DATE_FORMAT); // 시간 날짜 날짜 = 새로운 새로운 날짜 (); SimpleDateFormat의 SDF = 새로운 새로운 SimpleDateFormat의 ( "YYYY 년 MM 월 DD 일 HH : MM : SS " ); 문자열 TIMEVALUE = sdf.format (DATE); //은 이 시간 착륙 변환됩니다 에서 System.out.println ( "현재 시간이"+ TIMEVALUE) 에서 System.out.println ( "인코딩하기 전에"+ TIMEVALUE) // 코딩 URL TIMEVALUE = URLEncoder.encode (TIMEVALUE ". UTF-8" ); 에서 System.out.println는 ( "후 코딩"+ TIMEVALUE) // 설정된 쿠키 생존 시간 cookie.setMaxAge (24 * 60 * 60 * 30); // 개월 cookie.setValue (TIMEVALUE) response.addCookie ( 쿠키) BREAK ; } } } IF (쿠키 == 널을 || cookies.length == 0 || 플래그 == false로 ) { // 아니, 처음 액세스 // 세트 쿠키 값 //는 , 현재 시간 문자열을 가져옵니다 쿠키의 값을 재설정 쿠키를 재전송 날짜 날짜 = 새로운 새로운 날짜를 (); SimpleDateFormat의 자위대 = 새로운 새로운 SimpleDateFormat의 ( "YYYY 년 mM의 월 DD 일 HH : MM : SS를" ); 문자열 DATE_FORMAT = sdf.format (일); 에서 System.out.println을 ( "코딩 "+ : 전에 , DATE_FORMAT) // URL을 인코딩 . UTF-8"DATE_FORMAT = URLEncoder.encode (DATE_FORMAT를 " ); 에서 System.out.println는 ( "코드"+ DATE_FORMAT); 쿠키 쿠키 = 새로운 새 쿠키 ( "lastTime" , DATE_FORMAT); // 쿠키 생존 시간 설정 cookie.setMaxAge을 (60 * 60 * 24 * 30); // 개월 응답 .addCookie (쿠키) response.getWriter () 쓰기는 (. "안녕하세요 <H1>, 귀하의 첫 번째 방문 </ H1>에 오신 것을 환영합니다" ); } } 보호 무효 (HttpServletRequest로, HttpServletResponse를 응답 요청)의 doGet 발생 ServletException을, IOException가 { 은이 .doPost (요청, 응답); } }