我们做开发访问的都是action类,所以添加过滤器就没添加拦截器简单、方便,因为拦截器只拦截action,而过滤器神马都拦截,从效率就可以看出拦截器的效率高
呵呵,废话不多说,现在开始配置:
拦截器配置步骤:
一、先写一个拦截器,因为我们重点在配置,这里我写了个登录拦截器(LoginInterceptor .java),继承AbstractInterceptor
package com.kaishengit.web.interceptor;
import java.util.Map;
import java.util.Set;
import com.kaishengit.pojo.Employee;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.TextParseUtil;
public class LoginInterceptor extends AbstractInterceptor{
private static final long serialVersionUID = 1L;
private String excludeActionName;//剔除的拦截方法
private String sessionName;//用户名在session中存放的key值
@Override
public String intercept(ActionInvocation invocation) throws Exception {
String actionName = invocation.getProxy().getActionName();//获取当前访问的action名字
Set<String> set = TextParseUtil.commaDelimitedStringToSet(excludeActionName);
if(set.contains(actionName)){
return invocation.invoke();
}else{
Map<String, Object> session = invocation.getInvocationContext().getSession();
Employee employee = (Employee) session.get(sessionName);
if(employee == null){
return "login";//没有登录,跳转到登录页
}else{
return invocation.invoke();
}
}
}
//get set
public String getExcludeActionName() {
return excludeActionName;
}
public void setExcludeActionName(String excludeActionName) {
this.excludeActionName = excludeActionName;
}
public String getSessionName() {
return sessionName;
}
public void setSessionName(String sessionName) {
this.sessionName = sessionName;
}
}
二、在struts.xml中配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.convention.result.path" value="/WEB-INF/views"/>
<!--配置Struts-convention注解的默认父包 -->
<constant name="struts.convention.default.parent.package" value="myPackage"/>
<!--继承Struts-convention注解插件的xml -->
<package name="myPackage" extends="convention-default">
<interceptors>
<!--配置自己写的登录拦截器 -->
<interceptor name="loginInterceptor" class="com.kaishengit.web.interceptor.LoginInterceptor"/>
<!-- 配置一个自己的拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="loginInterceptor">
<param name="sessionName">employee</param>
<param name="excludeActionName">index,login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
<global-results>
<result name="login" type="redirectAction">index.action</result>
</global-results>
</package>
</struts>
--end---
分享到:
相关推荐
Struts2在com.opensymphony.xwork2.interceptor.annotations包中定义了3个拦截器注解类型。
用注解(annotation)方式配置struts2 (webwork) 中action的拦截器(interceptor)
9.2.2 使用自动连线将依赖注入到动作、拦截器和结果 205 9.3 为什么在Struts 2中使用JPA 207 9.3.1 使用JPA和Hibernate建立项目 208 9.3.2 基于Spring管理JPA编写代码 212 9.4 小结 216 第10章 探索验证框架 217 ...
4.使用默认的execAndWait拦截器 33 5. TokenInterceptor防止表单重复提交。 34 6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选...
18.3 使用DataSourceInjectorInterceptor拦截器 269 18.4 小结 273 第19章定制结果类型 274 19.1 概述 274 19.2 编写一个自定义的结果类型 274 19.3 使用新的结果类型 277 19.4 小结 279 第20章 Velocity 280...
* Interceptor:Struts2的拦截器机制,用于处理请求和响应。 * Result:Struts2的结果机制,用于处理视图层的输出。 Struts2的工作流程 Struts2的工作流程包括: 1. 用户请求到达Struts2框架。 2. Struts2框架将...
18.3 使用DataSourceInjectorInterceptor拦截器 269 18.4 小结 273 第19章 定制结果类型 274 19.1 概述 274 19.2 编写一个自定义的结果类型 274 19.3 使用新的结果类型 277 19.4 小结 279 第20章 Velocity 280 ...
`@InterceptorRef("defaultStack")`指定了使用defaultStack拦截器栈。 Controller Controller是Struts2中负责处理请求和响应的组件。在上面的代码中,我们可以看到Controller的配置是通过继承ActionSupport类来...
{1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}...