When your Action class needs to access the HTTP session object implement
the SessionAware interface and override the setSession
method.
ps:
实现 SessionAware 的 setSession 方法得到 session,但是这里的session是Map型的,struts2框架会做Map 和HttpSession之间的转换。
public void setSession(Map<String, Object) session) {
userSession = session ;
}
Be sure
to also implement the ParameterNameAware interface and override the
acceptableParameterName
method to mitigate a potential security
vulnerability
.
PS:
为了确保使用session的安全性,我们最好再实现ParameterNameAware接口的acceptableParameterName方法,具体如下 。
当参数的名字里包含session,request该方法会返回false,告诉struts2 framework 忽略这些参数。
public boolean acceptableParameterName(String parameterName) {
boolean allowedParameterName = true ;
if ( parameterName.contains("session") || parameterName.contains("request") ) {
allowedParameterName = false ;
}
return allowedParameterName;
}
If you have multiple actions that implement SessionAware
then consider modifying the params interceptor's excludeParams value as
part of your Struts 2 package setup。
PS:
如果你包里许多的action里实现SessionAware
可以如下做统一做安全保证配置,就可以不用再去实现ParameterNameAware
接口的acceptableParameterName
方法了。
<package name="basicstruts2" extends="struts-default">
<interceptors>
<interceptor-stack name="appDefault">
<interceptor-ref name="defaultStack">
<param name="params.excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="appDefault" />
分享到:
相关推荐
Struts2是一个非常流行的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Web开发中,权限检查和控制重复登录是关键的安全措施,...在使用和学习过程中,应结合实际场景,确保代码的健壮性和安全性。
通过以上步骤,你可以在Struts2的Action中灵活地使用session来传递和存储数据。不过,对于大型应用,更推荐使用更高级的状态管理策略,如视图模型、缓存或数据库,以提高性能和可扩展性。同时,也要注意优化session...
在JavaEE应用开发中,Struts2框架是一个广泛使用的MVC框架,它提供了一种有效的方式来组织和控制应用程序的行为。然而,随着Web应用的发展,防止重复提交成为一个重要的问题,尤其是在处理金融交易、投票等关键操作...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Web表单提交中,防止重复提交是一个常见的需求,而Struts2的Token机制就是为了应对这一问题而设计的。Token机制能确保...
这个API帮助文档是开发者在使用Struts2框架时的重要参考资料,它详细阐述了框架的各种组件、类库和方法,有助于理解并有效利用Struts2的功能。 1. **Struts2核心组件** - `struts2-core`:这是Struts2框架的核心...
Struts2是一个MVC框架,用于构建可维护、可扩展的Web应用程序,而Apache Shiro则是一个强大的安全管理框架,处理认证、授权、会话管理和加密等安全相关任务。这两者的完美整合能够帮助开发者在Web应用中轻松实现用户...
- **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...
通过以上步骤,我们成功地使用Struts2和session实现了用户登录检查。在实际开发中,可能还需要考虑其他因素,如防止跨站请求伪造(CSRF)、session超时等安全问题。但基本的登录检查机制就是这样,它确保了只有已...
然而,需要注意的是,过多使用Session会增加服务器内存开销,可能导致Session溢出,因此需要合理控制Session的使用和生命周期。 在"testStruts1_001"这个示例项目中,我们可以看到如何实际应用上述概念。项目可能...
这个"struts2 令牌使用例子"是一个很好的实践教程,帮助开发者理解如何在实际应用中实施这一安全策略。 首先,我们需要了解什么是CSRF攻击。这种攻击方式是恶意用户通过欺骗受害者的浏览器发送一个非本意的请求到...
Struts2提供了安全相关的拦截器和插件,如CSRF防护、XSS防护等,开发者需要正确配置和使用以保障系统安全。 十一、异常处理 Struts2允许自定义异常处理策略,可以捕获并优雅地处理业务逻辑中的异常,提供友好的错误...
7. **OGNL(Object-Graph Navigation Language)**:是Struts2默认使用的表达式语言,用于在Action与视图之间传递和表达数据。 **Struts2的配置方式:** - **XML配置**:主要通过`struts.xml`文件进行配置,包括...
- 使用Struts2时要注意安全问题,如SQL注入、XSS攻击等,合理使用Struts2的安全拦截器。 - 理解MVC模式的重要性,避免在JSP中编写过多的业务逻辑。 - 保持良好的编程习惯,如代码注释、命名规范等。 通过这个...
综上所述,Spring、Struts2和iBatis结合使用,可以有效地解决Web应用中的异地登录问题。通过`HttpSessionBindingListener`接口,我们可以在session对象发生变化时进行相应的处理,确保系统的安全性和用户体验。同时...
8. **JSP和Struts2标签**:在视图层,可能会使用JSP页面和Struts2提供的标签库来展示数据和处理用户交互。 这个实例项目对于学习和理解Struts2和Hibernate的整合应用具有很高的价值,通过实际操作,开发者能够深入...
6. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,它使得在视图层与模型层之间传递数据变得简单直观。 7. **集成测试**:Struts2提供了一套测试工具,使得对Action的单元测试变得...
Struts2和Hibernate是两种非常流行的Java开发框架,它们分别用于处理MVC(Model-View-Controller)架构的控制层和持久层。Struts2是一个强大的MVC框架,提供了丰富的功能来处理用户请求,而Hibernate则是一个对象...
6. **配置文件**:包括`struts.xml`(Struts2的核心配置文件)和`hibernate.cfg.xml`(Hibernate的配置文件)。`struts.xml`用于定义Action、Result和Interceptor的映射,而`hibernate.cfg.xml`用于配置数据库连接和...
Struts 2整合Struts 1,允许开发者利用Struts 1已有的投资,同时享受Struts 2带来的优势,如增强的类型安全和更强大的拦截器机制。 在《Struts 2权威指南--基于WebWork核心的MVC开发》这本书中,作者李纲深入浅出地...
综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。