org.apache.struts2.interceptor.ServletConfigInterceptor类中的这段代码可知
public String intercept(ActionInvocation invocation) throws Exception { final Object action = invocation.getAction(); final ActionContext context = invocation.getInvocationContext(); if (action instanceof ServletRequestAware) { HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); ((ServletRequestAware) action).setServletRequest(request); } if (action instanceof ServletResponseAware) { HttpServletResponse response = (HttpServletResponse) context.get(HTTP_RESPONSE); ((ServletResponseAware) action).setServletResponse(response); } if (action instanceof ParameterAware) { ((ParameterAware) action).setParameters((Map)context.getParameters()); } if (action instanceof ApplicationAware) { ((ApplicationAware) action).setApplication(context.getApplication()); } if (action instanceof SessionAware) { ((SessionAware) action).setSession(context.getSession()); } if (action instanceof RequestAware) { ((RequestAware) action).setRequest((Map) context.get("request")); } if (action instanceof PrincipalAware) { HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); if(request != null) { // We are in servtlet environment, so principal information resides in HttpServletRequest ((PrincipalAware) action).setPrincipalProxy(new ServletPrincipalProxy(request)); } } if (action instanceof ServletContextAware) { ServletContext servletContext = (ServletContext) context.get(SERVLET_CONTEXT); ((ServletContextAware) action).setServletContext(servletContext); } return invocation.invoke(); }
相关推荐
在Struts2中,Action类是处理用户请求的核心组件,它封装了业务逻辑。为Action的属性注入值是Struts2的一个关键特性,使得我们可以方便地从请求参数中获取数据并绑定到Action实例上,以便后续的业务处理。 这个特性...
在Struts2中,可以通过Action类的getter和setter方法来定义可注入的属性。当配置文件(如struts.xml或struts-plugin.xml)中声明了这些属性及其值时,IoC容器会在实例化Action时自动设置它们。 然而,对于boolean...
1. **基础配置**:在Struts2中,基础配置主要通过`struts.xml`文件完成。这个文件定义了Action(动作)及其对应的Result(结果)。例如,你可以声明一个Action类,指定它的结果页面,如`<action name="myAction" ...
4. **Action和Service的测试**:在Struts2中,Action类是处理用户请求的实体,它通常调用Service层来执行业务逻辑。Service层封装了与数据库或其他外部资源的交互。在单元测试中,Action的测试主要检查其接收请求、...
在Struts2中,可以通过在struts.xml配置文件中定义全局结果类型来实现。例如,为404错误指定一个特定的JSP页面,使用户看到的不是默认的错误信息。 2. **字符编码问题**: - **pageEncoding**:在JSP页面中,...
- **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...
Struts2在Action里注入EJB必须的包,因为Struts2 的Action是普通的Java类(po),不能直接将EJB注入,所以需要依赖这个包
在Struts2中,我们可以使用OGNL(Object-Graph Navigation Language)表达式来访问Action中的属性并展示在页面上。 4. **拦截器(Interceptors)**:Struts2提供了一种机制,允许在Action执行前后执行一些通用任务...
8. **Action上下文(ActionContext)**:ActionContext是Struts2中保存请求和会话数据的上下文对象,包含了请求参数、session数据等,可以用来在Action间共享数据。 9. **Struts2与Spring集成**:Struts2可以方便地...
1. OGNL(Object-Graph Navigation Language)表达式注入:这是Struts2最著名的漏洞类型,由于框架在处理用户输入时没有进行充分的过滤和验证,攻击者可以通过构造恶意的OGNL表达式来执行任意代码,从而导致远程代码...
在Struts2中,Action类代表控制器,负责处理用户的请求;模型由业务逻辑组件组成,处理数据操作;视图则负责渲染并展示结果给用户。 2. **Struts2 Action**:Action是Struts2的核心组件,它处理用户请求,并通过...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责Web应用程序的不同层面,而DWR(Direct Web Remoting)则是一个JavaScript库,用于在客户端和服务器之间实现异步通信。这个“Struts2+spring...
12. **错误与异常处理**:Struts2提供了统一的错误处理机制,能够优雅地处理程序中的异常情况。 尚硅谷_佟刚_Struts2.pptx这份课件可能涵盖了以上知识点的详细讲解,通过学习,开发者不仅可以了解Struts2的基本用法...
而 Struts2 Action 可以通过依赖注入进行初始化和测试,提高了测试的便利性。 5. **输入数据的处理**: - Struts1 使用 ActionForm 来捕获用户输入,ActionForm 必须继承基类,有时会造成额外的类定义。Struts2 则...
10. 集成Spring:Struts2可以通过Struts2-Spring-plugin插件与Spring框架无缝集成,实现依赖注入,便于管理Action对象及其协作对象。 八、异常处理 11. 异常处理:Struts2提供了全局和局部的异常处理机制,开发者...
书中会讨论如何防止常见的Web攻击,如SQL注入和跨站脚本攻击(XSS),以及如何使用Struts2的安全插件来加强应用的安全性。 总的来说,《Struts2 in Action》这本书覆盖了从基础到进阶的Struts2知识,是Java Web开发者...
Struts2支持依赖注入(Dependency Injection, DI),可以通过配置让框架自动将request、response、session等对象注入到Action中。这通常在Action的定义中通过注解或配置文件指定。 #### 示例代码: ```java import...
2. **Interceptor测试**:拦截器是Struts2中强大的功能,可以在请求处理流程中插入自定义逻辑。测试拦截器需要确保它们在正确的时间点被调用,以及它们如何影响Action的执行流程。通过Mockito或EasyMock等工具,可以...
4. **Action类设计**:Action类需要实现Spring的`ApplicationContextAware`接口,以便在Struts2中获取Spring的ApplicationContext,从而能够注入其他服务。例如: ```java public class ExampleAction implements ...
拦截器可以通过在 struts.xml 文件中配置或在 Action 中通过注入拦截器来实现。 8. Struts2 的国际化和本地化: Struts2 的国际化和本地化可以通过使用资源文件来实现。资源文件可以存放在类路径下或在 Web 项目的...