struts2拦截器是struts框架的核心功能之一。首先,struts框架所实现的自动数据填充功能就是利用拦截器来实现的。这里主要是来总结一下这段时间学习拦截的器的心得。
很明显拦截器所要做的工作是预处理或者后加工。框架本身所实现的参数填充就是在预处理阶段。类型转换中分别在预处理和后加工阶段进行,在预处理阶段把视图传来的字符串数据转化成相应的java数据类型,在业务处理完成后把结果类型再转化为字符串到达结果页面进行显示。
总结一下个人自定义拦截器的使用方法:
1.首先建立拦截器类来实现拦截器的逻辑功能。必须实现Interceptor接口
2.配置struts.xml来添加拦截器。
3.将拦截器与相应的动作联系在一起。
4.测试拦截器。
这里以我们最常用的身份验证来实现一个自定义的拦截器。
这里首先实现了拦截器类的逻辑功能,Interceptor接口中有三个方法destory、init、intercept三个方法。其中init和destory主要处理初始化和清理资源工作,这里不用进行实现。主要的业务逻辑都放在intercept中,这里主要的逻辑功能是检测用户是否登录,若登录了则invocation.invoke()表明继续执行,若未登录则转到一个公共的视图-Log,这是在struts.xml中声明的一个公共视图,也就是登录界面。
这里主要进行的是配置拦截器,在struts.xml中配置拦截器,就如同生命action相似。这里值得注意的是我们如果自定义了拦截器并且把它与某个动作相关联,那么系统的拦截器就会被默认屏蔽,则struts2的大部分核心工作都没法完成,所以我们的解决办法有两种,一是我们在为每个动作添加拦截器的时候同时添加上系统默认的拦截器;二是我们将系统拦截器与我们自己编写的拦截器一同包装成拦截器栈然后使用。这里我们使用第二种方式,因为这样便于修改和维护。
这里有一个action为DeleteStudent,我们为这个动作添加拦截器,也就是如果你想进行删除学生的操作,你必须有权限,也就是必须登录了。
用<interceptor-ref name="permissionStack"/>这句话将我们封装的拦截器栈与此action联系在一起。这样我们自定义的拦截器就可以正常工作了。如果没有登录,你就没有删除学生的权限。
当然我们也可以使用
<default-interceptor-ref name="permissinStack"/>来使我们自定义的拦截器栈成为默认拦截器,也就是为每个action添加此拦截器栈。
分享到:
相关推荐
自定义拦截器需要继承`org.apache.struts2.interceptor.Interceptor`接口或实现`com.opensymphony.xwork2.interceptor.Interceptor`抽象类,并实现相应的拦截方法。 6. **AOP的优势**: - AOP使开发者能够将关注点...
拦截器是Struts2的一大特色,它们在Action调用前后执行,可以实现日志记录、权限检查、事务管理等通用功能,极大地提高了代码复用性和可维护性。 **5. OGNL(Object-Graph Navigation Language)** OGNL是Struts2中...
实际开发中,可以结合业务需求创建自定义拦截器,例如实现一个登录拦截器,检查每次请求是否已登录,未登录则跳转到登录页面。这样可以有效地提升代码的复用性和可维护性。 总之,Struts 2的拦截器机制是其强大功能...
总结起来,这个"Struts拦截器案例——登陆"涵盖了Struts2拦截器的基本使用、登录验证、数据库操作以及异常处理等多个方面。通过学习这个案例,开发者可以更好地理解和掌握Struts2框架中的拦截器机制,从而在实际项目...
拦截器(Interceptor)是Struts2的另一个重要组成部分,它允许在Action执行前后插入自定义逻辑,如日志记录、权限验证等。 三、MVC模式 在Struts2中,Model代表业务逻辑,View负责展示数据,Controller则协调Model...
- 如何创建自定义拦截器类,并在`struts.xml`中配置。 - 如何通过注解或者XML配置将拦截器附加到Action上。 - 如何使用预定义的拦截器,如`Exception`、`Params`、`Validation`等。 - 如何调试和测试拦截器。 总的...
- 拦截器的原理和如何自定义拦截器。 - 值栈(Value Stack)的作用和实现方式。 - OGNL(Object-Graph Navigation Language)如何用于表达式语言和在Struts2中的应用。 - I18N(国际化)和L10N(本地化)是如何在...
2. **创建拦截器**:在saif-0.1.jar中,开发者可能已经定义了一些继承自`org.apache.struts.interceptor.Interceptor`接口的类。这些类实现了拦截器的逻辑,如`doIntercept()`方法。 3. **配置拦截器**:在struts-...
在Struts2中,通过自定义拦截器,我们可以轻松地实现这一功能。 首先,我们需要理解Struts2拦截器的工作原理。拦截器是基于Java的动态代理模式实现的,它们形成一个拦截器栈,当请求到达Action时,会按照栈中定义的...
在深入解析Struts2的章节中,你可能会了解到如何创建自定义拦截器以及如何将它们链式组合,以实现复杂的业务逻辑。 其次,Struts2的Action是业务逻辑的主要载体。每个Action对应一个特定的用户请求,并负责处理该...
1. **创建自定义拦截器类** - 在项目中创建一个新的Java类,继承自`Interceptor`接口。 - 实现`intercept`方法,该方法会在Action执行前后被调用。 2. **实现拦截逻辑** - 在`intercept`方法中,检查当前用户的...
- 在Struts.xml配置文件中添加自定义拦截器,并设置其适用范围。 ```xml <result name="success">/home.jsp ``` #### 总结 通过以上步骤,我们可以实现一个简单的登录验证拦截器,它可以...
本文主要介绍了Struts2框架的基本概念,并通过一个简单的自定义拦截器实例详细讲解了如何创建和配置拦截器。Struts2框架的强大之处在于其高度可定制性和灵活性,开发者可以根据实际需求定制各种功能,从而构建出高效...
开发者可以创建自定义拦截器,实现特定的业务逻辑,使得代码结构更加清晰,可复用性增强。 ValueStack是Struts2中用于数据传递和展示的关键组件。它是一个对象栈,存放着Action上下文中的数据,可以方便地在Action...
在这个"struts2实现的简单登陆 附加拦截器防止重复提交"的项目中,我们将深入探讨Struts2如何处理用户登录以及如何通过拦截器来防止重复提交的问题。 首先,我们来理解一下Struts2的核心概念。Struts2框架基于...
Interceptor是拦截器,类似于AOP(面向切面编程)的概念,允许在Action调用前后插入自定义逻辑,如日志记录、权限检查等。Result则负责将Action执行后的结果呈现给用户,可以是JSP、JSON、XML等不同格式。 Struts2...