设为首页 加入收藏

TOP

在struts2中访问servletAPI
2015-07-20 17:34:14 来源: 作者: 【 】 浏览:1
Tags:struts2 访问 servletAPI

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

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

以往使用struts2往网页填充数据通常采用往值栈存放数据,也就是ActionContext.getContext().****();后面的方法类似与request对象和response对象的方法。这几天看到的是实现接口ServletRequestAware,ServletResponseAware。通过这两个接口实现两个方法setServletResponse(HttpServletResponse response)与setServletRequest(HttpServletRequest request)。然后访问用户请求的HttpServletRequest实例与服务器响应的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请点击这里。

我贴上代码来看看吧。

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");


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


 
 



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uvalive 6669 hidden tree(好壮压.. 下一篇如何实现深度优先遍历(DFS)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)