根据目前掌握的知识来看,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>
分享到:
相关推荐
Servlet和Struts Action是两种常见的Java Web开发组件,它们在多线程环境下运行时可能存在线程安全问题。线程安全是指在多线程环境中,一个类或者方法能够正确处理多个线程的并发访问,保证数据的一致性和完整性。 ...
Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它被Struts2框架广泛用于视图层与模型层之间的数据...
在Struts2中,Action类是处理用户请求的核心组件,它负责接收前端传递的参数并进行业务逻辑处理。本文将详细介绍Struts2中Action获取参数的三种主要方式,并通过实际代码示例来阐述每种方法的使用。 1. **通过...
拦截器可以通过在 struts.xml 文件中配置或在 Action 中通过注入拦截器来实现。 8. Struts2 的国际化和本地化: Struts2 的国际化和本地化可以通过使用资源文件来实现。资源文件可以存放在类路径下或在 Web 项目的...
8. **Action的属性注入与调用**:在Struts2中,Action的属性可以通过配置文件进行注入,而Action的调用则依赖于配置的拦截器。拦截器会负责调用Action的execute方法,以及处理请求参数的设置和返回结果的解析。 9. ...
2. 配置Struts2-Spring插件,Action类可以直接声明Spring管理的bean作为成员变量。 五、异常处理 1. Struts2提供了一套完善的异常处理机制,通过全局异常映射(Global Exception Mapping)可以捕获并处理各类运行...
在实际开发中,你需要了解Struts2的基本架构,包括Action、Result、Interceptor等核心概念,以及配置文件struts.xml的作用。同时,掌握OGNL的使用,理解其表达式和变量引用的方式。另外,安全是使用Struts2时不可...
通过这个接口,Struts2框架会在执行execute方法前自动将HttpServletResponse对象注入到Action类的成员变量中。例如: ```java public class MyAction extends ActionSupport implements ServletResponseAware { ...
在"struts2demo全注解"这个主题中,我们将深入探讨Struts2如何通过注解实现Action类的配置,以及如何封装请求参数到Map对象中。 在传统的Struts2配置中,我们通常会在`struts.xml`配置文件中定义Action、结果类型、...
- **Struts1**:Action类采用单例模式,意味着一个Action实例处理所有请求,这要求Action及其成员变量必须是线程安全的,增加了开发的复杂性。 - **Struts2**:Action对象为每个请求创建一个新实例,消除了线程...
5. **上下文访问**:Struts2 ActionContext提供了一个全局上下文,可以在OGNL表达式中访问请求、session、application等范围的变量。 6. **值栈**:Struts2中的值栈是OGNL的主要工作区域,它存储了Action对象和其他...
3. **配置Struts2**:在`struts.xml`配置文件中,定义Action及其对应的Action方法,设置结果视图。比如: ```xml <package name="default" namespace="/" extends="struts-default"> <action name="helloWorld" ...
同时,也需要正确配置Struts2的过滤器,限制不安全的OGNL表达式,并且避免在Action配置中使用未验证的用户输入。 在源码层面,开发者应该遵循最佳实践,如: 1. 对所有用户输入进行严格的验证和清理,避免使用不...
1. 在Action添加成员属性接受参数:Action类的成员变量可以直接作为请求参数的接收者,Struts2会自动将请求参数值注入到对应的属性中。 2. 域模型(Domain Model):域模型对象是用于封装业务数据的实体类,可以被...
在Struts2文件上传中,通常会有一个成员变量用于存储上传文件的MIME类型,这个变量的名称应该是`uploadContentType`而不是`uploadContextType`。尽管这个错误并不会导致程序无法运行,但修正它能提高代码的可读性和...
- **实现Action接口**:确保Action类实现了Action接口,以便Struts2框架能够识别和调用。 - **增加数据校验**:使用Struts2提供的验证机制,在Action中定义验证规则。 **2.4 深入配置文件** - **struts.properties...
在图片上传的场景中,Struts2提供Action类来接收用户上传的图片文件,同时可以通过配置Struts2的配置文件(struts.xml)来定义Action的映射路径和处理方法,使得前端请求能够正确地路由到后端的处理逻辑。...
以下是Struts2的一些核心知识点,掌握这些内容能够帮助你在面试中表现出色。 1. **MVC模式的优势**: MVC模式将应用程序分为三个层次:视图(View)、模型(Model)和控制器(Controller)。这种分离有利于项目...
首先,需要在Struts2的Action中注入Hibernate的SessionFactory,然后通过SessionFactory获取Session,执行CRUD操作。为了保持良好的设计原则,通常会将数据库操作封装在DAO(Data Access Object)层,Action只负责...