Struts2中传统Servlet API类型被处理成Map类型
访问更方便
不依赖传统Servlet API类型——解耦合
关于ActionContext
所在包com.opensymphony.xwork2
ActionContext被称为Action上下文或Action环境
ActionContext提供每个Action运行时与之相关的所有信息
访问Servlet API
ActionContext类提供getContext()方法获得实例
通过ActionContext类的实例可获得Map类型的请求、会话 等
通过put()和get()方法在Map类型的对象中存取数据
示例:
package cn.web.action; import java.util.Map; import cn.web.entity.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginJavabeanAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { if(user==null){ return "login"; } System.out.println(user.getLoginName()); if("admin".equals(user.getLoginName())){ //关于ActionContext //获取session Map<String,Object> session = ActionContext.getContext().getSession(); session.put("userSession", user); //获取application,示例设置一个计数 Map<String,Object> application = ActionContext.getContext().getApplication(); if(application.get("num") == null){ application.put("num", 1); }else{ Integer num = (Integer) application.get("num"); application.put("num", num+1); } //获取request,注意获取方式 Map<String,Object> request = (Map<String, Object>) ActionContext.getContext().get("request"); request.put("address", "中国"); //获取parameter,请求的参数只能获得,不能增加 Map<String,Object> parameters = ActionContext.getContext().getParameters(); //注意parameters.get()与 request.getParameterValues()类似 //获得如checkbox类(名字相同,但值有多个)的数据。 //接收 对象 的数组 String[] name = (String[]) parameters.get("user.loginName"); System.out.println("user.loginName为:"+name[0]); //禁止这样操作,增加参数 parameters.put("access", "通过"); /* 在页面中获取保存数据提倡的方式 (#作用域) <s:property value="#request.loginAccess"/> */ return "admin"; }else if("comm".equals(user.getLoginName())){ return "comm"; }else{ return "login"; } } }
------------------------------------------------------------------------------------
获得Servlet API对象的方式
一、通过ActionContext获得
如上面的示例就是这样
自己获得request: ac.get("request")
自己获得session: ac.getContext.getSession()
二、实现接口
让“别人(如struts容器)”为你提供Servlet API的对象
通过实现相应接口获得Servlet API对象
获得parameter需要实现ParameterAware接口
获得request需要实现RequestAware接口
获得session需要实现SessionAware接口
获得application需要实现ApplicationAware接口
( LoginAtion 是交给Struts容器管理的,
当LoginAtion实现了上面的接口,Struts容器会往这些接口预定义的方法里注入它需要的相应的值,
是由servletConfig拦截器,将源于Servlet API的各种对象注入到Action 的。
从而也就能使用 servletApi 的对象了
)
public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware { Map<String,Object> request; Map<String,Object> session; Map<String,Object> application; //这样就获得了request,session以及application(servletApi的对象), //然后就可以在execute()方法里使用servletApi的对象了 /* 省略部分代码 */ @Override public void setApplication(Map<String, Object> request) { this.request = request; } @Override public void setSession(Map<String, Object> session) { this.session = session; } @Override public void setRequest(Map<String, Object> application) { this.application = application; } /* 省略部分代码 */ }
相关推荐
本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个...
Struts2是一个非常流行的...综上所述,了解如何在Struts2中直接访问Servlet API是非常有用的技能,它可以帮助开发者更好地控制Web应用程序的行为,并在必要时提升性能。但同时,也要注意平衡灵活性和代码的可维护性。
Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...
3. **理解注解**:查看Struts2中的注解,了解其在代码中的作用和配置方式。 4. **深入源码**:API文档可以帮助开发者在必要时深入源码,理解框架内部的工作机制。 最后,"Servlet+API[China].chm"是Servlet API的...
在本文中,我们将详细介绍 Struts2 访问 Servlet API 的几种方法。 一、使用 ActionContext 类 ActionContext 类是 Struts2 框架中一个重要的类,它提供了多种方法来访问 Servlet API。该类可以模拟获取 request、...
然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...
在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...
在Struts2中,Servlet的配置和使用方式与标准Servlet容器中的配置有所不同,主要是为了更好地整合框架的功能。以下是关于Struts2中Servlet配置的相关知识点: 1. **实现ServletResponseAware/ServletRequestAware...
1. **HttpServletRequest对象**:在Struts2中,我们可以从Action上下文(`ActionContext`)获取到`ServletActionContext`,然后通过`ServletActionContext.getRequest()`方法获得`HttpServletRequest`对象。这个对象...
详解Struts2中Action访问Servlet API的几种方法 在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到...
在Struts2中,我们通常会在Action类中处理这个逻辑,而在Servlet中,这将在doGet或doPost方法内完成。 现在,我们来看案例中的两个DEMO——JqUploadTest和CosUpload。JqUploadTest可能是指使用jQuery的Upload插件...
本文将详细讲解在Struts2中获取`request`对象的几种常见方法,以及它们的适用场景。 1. **Action上下文(ActionContext)** `ActionContext`是Struts2的核心组件之一,它封装了与当前请求相关的所有上下文信息,...
2. 服务器接收到请求后,Servlet容器(如Tomcat)根据web.xml中的配置找到对应的Servlet(通常是Struts的Front Controller,如.struts2Dispatcher)。 3. Struts DispatcherServlet解析请求,根据配置文件确定要调用...
本文将深入探讨Java Servlet API的相关知识点,包括其基本概念、主要接口和类以及它们在实际开发中的应用。 1. **Servlet基本概念** - **Servlet**: 是一个Java类,遵循Servlet API规范,用于扩展服务器的功能。...
1. **Action接口**:Struts1中的Action类需要实现Action接口,而在Struts2中,可以实现Action接口或直接使用ActionSupport类,后者提供了默认的行为。 2. **请求处理**:Struts1通过Servlet的service方法处理请求,...
在标签中,我们看到"struts1_api"、"struts_1_api"、"struts1"等关键词,这些都与Struts1的API文档相关。"struts1.4_api"则可能指的是Struts1的1.4版本API,这个版本可能包含了一些特定的更新和改进。 在压缩包的...
学习Struts2,你需要理解MVC架构的基本原理,熟悉Servlet和JSP的基础知识,因为Struts2是在这些基础上构建的。同时,掌握OOP(面向对象编程)和设计模式将有助于你更好地运用Struts2。通过阅读这些资源,你可以逐步...
6. **Filter和Listener**:Servlet API还提供了Filter和Listener接口,用于在请求到达Servlet之前进行预处理(Filter),或者监听Servlet生命周期及Web应用中的各种事件(Listener)。 7. **MVC模式**:Servlet常与...