struts2的获取Servlet API的几种方式的学习笔记

总记:web应用中通常需要访问的servlet API就是HttpServletRequest、httpSession和ServletContext,

这三个接口分别代表JSP内置对象中的request、session和application。

在Strutx 2.0你可以有两种方式获得这些对象:非IoC(控制反转Inversion of Control)方式和IoC方式

一、非IOC方式

使用的原则:如果ActionContext能够实现我们的功能,那最好就不要使用ServletActionContext,
让我们的Action尽量不要直接去访问Servlet的相关对象

1.Struts2提供了一个ActionContext类,Struts2的Action可以通过该类来访问Servlet API(推荐使用该方法)(非IOC方式)

ActionContext类中包含的几个常用的方法:

①Object get(Object key):该方法类似于调用HttpServletRequest的getAttribute(String name)方法

②Map getApplication(): 返回一个Map对象,该对象模拟了该应用的ServletContext实例

③static ActionContext getContext():静态方法,获取系统的ActionContext实例

④Map getParameters():获得所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap()方法

⑤Map getSession();返回一个Map对象,该Map对象模拟了HttpSession实例

⑥void setApplication(Map application):直接传入一个Map实例。将该Map实例里的key-value对转换成application的属性名,属性值。

⑦void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value转换成session的属性名、属性值。

相关用法小实例:

public String execute() throws Exception{
        ActionContext ctx = ActionContext.getContext();

        //通过ActionContext访问application范围的属性值
        Integer counter = (Integer)ctx.getApplication().get("counter");
        //通过ActionContext设置session范围的属性
        ctx.getApplication().put("counter", counter);

        //通过ActionContext设置session范围的属性
        ctx.getSession().put("User", getUsername);

        //获取request
    Map request=(Map)ActionContext.getContext().get("request");
    //把想存的值存入request域中
    request.put("requestName", name);
    }

2. 使用ServletActionContext访问Servlet API

ServletActionContext工具类包含如下的几个静态方法:

static PageContext getPageContext(); 取得web应用的PageContext对象
static HttpServletRequest getRequest(); 取得web应用的HttpServletRequest对象
static HttpServletResponse getResponse(); 取得web应用的HttpServletResponse对象
static ServletContext getServletContext(); 取得web应用的ServletContext对象

二 IOC(控制反转Inversion of Control)

为了在Action中直接访问Servlet API,Struts2还提供了如下几个接口。

ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例
ServletRequestAware:实现该接口的Action可以直接访问用户请求的HttpServletRequest实例
ServletResponseAware:实现该接口的Action可以直接访问服务器响应的HttpServletResponse实例

public class SampleAction implementsAction,
RequestAware, SessionAware, ApplicationAware
{
private Map request;
private Map session;
private Map application;  

@Override
public void setRequest(Map request)
{this.request = request;}  

@Override
public void setSession(Map session)
{this.session = session;}  

@Override
public void setApplication(Map application)
{this.application = application;}  

}  
时间: 2024-11-17 22:21:36

struts2的获取Servlet API的几种方式的学习笔记的相关文章

Struts2中获取servlet API的几种方式

struts2是一个全新的MVC框架,如今被广大的企业和开发者所使用,它的功能非常强大.这给我们在使用servlet 纯java代码写项目的时候带来了福音.但是一般来说,我们的项目不到一定规模并不需要框架的.通常功能模块和系统架构复杂的时候会少不了框架的,如果没有框架,我们写的项目和代码会复杂很多,而且扩展性也会大大降低,代码审查效率也会降低.如下代码供大家参考,主要是说明在使用struts2的时候如何获取servlet API,大家可以试着对比一下不用struts2的时候的所写的servelt

Struts2访问Servlet API的几种方式

struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前Action的ActionContext实例. public Object get(Object key) :此方法类似于调用HttpServletRequest的getAttribute(String name)方法. public void put(Object key, Object value

Struts2 -- 获取Servlet API

在struts2中获取Servlet API有三种方式: 1.通过ActionContext来获取       1.获取一个ActionContext对象.                ActionContext context=ActionContext.getContext();            2.获取servlet api                注意:通过ActionContext获取的不是真正的Servlet API,而是一个Map集合.                

struts2的action访问servlet API的三种方法

学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object get(Object key);可以获取request属性 Map getSession():可以得到session属性 Map getAppliction():可以得到ServletContext实例 2.action类实现 ServletContextAware,ServletRequestAwa

在Action中获取servlet API

Struts2的Action组件是不依赖servlet API 的.那么当你在action中的业务需要处理HttpServletRequest和HttpServletResponse的时候(比如要对响应做处理写cookie,生成验证码)怎么办呢? 有3种办法可以实现action中获取servlet api 1.使用ServletActionContext的静态方法   Struts2使用ServletActionContext对象维护Servlet api 对象(像request,respons

Struts2中使用Servlet API步骤

Struts2中使用Servlet API步骤 Action类中声明request等对象 Map<String, Object> request; 获得ActionContext实例 ActionContext ac=ActionContext.getContext(); 获取request等对象   request=(Map<String, Object>)ac.get("request"); 在request等对象中保存数据  request.put(&qu

Struts2(八)访问Servlet API

一.Struts2中的Servlet API 1.1.struts2的Action实现了MVC中C层的作用 针对请求用户显示不同的信息 登录后段保存用户信息 ----session 保存当前在线人数等功能---application 1.2.传统的Servlet API类型 HttpServletRequest HttpSession ServletContext 1.3.Struts2中将传统的Servlet API类型被处理成Map类型 访问更方便 不依赖传统Servlet API 类型--

Action访问Servlet API的三种方法

一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器而言,不访问action是不行的,Struts提供了一种比较简单的方式来访问Servlet API . 二.通常我们需要访问的Servlet API 是 HttpSession.HttpservletRequest.ServletContext,分别对应了JSP内置对象 session,reques

struts2如何访问servlet API

 struts2如何访问servlet API 1.struts2 通过提供一个ActionContext 来访问servlet API 2.ActionContext提供了哪些方法来进行访问 Object  get(Object key):该方法类似于调用HttpServletRequest 的getAttribute(String name) Map getApplication() :返回一个Map对象,模拟该应用的ServletContext static ActionContext