JSPページを傍受し、ログインしているかどうかを確認します
最近、Struts2を使用してプロジェクトを行い、JSPがログに記録されているかどうかを検証するためにJSPをインターセプトする必要がありましたが、Struts2のフィルターチェーンはアクションのみをフィルタリングできます。その後、web.xmlでは、javax.servlet.filterの実装クラスのフィルターを直接jspに直接追加できることがわかりました。コードをご覧ください
フィルター実装クラス
<span style = "font-size:18px;">パッケージcom.common; java.io.ioexceptionをインポートします。 javax.servlet.filterをインポートします。 javax.servlet.filterchainをインポートします。 javax.servlet.filterconfigをインポートします。 javax.servlet.servletexceptionをインポートします。 javax.servlet.servletrequestをインポートします。 javax.servlet.servletResponseをインポートします。 javax.servlet.http.httpservletをインポートします。 javax.servlet.httpservletをインポートします。 javax.servlet.httpservletをインポートします。 javax.servletをインポートします。 javax.servlet.http.httpservletrequest; javax.servlet.http.httpservletResponseをインポートします。 Public Class LoginFilterはhttpservlet Implationsフィルターを拡張します{private static final long serialversionuid = 1l; @Override public void dofilter(servletRequest request、servletResponse応答、フィルターチェーンチェーン)IoException、servletexception {httpservletrequest req =(httpservletrequest)request; httpservletResponse res =(httpservletResponse)応答; string path = req.getContextPath(); String IndexPath = req.getScheme()+"://"+req.getServername()+":"+req.getServerport()+path+"/pages/login.jsp"; if(req.getRequesturi()。endswith( "login.jsp")){chain.dofilter(request、response);戻る; } object loginuser = req.getSession()。getAttribute( "<strong> <span style =" color:#ff0000; "> loginsession </span> </strong>"); if(loginuser == null){res.sendredirect(indexpath);戻る; } Chain.dofilter(request、response); } @Override public void init(filterconfig arg0)Servletexception {// todo auto-enerated method stub}} </span>ログイン方法:
<span style = "font-size:18px;"> public string login(){login login = new login(); //.....チェックログイン情報ActionContext ctx = actionContext.getContext(); map <string、object> session = ctx.getSession(); session.put( "<strong> <span style =" color:#ff0000; "> loginsession </span> </strong>"、login); 「成功」を返します。 } </span> web.xml構成
<filter> <filter-name> setlog </filter-name> <filter-class> com.common.loginfilter </filter-class> </filter> <filter-name> setlog> setlog> <url-pattern> /pages/home.jsp </url-pattern> <url-pattern>/pages/content/*</url-pattern> <url-pattern>/pages/*</url-pattern> <url-pattern>/pages/vodtask/*</url-pattern> </filter-mapping>
フレームがページで使用されている場合、セッションがタイムアウトしてログインページにログアウトする可能性があることに注意してください。この時点で、ログインページはフレームのサブページに表示されます。解決策:ログインページに次のコードを追加します。
<span style = "font-size:18px;"> <スクリプト言語= "javascript"> if(top!= window)top.location.href = window.location.href; </script> </span>
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!