Struts2学习笔记三

今天弄了半天终于明白如何在Action中访问Servlet API了,唉......感觉没有Struts1方便,不过为了解偶也是值得的,呵呵

 

5.访问Servlet API

       前面曾经说过,用户所写的Action并不是真正处理用户请求的Action实例,而仅仅是Struts2Action代理的代理目标,这是因为它没有和Servlet API直接关联,根本无法处理用户的请求,那在用户的Action中又该如何访问Servlet API呢?

       1). Struts2提供了一个ActionContext类,Struts2Action可以通过此类来访问Servlet API,以下给出最为常用的访问ServletContextHttpSessionHttpServletRequest的代码:

// 访问ServletContext

ActionContext.getContext().getApplication().get(key);  // 取值

ActionContext.getContext().getApplication().put(key, value);  // 设值

 

// 访问HttpSession

ActionContext.getContext().getSession().get(key);

ActionContext.getContext().getSession().put(key, value);

 

// 访问HttpServletRequest

ActionContext.getContext().get(key);

ActionContext.getContext().put(key, value);

 

顺便在此给出使用OGNL访问上述范围内的属性值:

${applicationScope.属性名}

${sessionScope.属性名}

${requestScope.属性名}

 

2). 除了上述所提到的使用ActionContext类来访问Servlet API外,Struts2还提供了以下接口可以直接访问Servlet API

l         ServletContextAware

public void setServletContext(ServletContext context);

 

l         ServletRequestAware

public void setservletRequest(HttpServletRequest request);

 

l         ServletResponseAware

public void setservletResponse (HttpServletResponse response);

 

3). 此外Struts2提供了一个更为简单的ServletActionContext类,这个类包含了如下几个方法可用于访问Servlet API

       static PageContext getPageContext();

       static HttpServletRequest getRequest();

       static HttpServletResponse getResponse();

       static ServletContext getservletContext();

 

注意:在Struts1中可以使用response对象向页面直接输出内容,但在Struts2中这种方法是不可能生成服务器响应的,即是说类似response.getWriter().print(“cfanboy”);这样的代码在Struts2中是不起作用的!

发布了35 篇原创文章 · 获赞 0 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章