`
netfork
  • 浏览: 488495 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Struts2中,能够限制Action的成员变量的注入吗? 

阅读更多
根据目前掌握的知识来看,Url请求中的参数,均可以通过Action的set方法被注入到Action中。

现在的问题是,Action中的一些成员变量不想被注入。
如上传文件时,存放服务器上传的路径是通过struts.xml中的param设定的,
同样,Action中也需要对应这个路径的set方法,如:public void setUploadDir(String uploadDir)
这样做的话,如果访问者通过在请求的Url增加一个uploadDir="e:\\"参数,即可以将存放上传文件的路径修改,
从而可能对服务器任意路径上传文件。

由于刚接触Struts2不长时间,想问一下,可以限制通过Action中的set方法的注入吗?

-------------------------------

修改
此问题被管理员踢到“问答”栏目了,参考以下地址。
http://www.iteye.com/problems/7309

也通过站内短信问了几个人,都不能回答我的问题。

从目前来看,最好的办法就是我想到的方法了:
看来,实在不行,我只能调一下staticParams和params的位置了。
这样,使用struts.xml中的设定覆盖来自url的参数。

希望还有更好的办法。

-------------------------------
感觉 pstinghua 的方法比较巧,请参考下文。
 <action name="..." class="...">  
   <interceptor-ref name="defaultStack">    
     <param name="params.excludeMethods">setUploadDir</param>    
   </interceptor-ref>  
 </action>  


分享到:
评论
4 楼 netfork 2008-11-21  
jsea 写道

不过刚刚又考虑了一下,貌似有一种非常规的解决方案:因为 struts.xml 中的 param 总会先于请求的参数传入,可以在 set 方法中进行一个判断,如果该属性已经被设置值了,就不产生变化了。 不过还是不推荐这么做了。


是啊,这样做显然感觉挺怪异的。
3 楼 netfork 2008-11-21  
jsea 写道

我也想知道有没有这种限制。以前做的一个项目,也曾经想碰到过同样的问题,没找到这种限制的方法。因为项目是和spring整合的,所以最后取消set方法,然后用spring注入解决问题。


实在不行,可能只能如此了。我在[问答]里问了,一个人回答的结果如下,但是我试验了下不行。
http://www.iteye.com/problems/7309
2 楼 jsea 2008-11-21  
不过刚刚又考虑了一下,貌似有一种非常规的解决方案:
因为 struts.xml 中的 param 总会先于请求的参数传入,可以在 set 方法中进行一个判断,如果该属性已经被设置值了,就不产生变化了。
不过还是不推荐这么做了。
1 楼 jsea 2008-11-21  
我也想知道有没有这种限制。
以前做的一个项目,也曾经想碰到过同样的问题,没找到这种限制的方法。因为项目是和spring整合的,所以最后取消set方法,然后用spring注入解决问题。
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    servlet与Struts action线程安全问题分析

    Servlet和Struts Action是两种常见的Java Web开发组件,它们在多线程环境下运行时可能存在线程安全问题。线程安全是指在多线程环境中,一个类或者方法能够正确处理多个线程的并发访问,保证数据的一致性和完整性。 ...

    struts2 OGNL表达式

    Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它被Struts2框架广泛用于视图层与模型层之间的数据...

    struts2中Action获取参数的3种方式代码

    在Struts2中,Action类是处理用户请求的核心组件,它负责接收前端传递的参数并进行业务逻辑处理。本文将详细介绍Struts2中Action获取参数的三种主要方式,并通过实际代码示例来阐述每种方法的使用。 1. **通过...

    Struts2知识点

    拦截器可以通过在 struts.xml 文件中配置或在 Action 中通过注入拦截器来实现。 8. Struts2 的国际化和本地化: Struts2 的国际化和本地化可以通过使用资源文件来实现。资源文件可以存放在类路径下或在 Web 项目的...

    struts2学习心得

    8. **Action的属性注入与调用**:在Struts2中,Action的属性可以通过配置文件进行注入,而Action的调用则依赖于配置的拦截器。拦截器会负责调用Action的execute方法,以及处理请求参数的设置和返回结果的解析。 9. ...

    struts2总结项目总结

    2. 配置Struts2-Spring插件,Action类可以直接声明Spring管理的bean作为成员变量。 五、异常处理 1. Struts2提供了一套完善的异常处理机制,通过全局异常映射(Global Exception Mapping)可以捕获并处理各类运行...

    struts2框架JAR包

    在实际开发中,你需要了解Struts2的基本架构,包括Action、Result、Interceptor等核心概念,以及配置文件struts.xml的作用。同时,掌握OGNL的使用,理解其表达式和变量引用的方式。另外,安全是使用Struts2时不可...

    Struts2在Action中获得Response对象的四种方法

    通过这个接口,Struts2框架会在执行execute方法前自动将HttpServletResponse对象注入到Action类的成员变量中。例如: ```java public class MyAction extends ActionSupport implements ServletResponseAware { ...

    struts2demo全注解

    在"struts2demo全注解"这个主题中,我们将深入探讨Struts2如何通过注解实现Action类的配置,以及如何封装请求参数到Map对象中。 在传统的Struts2配置中,我们通常会在`struts.xml`配置文件中定义Action、结果类型、...

    struts1与struct2的不同

    - **Struts1**:Action类采用单例模式,意味着一个Action实例处理所有请求,这要求Action及其成员变量必须是线程安全的,增加了开发的复杂性。 - **Struts2**:Action对象为每个请求创建一个新实例,消除了线程...

    Struts2 使用OGNL表达式

    5. **上下文访问**:Struts2 ActionContext提供了一个全局上下文,可以在OGNL表达式中访问请求、session、application等范围的变量。 6. **值栈**:Struts2中的值栈是OGNL的主要工作区域,它存储了Action对象和其他...

    典型的struts2例子

    3. **配置Struts2**:在`struts.xml`配置文件中,定义Action及其对应的Action方法,设置结果视图。比如: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;action name="helloWorld" ...

    Struts2漏洞?

    同时,也需要正确配置Struts2的过滤器,限制不安全的OGNL表达式,并且避免在Action配置中使用未验证的用户输入。 在源码层面,开发者应该遵循最佳实践,如: 1. 对所有用户输入进行严格的验证和清理,避免使用不...

    Struts2 开发笔记

    1. 在Action添加成员属性接受参数:Action类的成员变量可以直接作为请求参数的接收者,Struts2会自动将请求参数值注入到对应的属性中。 2. 域模型(Domain Model):域模型对象是用于封装业务数据的实体类,可以被...

    Struts2实现文件上传

    在Struts2文件上传中,通常会有一个成员变量用于存储上传文件的MIME类型,这个变量的名称应该是`uploadContentType`而不是`uploadContextType`。尽管这个错误并不会导致程序无法运行,但修正它能提高代码的可读性和...

    struts2教程我在培训时用的

    - **实现Action接口**:确保Action类实现了Action接口,以便Struts2框架能够识别和调用。 - **增加数据校验**:使用Struts2提供的验证机制,在Action中定义验证规则。 **2.4 深入配置文件** - **struts.properties...

    ssh框架用struts2 hibernate实现图片的上传源码

    在图片上传的场景中,Struts2提供Action类来接收用户上传的图片文件,同时可以通过配置Struts2的配置文件(struts.xml)来定义Action的映射路径和处理方法,使得前端请求能够正确地路由到后端的处理逻辑。...

    struts2中核心知识点(职场必备)

    以下是Struts2的一些核心知识点,掌握这些内容能够帮助你在面试中表现出色。 1. **MVC模式的优势**: MVC模式将应用程序分为三个层次:视图(View)、模型(Model)和控制器(Controller)。这种分离有利于项目...

    Struts2+Hibernate开发环境搭建

    首先,需要在Struts2的Action中注入Hibernate的SessionFactory,然后通过SessionFactory获取Session,执行CRUD操作。为了保持良好的设计原则,通常会将数据库操作封装在DAO(Data Access Object)层,Action只负责...

Global site tag (gtag.js) - Google Analytics