总结Struts2获取servletAPI的几种方式
来源:互联网 发布:燕郊淘宝摄影棚 编辑:程序博客网 时间:2024/05/29 08:46
struts2的Action放弃了request,response等ServletAPI,使得在业务层上更加独立,在有时候使用struts2进行Web开发的时候,不可避免的要在action中使用servletAPI,那么如何在Action中获取并使用servletAPI呢?
- 通过ActionContext类的静态方法获取(非IOC方式)
package com.hadwin.action;import java.util.Map;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** * 通过actioncontext类访问并获取servletAPI * 其对象是一个map类型的 * @author Hadwin.huang */public class ContextAction extends ActionSupport{ public String execute() throws Exception { String name="XXXX"; //获取seesion Map session = ActionContext.getContext().getSession(); //把想存的值放到session域中 session.put("sessionName", name); //获取request Map request=(Map)ActionContext.getContext().get("request"); //把想存的值存入request域中 request.put("requestName", name); //获取application Map application = ActionContext.getContext().getApplication(); //把需要的值存入application域中 application.put("applicationName", name); return null; };}上面获取到的三大域都是Map类型的,比如对于request来说,我们通常喜欢获取HttpServletRequest类型的,因为这个类型的request功能要强大得多,用ActionContext也是可以获取的,而且也是我们更常用的一种方式,如下: //获取HttpServletRequest HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST); //通过request获取sesssion HttpSession session = request.getSession();
2.通过ServletActionContext的静态方法获取(非IOC方式)
package com.hadwin.action;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import org.apache.struts2.StrutsStatics;import org.apache.struts2.dispatcher.ng.servlet.StrutsServlet;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** (1) 通过ServletActionContext类访问并获取servletAPI (2) 虽然是使用了静态方法获取request,response,但仍能保证获取到当前用户,当前线程的request,response, (3) 不会反生混淆,因为struts2利用ThreadLocal来维护当前线程的servlet对象,是线程安全的 (4) @author Hadwin.huang */public class ContextAction2 extends ActionSupport{ public String execute() throws Exception { String name="XXXX"; //获取HttpServletRequest HttpServletRequest request = ServletActionContext.getRequest(); //获取session HttpSession session = request.getSession(); return null; };
3.实现相关的Aware接口(IOC方式)
(1) request 对应ServletRequestAware接口
(2) response对应ServletResponseAware接口
(3) session 对应SessionAware接口
(4) application对应ServletContextAware接口
struts2在实例化一个action对象时,如果发现他实现了相关的Aware接口,就会把相应的资源通过Aware接口方法注入进去,所以叫做注入方式(IOC方式),以request为例,实现了ServletRequestAware接口,就会有一个setServletRequest()方法获取request对象,Aware接口实际上是一种拦截器,他会在执行Action前执行,把相关的servlet对象设置进来,代码如下:
package com.hadwin.action;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.StrutsStatics;import org.apache.struts2.dispatcher.ng.servlet.StrutsServlet;import org.apache.struts2.interceptor.ServletRequestAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class ContextAction1 extends ActionSupport implements ServletRequestAware { HttpServletRequest request; public String execute() throws Exception { String name="XXXX"; request.setAttribute("name", name); return null; } @Override public void setServletRequest(HttpServletRequest request) { //通过该方法可直接获取到request对象 this.request=request; };}
阅读全文
0 0
- 总结Struts2获取servletAPI的几种方式
- Struts2获取servletAPI的几种方式
- struts2访问servletAPI的几种方式
- Struts2--获取ServletAPI的方式
- Struts2中访问ServletAPI的四种方式
- Structs中Action访问ServletAPI的几种方式
- Struts2获取ServletApi对象的4种方法
- Struts2中,三种获取ServletAPI的方法
- Struts2的Action访问ServletAPI的方式
- struts2的开发(获取ServletAPI对象)
- Struts2获取/访问ServletAPI
- Struts2获取ServletAPI
- Struts2获取ServletAPI
- struts2获取ServletAPI
- Rhyme/ Struts2 解耦以及耦合方式获取ServletApi
- Action 中访问servletAPI的方式总结
- 获取Bitmap的几种方式总结
- Struts2访问ServletAPI的两种途径
- 个人对 HashTable 和 Dictionary的区别总结
- 机器学习预备知识
- TensorFlow学习笔记10----Logging and Monitoring Basics with tf.contrib.learn
- TCP协议
- Linux 常用的目录处理命令总结
- 总结Struts2获取servletAPI的几种方式
- Spring boot 测试
- Linux 内核API文档(The Linux Kernel API)
- Java面向对象程序设计 类封装
- iOS 面试题集合~[有答案]
- 【Shader实战篇】PBR贴图之Emission 贴图
- java和C#的区别
- mysql常用语句
- nodejs中的方法和模块的使用