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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!