在Action中访问 WEB资源
一、什么是WEB资源?
HttpServletRequest,HttpSession,ServletContext等原生的Servlet API
二、为什么访问WEB资源?
B\S的应用的Controller中必须需要访问WEB资源
向域对象中读写属性,读写Cookie,获取realPath
三、如何访问?
1、:和Servlet API解耦的方式:只能访问有限的Servlet API对象,且只能访问有限的方法。(读取请求参数,读写域对象的属性,使session失效)
具体请参照博文:Struts2之Session
(1)使用ActionContext
通过import com.opensymphony.xwork2.ActionContext;
(2)实现XxxAware接口
通过Action实现如下接口
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.SessionAware;
(3)选用的建议:若一个Action类中有多个action方法,且多个方法都需要使用域对象的Map或parameters,则建议使用Aware接口的方式
(4)session对应的Map实际上是SessioMap类型的,强转后若调用invalidate()方法,可以使其session失效。
2、和Servlet API耦合的方式 :可以访问更多的Servlet API对象,且可以调用原生态的方法。
(1)使用ServletActionContext
public String execute(){
//ServletActionContext:可以从中获取到当前Action对象需要的一切Servlet API 相关的对象
//1、获取HttpServletRequest:ServletActionContext.getRequest();
//2、获取HttpSession:ServletActionContext.getRequest().getSession();
//3、获取ServletContext
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=ServletActionContext.getRequest().getSession();
ServletContext servletContext=ServletActionContext.getServletContext();
System.out.println("execute...");
return "success";
}
(2)实现ServletXxxAware接口
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
//通过实现ServletXxxAware接口的方式可以由Struts2注入需要的Servlet相关的对象
//ServletRequestAware:注入HttpServletRequest对象(比较常用)
//ServletContextAware:注入ServletContext对象(比较常用)
//ServletResponseAware:注入HttpServletResponse对象
public class TestServletAware implements ServletRequestAware,ServletContextAware,ServletResponseAware{
public void setServletRequest(HttpServletRequest request) {
System.out.println(request);
}
private ServletContext context;
public void setServletContext(ServletContext context) {
System.out.println(context);
this.context=context;
}
public void setServletResponse(HttpServletResponse response) {
System.out.println(response);
}
public String execute(){
System.out.println("ServletContext:" + context);
return "success";
}
}
分享到:
相关推荐
在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...
2. **Action和ActionMapping**:在Struts2中,Action是业务逻辑处理的中心,它执行特定的任务并返回一个结果。ActionMapping则定义了Action与URL之间的映射关系。 3. **配置文件**:项目中可能包含`struts.xml`或`...
6. **国际化与本地化**:学习如何在Struts2中实现多语言支持,提供全球化用户体验。 7. **Tiles布局**:结合Tiles插件,创建复用性强、结构化的页面布局。 8. **异常处理**:理解Struts2的异常处理机制,如何...
以下将详细介绍Struts 2框架的核心概念、主要功能以及在Web 2.0开发中的应用。 1. **Struts 2框架基础** Struts 2是由Apache软件基金会维护的开源项目,它是Struts 1的升级版本,引入了许多新特性。它基于拦截器...
1. **Action类**:在Struts2中,Action类是业务逻辑的核心,它接收用户请求,执行相关操作,并返回结果。Action类可以被配置在struts.xml文件中,指定其对应的URL和返回的结果类型。 2. **拦截器(Interceptors)**...
在Struts2中,Action是核心组件之一,它负责处理用户的请求,并将业务逻辑的结果返回给视图进行展示。本实例将深入探讨在基于用户登录场景下,如何在Struts2中对Action进行分类和设计。 首先,我们需要了解Struts2...
在这个主题“Struts2_访问web元素_accessWebElements_s”中,我们将深入探讨如何在Struts2中有效地访问和操作web元素。 首先,了解Struts2的生命周期至关重要。当一个HTTP请求到达服务器时,Struts2框架会接管请求...
在Struts2中,OGNL被用于Action和ActionContext之间数据的传递,以及视图层的数据绑定。它可以方便地访问和修改模型对象的属性,简化了视图和控制器之间的交互。 6. **commons-logging-1.0.4.jar**:Apache Commons...
Struts2 框架提供了访问 Servlet API 的功能,允许在 Action 中访问 Servlet 的各种对象。 Struts2 框架提供了一个灵活、可扩展的解决方案来构建企业级 web 应用程序,它具有强大的功能和灵活的配置方式。
- 在web.xml中添加Struts2的过滤器配置: ```xml <filter-name>struts2 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher <filter-name>struts2 <url-pattern>/* ``` - 上述配置表示...
本教程将深入讲解如何在Struts2的Action类中访问Web资源,如HttpServletRequest、HttpServletResponse和ServletContext。 首先,Web资源在B/S应用开发中扮演着关键角色。HttpServletRequest对象包含了客户端请求的...
2. **Action与ActionMapping**:在Struts2中,业务逻辑通常封装在Action类中。一个Action类对应一个用户请求,处理来自客户端的请求并返回结果。ActionMapping则负责配置Action与URL的映射关系,使得请求能正确路由...
在Struts2中,我们可以使用OGNL(Object-Graph Navigation Language)表达式来访问Action中的属性并展示在页面上。 4. **拦截器(Interceptors)**:Struts2提供了一种机制,允许在Action执行前后执行一些通用任务...
- **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...
4. **Action和Service的测试**:在Struts2中,Action类是处理用户请求的实体,它通常调用Service层来执行业务逻辑。Service层封装了与数据库或其他外部资源的交互。在单元测试中,Action的测试主要检查其接收请求、...
总的来说,《Struts2 in Action》这本书覆盖了从基础到进阶的Struts2知识,是Java Web开发者不可多得的学习资源。通过学习这本书,初学者可以逐步掌握如何利用Struts2构建高效、健壮的Web应用。
在Struts2中,你可以创建领域对象,通过setter和getter方法来接收和设置请求参数,这些对象可以在多个Action之间共享,提高了代码的复用性。 4. **Struts2_2.1.6版本的中文问题** 在某些版本的Struts2中,可能出现...
当用户访问`/hello.action`时,Struts2会调用这个Action,如果执行成功,将会跳转到`/HelloWorld.jsp`页面。 ### 创建Action类 在`src/main/java/com/example`目录下创建`HelloWorldAction.java`,实现一个简单的...
然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...