<?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.action.extension" value="action,do,,"/><!-- 执行的拓展 -->
<constant name="struts.configuration.xml.reload" value="true"/><!-- xml配置自动重载 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/><!-- 感叹号、冒号可以使用 -->
<constant name="struts.multipart.maxSize" value="10240000"></constant>
<!-- 表示Action由Spring来进行创建,可以直接使用Spring依赖注入来注入 -->
<constant name="struts.objectFactory" value="spring" />
<!-- <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> -->
<package name="default" namespace="/" extends="struts-default">
<strong><span style="color:#FF0000;"><!-- 权限拦截器 -->
<interceptors>
<interceptor name="authInterceptor" class="authInterceptor"/>
<interceptor-stack name="authStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="authInterceptor"/>
</interceptor-stack>
</interceptors></span></strong>
<!-- 全局结果集 就是公共的结果集,所有Action只要找到相应的返回值,就会来相应的全局结果集找结果-->
<global-results>
<result name="error">/WEB-INF/jsp/inc/error.jsp</result>
<result name="login">/WEB-INF/jsp/login.jsp</result>
<result name="exception">/WEB-INF/jsp/inc/exception.jsp</result>
</global-results>
<!-- 定义异常处理界面 -->
<global-exception-mappings>
<exception-mapping result="exception" exception="org.test.ssh.exception.DocumentException"/>
</global-exception-mappings>
<action name="login" class="loginAction">
<result type="redirect" name="redirect">${url}</result>
</action>
<!-- 基于通配符的方式 -->
<!-- User_add -->
<action name="*_*" class="{1}Action" method="{2}">
<result>/WEB-INF/jsp/{1}/{2}.jsp</result>
<result name="input">/WEB-INF/jsp/{1}/{2}Input.jsp</result>
<result type="redirect" name="redirect">${url}</result>
<span style="color:#FF0000;"><strong><interceptor-ref name="authStack"/></strong></span>
</action>
</package>
</struts>
<span style="font-size:32px;color:#FF0000;"><strong> </strong></span>
下面是拦截器的代码:
<span style="font-size:18px;">package org.test.ssh.filter;
import org.springframework.stereotype.Component;
import org.test.ssh.model.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* 用struts拦截器做权限控制,这个方法不常用,一边用filter就能控制好了。
* @author asus_n56
*
*/
@SuppressWarnings("serial")
@Component("authInterceptor")
public class AuthInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
String an = invocation.getProxy().getActionName();//获取Action的名字
if (!an.startsWith("login")) {
User loginUser = (User)ActionContext.getContext().getSession().get("loginUser");
if (loginUser==null) {
return "login";
}
}
return invocation.invoke();
}
}</span>