在struts2中訪问servletAPI,通俗点也就是使用servlet中的两个对象request对象和response对象。

前几天看到一个CRM项目的源代码,里面使用request对象和response对象方式和我曾经使用的方式有点不同,于是便上网查询一些相关资料。特此记录于此,有兴趣的也能够參考參考。

  • 以往使用struts2往网页填充数据通常採用往值栈存放数据。也就是ActionContext.getContext().****();后面的方法类似与request对象和response对象的方法。

  • 这几天看到的是实现接口ServletRequestAware,ServletResponseAware。通过这两个接口实现两个方法setServletResponse(HttpServletResponse
    response)与setServletRequest(HttpServletRequest request)。然后訪问用户请求的HttpServletRequest实例与server响应的HttpServletResponse实例。
  • 进过上网查找另一种ServletActionContext。这个类直接继承了ActionContext。

接下来介绍一下ActionContext和ServletActionContext各自的方法:

  1. 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的属性名。属性值
  1. ServletActionContext
      • static PageContext getPageContext():取得Web应用的PageContext对象;
      • static HttpServletRequest getRequest():取得web应用的HttpServletRequest对象;
      • static HttpServletResponse getResponse():取得web应用的HttpServletResponse对象;
      • static ServletContext getServletContext():取得web应用的ServletContext对象;

那么这几种方式有什么差别呢?原来使用ActionContext和ServletActionContext这两个类是属于非IOC方式来訪问request对象和response对象。而Action实现ServletRequestAware和ServletResponseAware接口是属于IOC方式的。关于IOC请点击

fr=aladdin">这里

我贴上代码来看看吧。

ServletRequestAware,ServletResponseAware

package cn.crm.web.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{ protected HttpServletRequest request;
protected HttpServletResponse response;
@Override
public void setServletResponse(HttpServletResponse response) {
// TODO Auto-generated method stub
this.response=response;
} @Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request=request; } }

ActionContext

ActionContext context = ActionContext.getContext();
Map params = context.getParameters();
String username = (String) params.get("username");

ServletActionContext

HttpServletRequest request = ServletActionContext. getRequest();
HttpSession session = ServletActionContext. getRequest().getSession();


在struts2中訪问servletAPI的更多相关文章

  1. struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素

    源码: strust.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...

  2. struts2学习笔记(3)---Action中訪问ServletAPI获取真实类型的Servlet元素

    一.源码: struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE s ...

  3. iOS开发中訪问相冊摄像像头

    iOS开发中訪问相冊摄像像头 源代码下载地址http://download.csdn.net/download/jingjingxujiayou/7270479 在AppDelegate.m文件里 - ...

  4. java中訪问修饰符

    较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 ...

  5. weblogic部署struts2项目訪问action404错误

    近期有个project部署到tomcat上是正常的,部署到weblogic上时訪问action报404错误.依据报错日志.在网上找到了原因例如以下: 部署到weblogic上.struts.xml配置 ...

  6. MFC 一个类訪问还有一个类成员对象的成员变量值

    作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...

  7. Objective-C 类属性和方法的訪问权限

    OC中提供了4种訪问权限.@private, @public, @protected这三种和其它的C++, Java是一样的,@package这个訪问权限并非Java里的包訪问权限,OC中没有包的概念 ...

  8. Ubuntu Linux訪问小米手机存储卡

    操作系统: 麒麟14.04 安装工具 sudo apt-get install mtpfs libfuse-dev libmad0-dev sudo mkdir /media/mtp 重新启动与使用 ...

  9. Java 訪问权限控制:你真的了解 protected keyword吗?

    摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...

随机推荐

  1. SilkTest Q&A 5

    Q41.VerifyBitmap的问题. 我正在使用函数VerifyBitmap比较位置,边,颜色等,例如: Window.VerifyBitmap("Position.bmp", ...

  2. Memcahce(MC)系列(一)Memcache介绍、使用、存储、算法、优化

    写在前面:前不久在工作中被问到关于MC一致哈希的问题,由于时隔太久差点儿忘记,特前来恶补一下MC,下面是前几年在工作中学习MC时的一些资料,来历不明,特整理一下,希望对大家的学习也能有帮助. 32 的 ...

  3. 解决Eclipse中文乱码的方法

    (1)设置Project的编码格式: 在 Workspace中新建的项目默认继承Workspace的编码设置.我们也能够单独更改某个项目的编码格式.右键点击project.选择 Properties, ...

  4. junit测试时,出现java.lang.IllegalStateException: Failed to load ApplicationContext

    课程设计要求进行junit测试,我是在已经做好的ssh项目上做的测试,测试类代码如下 package com.zhang.web.services; import static org.junit.A ...

  5. java--ThreadPool线程池简单用法

    package com.threadPool; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent. ...

  6. 18.如何自我Struts2它Struts2标签和综合汇总文章有点早

    18.如何自我Struts2它Struts2标签和综合汇总文章有点早[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: h ...

  7. Fluentd: Open Source Log Management

    Fluentd: Open Source Log Management "Fluentd" is an open-source tool to collect events and ...

  8. HDU4719-Oh My Holy FFF(DP线段树优化)

    Oh My Holy FFF Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) T ...

  9. 在C#中子线程如何操作主窗口线程上的控件

    在C#中子线程怎样操作主线程中窗口上控件 在C#中,直接在子线程中对窗口上的控件操作是会出现异常,这是因为子线程和运行窗口的线程是不同的空间,因此想要在子线程来操作窗口上的控件.是不可能简单的通过控件 ...

  10. poj3678(two-sat)

    传送门:Katu Puzzl 题意:n个点,点的取值可以是0或者1.m条边,有权值,有运算方式(并,或,异或),要求和这条边相连的两个点经过边上的运算后的结果是边的权值.问你有没有可能把每个点赋值满足 ...