자동 로그인은이 웹 페이지를 여러 번 사용할 때 사용자 이름과 비밀번호를 다시 입력하지 않고 사용자가 로그인하는 데 도움이됩니다.
자동 로그인은 사용자가 사용자의 로그인 정보와 사람을 로컬 파일 쿠키에 저장 함을 의미합니다.
이름, 가치 - 새 쿠키 (키, 가치);
Path-Default 값은 현재 쿠키를 저장하는 Serlvet이 위치한 경로입니다.
쿠키가 그러한 경로에있는 경우 http : // loclhost : 8080/project/abc/aservlet
쿠키의 경로는 http : // loclhost/project/abc입니다
그런 다음 의미합니다.
http : // loclhost/project/abc 디렉토리에있는 서블릿만이 쿠키의 값을 읽을 수 있습니다.
만약에:
쿠키 클래스를 저장하십시오 : http : // loclhost : 8080/project/a/b/aservlet
쿠키의 기본 경로는 http : // loclhost/project/a/b입니다
1 단계 : 로그인 페이지를 개발합니다
<c : 선택> <c : test = "$ {empty sessionscope.name}"> <form name = "x"method = "post"action = "<c : url value = '/loginservlet'/>"> name : <입력 유형 = "text"name = "name"/> <br/> auto : <input type = "value"-1 "no autocatic <" "no autolatic <" type = "radio"name = "auto"value = "1"> 1 일 <br/> <input type = "radio"name = "auto"value = "7"> 1 주 <br/> <input type = "제출"/> </form> </c : the> <c : elid> 당신은 이미 기록된다 : $ {name} <br/> <a href = "ur ur ur : value = '/loginservlet'//> "> loginservlet '/loginservlet'//"> loginservlet </a> </c : 그렇지 않으면> </c : 선택>2 단계 : 쿠키를 성공적으로 저장하십시오
public void dopost (httpservletrequest request, httpservletreponse responsk) servletexception, ioexception {// 사용자 이름 string name = requestparameter ( "name"); 문자열 auto = request.getParameter ( "auto"); // 세션 request.getSession (). setAttribute ( "name", name)에 사용자 정보를 넣습니다. // Auto가 -1 If (! auto.equals ( "-1")) {int day = integer.parseint (auto); // 1 | 7 int 초 = 60*60*24*일; // 쿠키 쿠키 선언 c = 새 쿠키 ( "autologin", name); c.setmaxage (초); c.setPath (request.getContextPath ()); // 쿠키 응답 저장 .addcookie (c); }}3 단계 :이 웹 사이트의 모든 페이지에 액세스 해야하는 경우 자동 로그인을 달성해야합니다.
모든 url =/*를 고려하려면 면밀히자를 작성하십시오. Dofilter의 모든 쿠키를 읽으십시오. Autologin이라는 이름의 이름 쿠키가 있습니까?
항상 놓아주십시오.
public void dofilter (servletrequest 요청, ServletRepronse 응답, Filterchain 체인)는 ioexception, servletexception {// 쿠키 읽기 httpservletrequest req = (httpservletrequest) 요청; // 모든 쿠키 쿠키 받기 쿠키 [] cs = req.getCookies (); if (cs! = null) {for (cookie c : cs) {if (c.getname (). equals ( "autologin")) {// 쿠키가 string value = c. getValue (); // user name // req.getSession ( "name", value)에 성공적으로 참조합니다. 부서지다; }}} // chain.dofilter (요청, 응답)에 자동으로 로그인하는지 여부에 관계없이; }네 번째는 다음과 같습니다. web.xml에서 모든 urls =/*를 구성합니다
<filter> <filter-name> auto </filter-name> <filter-class> cn.itcast.filter.autofilter </filter-class> </filter> <filter-mapping> <filter-name> auto </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
5 단계 : 개발 출구
System.err.println ( "사용자 종료"); // 전체 세션 request.getSession (). invalidate ()를 삭제합니다. 쿠키 C = 새로운 쿠키 ( "autologin", "ddd"); c.setmaxage (0); c.setPath (request.getContextPath ()); 응답 .addcookie (c); // request.getSession (). removeAttribute ( "name"); response.sendRedirect (request.getContextPath ()+"/index.jsp");
6 단계 : 코드 최적화
사용자는 수동으로 로그인 할 때 도필터 자동 파일터의 도필터 방법을 입력하고 모든 쿠키를 읽고 한 번 트래버기를 읽습니다. 그리고이 횡단은 사용자에게 중복됩니다.
따라서 LoginServet URL은 Dofiler에 사용해야합니다.
로그 아웃 할 때 자동으로 로그인 할 수 없습니다.
보충 지식 요점 :
사용자가 로그인되어 있는지 확인하십시오
패키지 CN.Hongxin.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletexception; import javax.servlet.servletrequest; javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; 공개 클래스 LoginFilter는 필터 {public void init (FilterConfig FilterConfig)를 servletexception {} public void dofilter (servletrequest 요청, ServletResponse 응답, FilterChain 체인) IoException, servletexception {// httpser request req = (httpservletre request); // 세션을 가져옵니다 httpsession ss = req.getSession (); // session에서 사용자를 가져옵니다 if (ss.getAttribute ( "user") == null) {System.err.println ( "아직 로그인되지 않았습니다"); req.getSession (). setAttribute ( "msg", "먼저 로그인하십시오"); // 로그인으로 리디렉션 httpservletResponse resp = (httpservletResponse) 응답; resp.sendredirect (req.getContextPath ()+"/index.jsp"); [W2]} else {// release Chain.dofilter (요청, 응답); }} public void destroy () {}}web.xml로 구성하고 JSPS/*를 고려하십시오.
<filter> <filter-name> 로그인 </filter-name> <filter-class> cn.itcast.filter.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> 로그인 </filter-name> <url-pattern>/jsps/*</url-pattern> <url-pattern> </url-pattern> </필터 매핑>
위의 내용은이 기사에 관한 모든 것입니다. 모든 사람의 학습에 도움이되기를 바랍니다.