<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 这是一个重要的地方,很多人在使用<s:include>子页面后,发现子页面乱码,怎么改都不行,原因就在次,struts2的默认编码为UTF-8,乱码的同志请看看你的jsp页面上的编码是不是和这个不一致呢。只要把这里和jsp编码改一致就行了 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 告诉struts2,我要用spring装配工厂,其实默认就是这个了-_-!!! -->
<constant name="struts.objectFactory" value="spring" />
<!-- struts2的扩展名,比如struts1的时候,用的.do,struts2默认为.action,可以改成其它的,比如.dxd -->
<constant name="struts.action.extension" value="action" />
<!-- 资源文件 -->
<constant name="struts.custom.i18n.resources" value="messageResource">
</constant>
<package name="default" namespace="/" extends="json-default">
<!-- 未登录用户拦截 -->
<interceptors>
<interceptor name="loginInteceptor" class="com.xlb.interceptor.LoginInterceptor" />
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInteceptor">
<param name="excludeMethods">goLogin,loginuser</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="loginuser" class="UserAction" method="login">
<result type="json"></result>
</action>
<action name="getAllStudentAction" class="StudentAction"
method="getAllStudent">
<result type="json">
</result>
<interceptor-ref name="loginInteceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
<action name="getAllKaikeAction" class="KaikeAction" method="getAllKaike">
<result type="json">
</result>
<interceptor-ref name="loginInteceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
<package name="index" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="loginInteceptor" class="com.xlb.interceptor.LoginInterceptor" />
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInteceptor">
<param name="excludeMethods">loginuser</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<global-results>
<result name="goLogin">login.jsp</result>
</global-results>
<action name="Student" class="StudentAction" method="showindex">
<result>index.jsp</result>
<interceptor-ref name="loginInteceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
package com.xlb.interceptor;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class LoginInterceptor extends MethodFilterInterceptor{
@Override
protected String doIntercept(ActionInvocation invoker) throws Exception {
// TODO Auto-generated method stub
Object loginUserName = ActionContext.getContext().getSession().get("id");
if(null == loginUserName){
return "goLogin.action"; // 这里返回用户登录页面视图
}
return invoker.invoke();
}
}
最后结果为 Could not find action or result
No result defined for action com.xlb.action.KaikeAction and result goLogin.action
拦截数据 不拦截页面不跳转