struts2中实现自定义的拦截器,有三种方式:
1、实现interceptor接口
2、继承AbstractInterceptor这个抽象类
3、继承MethodFilterInteceptor类
这里我只用了第一种方式:
<interceptors > <interceptor name="InterceptorOne" class="com.nce.interceptor.MyInterceptorOne"></interceptor> </interceptors>
在*Action的配置文件中加入:这里使用loginAction
<action name="login" class="com.ncs.action.LoginAction"> <result name="success">Success.jsp</result> <result name="failure">Failure.jsp</result> <interceptor-ref name="InterceptorOne"></interceptor-ref> </action>
接下来就可以运行了,如果你的请求中有你输入的参数的话,那么你会在页面中看到这样的错:500; java.lang.NullPointerException
这是为什么呢?通过实现,我觉得在我们使用了自定义的拦截器以后,那么struts2默认的拦截器就没有使用了,而默认的拦截器就有把请求流中的值注入到属性中的功能,而我们自定义的拦截器是没有这个功能的,那么自然就要报空指针的错误了。那么最有效的方法就是在我们使用自定义的拦截器的同时也使用默认的拦截器。方法如下:
(一)在interceptors中加入:
<interceptors > <interceptor name="InterceptorOne" class="com.nce.interceptor.MyInterceptorOne"></interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="InterceptorOne"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors>
而在loginAction的配置中使用myStack
<action name="login" class="com.ncs.action.LoginAction"> <result name="success">Success.jsp</result> <result name="failure">Failure.jsp</result> <interceptor-ref name="myStack"></interceptor-ref> </action>
(二)直接将默认的拦截器放入loginAction的配置中
<action name="login" class="com.ncs.action.LoginAction"> <result name="success">Success.jsp</result> <result name="failure">Failure.jsp</result> <interceptor-ref name="InterceptorOne"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action>
这样就可以避免很多错误了。
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class MyInterceptorOne implements Interceptor{
public void destroy() { // TODO Auto-generated method stub }
public void init() { // TODO Auto-generated method stub }
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
System.out.println("begin to intercept...");
String result = invocation.invoke();
System.out.println("end to intercept...");
return result; } }
在配置文件中配置:
分享到:
相关推荐
在Struts2中,拦截器扮演着中间件的角色,它在Action执行前后进行处理,可以进行如日志记录、权限检查、数据验证等操作,极大地提高了代码的复用性和可维护性。 首先,我们需要理解拦截器的工作原理。在Struts2框架...
在Struts2中,每个Action执行前都会经过一系列预定义或自定义的拦截器。这些拦截器按照配置的顺序逐个执行,每个拦截器执行完毕后,会将控制权传递给下一个拦截器,直到最后一个拦截器执行完后再调用Action的`...
Struts拦截器是Java Web开发框架Struts2中的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,实现AOP(面向切面编程)的理念。动态代理则是Java提供的一种机制,允许在运行时创建接口的实现类实例...
其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。 intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
3. 定义完拦截器后,记得在Struts2配置文件中声明并引用它,以便在Action中使用。 五、应用场景 1. 权限验证:在执行Action前检查用户是否有执行相应操作的权限。 2. 数据校验:对请求参数进行合法性检查,确保...
在Struts2中,拦截器是一种动态拦截Action调用的对象。它允许开发者在Action执行之前、执行之后,或者在执行过程中根据需要插入自定义逻辑。拦截器可以被看作是一个过滤器,它拦截了Action的调用,并在调用前后执行...
在Struts2中,拦截器是一种非常重要的机制,它可以在Action执行前后进行一些预处理或后处理操作,比如验证、设置请求参数等。 #### 二、拦截器简介 拦截器可以看作是一种过滤器,它能够对用户的请求进行拦截,并在...
在本案例中,我们将深入探讨如何在Struts2中自定义拦截器来实现用户非法登录的验证。 一、Struts2拦截器的工作原理 在Struts2框架中,每个请求都会经过一系列预定义或自定义的拦截器,这些拦截器按照栈的形式执行。...
提到拦截器,使我不得不想起武侠剧中劫匪们常说的一句话:“此山是我开,此树是我栽,要打此路过,留下买路财!”。难不成程序中也有“打劫”的,说的没错,拦截器就是个打劫的。在现实生活中,劫匪劫的大都是钱财,...
Struts2 拦截器是框架中的一个重要组成部分,它允许开发者在Action执行前后插入自定义的处理逻辑,实现如日志记录、权限检查、事务管理等通用功能,无需在每个Action类中重复编写相同的代码。拦截器是基于Java的动态...
拦截器在Struts2中扮演着类似过滤器的角色,但更加强大和灵活。它们通过定义一系列预定义的或自定义的拦截器栈来处理请求,可以用于日志记录、权限验证、事务管理等多种用途。在这个登录控制的小Demo中,我们可能会...
在项目中使用Struts2时,我们需要配置struts2的主配置文件(struts.xml),定义Action、结果类型、拦截器栈等。Action是业务逻辑的入口点,Result表示一个操作完成后转向的页面或结果。拦截器是Struts2的一大特色,...
4. **文件上传API**:在Struts2中,通常使用`CommonsFileUpload`库来处理文件上传。这个库提供了`FileItem`接口,可以获取上传文件的信息,并将其保存到服务器的指定位置。 5. **安全注意事项**: - **防止文件...
Struts2内置了对OGNL的支持,可以方便地在JSP页面中使用OGNL表达式获取模型数据。 - **标签库**:Struts2提供了丰富的标签库,可以帮助开发者快速构建表单和页面元素,提高开发效率。 - **拦截器**:拦截器是Struts2...
拦截器在Struts2中扮演着重要的角色,它们可以在请求到达Action之前或之后执行特定的逻辑。 - **拦截器基础**:Struts2提供了默认的拦截器栈,如`defaultStack`,包含了处理参数绑定、验证、准备、执行Action等一...
在Struts2中,实现文件上传主要依赖于框架内部的文件上传拦截器(FileUploadInterceptor)。当需要上传单个文件时,只需要在Action类中定义一个普通的`File`类型的属性即可;对于多个文件的上传,则需要使用`List...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者插入自定义的逻辑来扩展或增强Action执行的流程。在这个“Struts2拦截器的简单登录应用”中,我们将深入理解如何利用拦截器实现用户登录验证。 ...
3. 使用过滤器或拦截器来限制不安全的HTTP请求头。 4. 对敏感信息进行加密处理,防止数据泄露。 5. 开发过程中采用静态代码分析工具,及早发现潜在的安全问题。 总的来说,Struts2漏洞的检测和预防是保障Web应用...