在struts2中訪问servletAPI
在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各自的方法:
- 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的属性名。属性值
- 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的更多相关文章
- struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素
源码: strust.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...
- struts2学习笔记(3)---Action中訪问ServletAPI获取真实类型的Servlet元素
一.源码: struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE s ...
- iOS开发中訪问相冊摄像像头
iOS开发中訪问相冊摄像像头 源代码下载地址http://download.csdn.net/download/jingjingxujiayou/7270479 在AppDelegate.m文件里 - ...
- java中訪问修饰符
较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 ...
- weblogic部署struts2项目訪问action404错误
近期有个project部署到tomcat上是正常的,部署到weblogic上时訪问action报404错误.依据报错日志.在网上找到了原因例如以下: 部署到weblogic上.struts.xml配置 ...
- MFC 一个类訪问还有一个类成员对象的成员变量值
作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...
- Objective-C 类属性和方法的訪问权限
OC中提供了4种訪问权限.@private, @public, @protected这三种和其它的C++, Java是一样的,@package这个訪问权限并非Java里的包訪问权限,OC中没有包的概念 ...
- Ubuntu Linux訪问小米手机存储卡
操作系统: 麒麟14.04 安装工具 sudo apt-get install mtpfs libfuse-dev libmad0-dev sudo mkdir /media/mtp 重新启动与使用 ...
- Java 訪问权限控制:你真的了解 protected keyword吗?
摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...
随机推荐
- 96 Stocks APIs: Bloomberg, NASDAQ and E*TRADE
Our API directory now includes 96 stocks APIs. The newest is the Eurex VALUES API. The most popula ...
- uva--562Dividing coins +dp
题意: 给定一堆硬币,然后将他们分成两部分,使得两部分的差值最小;输出这个最小的差值. 思路: 想了好久都没想到一个合适的状态转移方程.后面看了别人的题解后,才知道能够转成背包问题求解. 我们将全部的 ...
- Lambda高手之路第一部分
转http://www.cnblogs.com/lazycoding/archive/2013/01/06/2847574.html 介绍 Lambda表达式是使代码更加动态,易于扩展并且更加快速(看 ...
- MySQL分区技术 (一)
4:MySQL 分区技术(是mysql 5.1以版本号后開始用->是甲骨文mysql技术团队维护人员以插件形式插入到mysql里面的技术) 眼下,针对海量数据的优化主要有2中方法: 1:大表拆成 ...
- Linux下的softlink和hardlink(转)
Linux中包括两种链接:硬链接(hard link)和软链接(soft link),软链接又称为符号链接(symbolic link) 创建命令:ln -s destfile/directory s ...
- 轻松学习之Linux教程一 ubuntu14.04+windows双系统安装
本系列文章由@uid=hpw" style="color:rgb(255,0,0)">超人爱因斯坦出品.转载请注明出处. 文章链接:http:// ...
- jQuery 顶部导航尾随滚动,固定浮动在顶部
jQuery 顶部导航尾随滚动.固定浮动在顶部 演示 XML/HTML Code <section> <article class="left"> < ...
- Hibernate学习之createSQLQuery与createQuery的区别及使用
hibernate中createQuery与createSQLQuery:前者用的hql语句进行查询,后者可以用sql语句查询,前者以hibernate生成的Bean为对象装入list返回,后者则是以 ...
- windows 7多点触摸开发
win7 触摸屏系统应用广泛,软件操作方便,功能强大,现以被很多硬件厂商应用. 我曾用一台装有win7 的汉王平板电脑进行了多点触摸软件的开发. 开发环境及条件: 1. 平板电脑+ win7 ...
- 命令模式在MVC框架中的应用
事实上在项目开发中,我们使用了大量的设计模式,不过这些设计模式都封装在框架中了,假设你想要不只局限于简单的使用,就应该深入了解框架的设计思路. 在MVC框架中,模式之中的一个就是命令模式,先来看看模式 ...