Struts2自定義攔截器,實現登錄檢查。
由于在項目開發時,需要對大多數的頁面進行登錄檢查。當沒有登錄就無法進行操作,并返回到登錄頁面。為減少代碼量
利用Struts2中自定義攔截器的功能,實現登錄檢查。
</div>
利用Struts2中自定義攔截器的功能,實現登錄檢查。
JavaWeb/struts2框架
一、新建struts-base.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <include file="struts-default.xml"></include> <package name="checkLogin" extends="struts-default"> <!--定義返回結果類型 --> <result-types> <result-type name="json" class="com.util.JSONResult"></result-type> </result-types> <!-- 定義一個攔截器 --> <interceptors> <interceptor name="authority" class="com.util.CheckLoginInterceptor"></interceptor> <!--定義一個攔截棧 --> <interceptor-stack name="myDefaultStack"> <interceptor-ref name="defaultStack"></interceptor-ref><!--默認攔截棧 --> <interceptor-ref name="authority"></interceptor-ref><!--自定義攔截棧 --> </interceptor-stack> </interceptors> <!--設定默認棧 --> <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref> <!--定義全局結果集 --> <global-results> <result name="login">/index.jsp</result> </global-results> </package> </struts> 2.struts.xml 配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.devModel" value="true"></constant> <include file="struts-default.xml"></include> <include file="struts-base.xml"></include> <package name="default" extends="struts-default" namespace="/"> <result-types> <result-type name="json" class="com.util.JSONResult"></result-type> </result-types> <action name="index" class="com.action.LoginAction"> <result name="json" type="json"/> </action> <action name="code" class="com.action.CodeAction"></action> </package> <package name="show" extends="checkLogin" namespace="/"> <action name="show" class="com.action.ShowAction"> <result name="success">/main.jsp</result> </action> </package> </struts> 3.action public class CheckLoginInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { //獲取ActionContext ActionContext ac = invocation.getInvocationContext(); //獲取session Map<String, Object> session = ac.getSession(); //獲取session中的用戶信息 String userName = (String)session.get("userName"); //判斷用戶信息是否正確 if(userName != null ) { return invocation.invoke(); }else { return "login"; } } }
struts-base.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <include file="struts-default.xml"></include> <package name="checkLogin" extends="struts-default"> <!--定義返回結果類型 --> <result-types> <result-type name="json" class="com.util.JSONResult"></result-type> </result-types> <!-- 定義一個攔截器 --> <interceptors> <interceptor name="authority" class="com.util.CheckLoginInterceptor"></interceptor> <!--定義一個攔截棧 --> <interceptor-stack name="myDefaultStack"> <interceptor-ref name="defaultStack"></interceptor-ref><!--默認攔截棧 --> <interceptor-ref name="authority"></interceptor-ref><!--自定義攔截棧 --> </interceptor-stack> </interceptors> <!--設定默認棧 --> <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref> <!--定義全局結果集 --> <global-results> <result name="login">/index.jsp</result> </global-results> </package> </struts>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.devModel" value="true"></constant> <include file="struts-default.xml"></include> <include file="struts-base.xml"></include> <package name="default" extends="struts-default" namespace="/"> <result-types> <result-type name="json" class="com.util.JSONResult"></result-type> </result-types> <action name="index" class="com.action.LoginAction"> <result name="json" type="json"/> </action> <action name="code" class="com.action.CodeAction"></action> </package> <package name="show" extends="checkLogin" namespace="/"> <action name="show" class="com.action.ShowAction"> <result name="success">/main.jsp</result> </action> </package> </struts>
[文件] CheckLoginInterceptor.java
package com.util; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class CheckLoginInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { //獲取ActionContext ActionContext ac = invocation.getInvocationContext(); //獲取session Map<String, Object> session = ac.getSession(); //獲取session中的用戶信息 String userName = (String)session.get("userName"); //判斷用戶信息是否正確 if(userName != null ) { return invocation.invoke(); }else { return "login"; } } }
本文由用戶 RegPoate 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!