自動ログインは、このWebページを何度も使用するときに、ユーザーがユーザー名とパスワードを再度入力せずにログインするのに役立ちます。
自動ログインとは、ユーザーがユーザーのログイン情報と人をローカルファイルCookieに保存することを意味します。
名前、値 - 新しいCookie(key、value);
Path-Default値は、現在Cookieを保存しているSerlvetが配置されているパスです。
Cookieがそのようなパスにある場合:http:// loclhost:8080/project/abc/aservlet
Cookieのパスは、http:// loclhost/project/abcです
それからそれは意味します:
http:// loclhost/project/abcディレクトリにあるサーブレットのみが、このCookieの値を読み取ることができます。
もし:
Cookieクラスを保存:http:// loclhost:8080/project/a/b/aservlet
Cookieのデフォルトパスは、http:// loclhost/project/a/bです
ステップ1:ログインページを開発します
<c:chood> <c:test = "$ {empty sessionscope.name}"> <form name = "x" method = "cost" action = "<c:url value = '/loginservlet'/>"> name:<入力タイプ= "テキスト=" name = "name"/> <br/> auto "input =" aut "oto"> oto "> type = "Radio" name = "auto" value = "1"> 1 day <br/> <input type = "radio" name "name" name "name" value = "7"> 1週間<br/> <入力タイプ= "submit"/> </form> </c:when> <c:when> youは既にログに記録されています:$ {name} <br/> <a href = "<c:url value = '/loginservlet' //> "> loginservlet '/loginservlet' //"> loginservlet </a> </c:それ以外の場合> </c:chook>ステップ2:Cookieを正常に保存します
public void dopost(httpservletrequest request、httpservletresponse応答)Servletexception、ioexception {//ユーザー名name name = request.getParameter( "name"); string auto = request.getParameter( "auto"); //ユーザー情報をSESSION request.getSession()。setAttribute( "name"、name); // Autoが-1 if(!auto.equals( "-1")){int day = integer.parseint(auto); // 1 | 7 int秒= 60*60*24*日; // Cookie Cookie c = new Cookie( "autologin"、name)を宣言します。 C.SetMaxage(秒); c.setPath(request.getContextPath()); // cookie response.addcookie(c)を保存します。 }}ステップ3:このWebサイトのページにアクセスする必要がある場合は、自動ログインを達成する必要があります。
すべてのurl =/*を検討するためにスクチナイザーを書いてください。 DofilterですべてのCookieを読んでください。 Autologinという名前の名前のクッキーはありますか?
常に手放します。
public void dofilter(servletRequest request、servletResponse応答、フィルターチェーンチェーン)IoException、servletexception {//ここでhttpservletrequest req =(httpservletrequest)request; //すべてのCookieを取得しますCookie [] cs = req.getCookies(); if(cs!= null){for(cookie c:cs){if(c.getname()。equals( "autologin")){// string value = c.getvalue(); // user name // login requefuly login requentfull requentefuly requefuly requent in cookieがある場合、setattribut()。壊す; }}} // Chain.dofilter(request、response)に自動的にログインされているかどうかに関係なく; }4番目は、すべてのurls =/*をweb.xmlで構成します
<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( "user exit"); //セッション全体を削除しますrequest.getSession()。 Cookie C = new Cookie( "autologin"、 "ddd"); C.SetMaxage(0); c.setPath(request.getContextPath()); Response.AddCookie(c); // request.getSession()。removeattribute( "name"); Response.sendredirect(request.getContextPath()+"/index.jsp");
ステップ6:コードを最適化します
ユーザーは、手動でログインするときに自動フィルターのドフィルター方法を入力し、すべてのCookieを読んで1回トラバースするためです。そして、このトラバーサルはユーザーにとって冗長です。
したがって、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.servlete.servlete.servlete.servletesterest.servletesterest. javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; Import javax.servlet.http.httpsession;パブリッククラスのログインフィルター実装フィルター{public void init(filterconfig filterconfig)servletexception {} public void dofilter(servletrequest request、servletresponse response、filterchainチェーン)スローIoexception、servletexception {// httpretretrequest requestのリクエスト{// //セッションhttpsession ss = req.getsession()を取得します。 //セッションからユーザーを取得if(ss.getattribute( "user")== null){system.err.println( "あなたはまだログインしていません"); req.getSession()。setAttribute( "msg"、 "最初にログインしてください"); // httpservletResponse resp =(httpservletResponse)応答にリダイレクトします。 resp.sendredirect(req.getContextPath()+"/index.jsp"); [w2]} else {// chain.dofilterをリリース(リクエスト、応答); }} public void Destroy(){}}web.xmlに構成し、JSPS/*を検討してください。
<filter> <filter-name> login </filter-name> <filter-class> cn.itcast.filter.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> login> </filter-name> <url-pattern>/jsps/*</url-pattern> <url-pattern>
上記はこの記事に関するものです。すべての人の学習に役立つことを願っています。