.从ActionSupport继承的基类中,获取全部request值:
public abstract class BaseAction extends BaseAction {
//自动注入request的参数,到日志
Map<String,String[]> params = getRequest().getParameterMap();
if(params!=null && params.size()>0) {
for(String key : params.keySet()){
extInfo.put(key,Arrays.toString(params.get(key)));
}
}
2.拦截器,执行后拦截action返回值:
public class DefaultParamInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation actioninvocation) throws Exception {
String result = actioninvocation.invoke();
Object a2 = actioninvocation.getStack().findValue("message");
System.out.println(a2);
return result;
}
}
。。这两段用来记日志,当然是比较爽的了,呵呵。
3.拦截器里面获取request
HttpServletRequest request = ServletActionContext.getRequest();
这样就不需要绕来绕去了
4. ActionInvocation.getAction()也是一个比较有趣的方法, 通过这里拿到当前action的类名,那么我们就可以用规则来匹配,使得拦截器只拦截指定action。
5. Filter 在Interceptor 之前执行。 因为Filter是servlet规范,对request做处理;而Interceptor只是struts2Action 代理实例之后的方法拦截器。
6. Interceptor 分Action执行前拦截,执行后拦截。 执行前拦截比较好理解,Interceptor配置越靠前,就越先执行。
执行后拦截呢???? 留作思考把,呵呵。
notice:
7.Interceptors must
be stateless and not assume that a new instance will be created for each request or Action.
Interceptors may choose to either short-circuit the ActionInvocation
execution and return a return code
(such as Action.SUCCESS
), or it may choose to do some processing before
and/or after delegating the rest of the procesing using ActionInvocation.invoke()
.
拦截器并不是线程安全的,也不保证每次请求都会实例化新对象,所以一定不要将拦截器做成有状态,简单说,就是不要定义类范围的变量。
分享到:
相关推荐
6. **简单拦截器**(Struts_2200_SimpleInterceptor):简单的拦截器通常用于基础的业务逻辑,比如记录请求时间、用户信息等,它们可以帮助我们在不修改Action代码的情况下增加额外的行为。 通过这些示例,你可以...
2. **Interceptor**(拦截器):拦截器是Struts2的一大特色,它允许开发者在Action执行前后插入自定义的处理逻辑,如权限验证、日志记录、性能监控等。拦截器的组合使用可以构建出强大的功能模块。 3. **Result**:...
5. **利用拦截器增强功能**:拦截器是Struts 2中的一个非常重要的特性,它可以在请求处理的不同阶段执行特定的操作。通过合理地利用拦截器,可以极大地提高应用程序的灵活性和可维护性。 6. **测试与优化**:完成...
- **备份**:在开始升级之前,确保备份现有的项目代码和配置文件,以防万一出现问题时可以回滚。 - **检查依赖**:了解当前项目对Struts2的依赖情况,包括直接依赖和其他库可能间接依赖的Struts2版本。 - **了解...
2. **拦截器(Interceptor)**:拦截器是Struts2的重要组成部分,它允许在Action执行前后插入自定义的逻辑。在这个在线考试系统中,拦截器可能被用来实现限时功能,检查用户是否在规定时间内完成答题,超时则自动...
通过配置Struts2的XML配置文件(struts.xml),可以定义Action、结果类型、拦截器等,实现请求的映射和处理流程。 **JasperReports** 是一个开源的报告生成库,它支持多种数据源,如数据库、CSV、XML等,可以生成...
Struts2提供了丰富的拦截器、结果类型和插件,使得开发者可以轻松地实现表单验证、国际化、文件上传等功能,大大提高了开发效率。 【Hibernate】是Java领域的一个对象关系映射(ORM)框架,它简化了数据库操作,...
- **安全配置**:学习并遵循官方发布的最佳安全实践,例如正确配置Struts2的安全拦截器,防止XSS、CSRF等攻击。 - **依赖注入**:避免使用Action级别的字段注入,以减少潜在的安全风险。 6. **新特性**: - **...
- **配置安全拦截器**:正确配置Struts的拦截器以防止未授权的OGNL表达式执行。 - **输入验证**:对用户提交的数据进行严格的输入验证,限制允许的字符和格式。 - **日志监控**:密切关注系统日志,以便尽早发现...
3. **安全配置**:理解并应用Struts2的安全配置指南,包括限制不必要的插件,设置合适的过滤器和拦截器,以及对用户输入进行严格的验证和清理。 4. **监控**:在升级后,持续监控系统日志和性能,以便及时发现任何...
2. **拦截器(Interceptors)**: 拦截器是Struts2的一个强大特性,它们允许在Action执行前后插入自定义的处理逻辑,如日志记录、权限检查、事务管理等。通过配置不同的拦截器栈,可以实现灵活的控制流程。 3. **配置...
- **配置文件**:struts.xml是Struts2的主要配置文件,用于定义Action、结果类型、拦截器栈等,实现对应用程序的控制。 - **拦截器**:如`TilesPlugin`用于页面布局,`ValidationInterceptor`用于表单验证,`...
它继承了Struts1的优点,并引入了拦截器(Interceptor)机制,增强了灵活性和可扩展性。Struts2与Spring集成,可以实现Action类的依赖注入,提高代码的可测试性和可维护性。 **Maven** Maven是一个项目管理和综合...
例如,新版本可能引入新的拦截器或者动作配置选项。开发者需要对照官方文档,确认并更新相应的配置项。 4. **插件兼容性**:如果你的应用使用了Struts2的插件,比如Struts2-dojo-plugin或Struts2-convention-plugin...
3. **Struts2拦截器**:拦截器是Struts2的一个重要特性,它们是实现了特定接口的类,可以在Action调用前后执行自定义逻辑。例如,用于登录验证、权限控制、日志记录等功能。在论坛项目中,可能会有用于身份验证和...
Struts2是一个基于Java的开源Web应用框架,它继承了Struts1的优点,并在此基础上增加了许多新特性,如拦截器(Interceptor)、结果类型(Result Type)等。Struts2框架通过简化开发过程并提供一系列强大的功能,帮助...
在Struts2中,核心组件包括Action类、配置文件(struts.xml)、拦截器(Interceptors)和结果类型(Result)。Action类是业务逻辑的载体,负责处理来自客户端的请求。配置文件定义了Action与URL的映射关系,以及...
Struts2的核心特性包括拦截器、插件架构、强大的动作类以及灵活的配置选项。 在整合MySQL和Struts2时,我们需要完成以下关键步骤: 1. **环境配置**:确保你已经在系统上安装了JDK、MySQL服务器、以及Struts2相关...
- Struts2是Struts框架的升级版,引入了拦截器(Interceptor)的概念,增强了异常处理、国际化、主题模板等功能,使得业务逻辑和表现层分离更彻底。 - Struts2的核心控制器是ActionServlet,它负责接收HTTP请求,...
Struts2提供了丰富的功能,如拦截器、插件体系、国际化支持、强大的动作和结果类型,以及对Ajax的内置支持。 在使用Struts2.0开发包时,以下是一些关键知识点和最佳实践: 1. **配置与依赖管理**: - 首先,需要...