struts2框架学习笔记3:获取servletAPI
2018-06-18 03:16:05来源:未知 阅读 ()
Struts2存在一个对象ActionContext(本质是Map),可以获得原生的request,response,ServletContext
还可以获得四大域对象(Map),以及param参数(Map)等等
ActionContext生命周期:每次请求都会创建一个与请求对应的ActionContext对象
绑定当前线程(ThreadLocal),直接从ThreadLocal中获得即可
请求处理完后,ActionContext对象销毁
第一种获得方式:
public String execute() throws Exception { //request域=> map (struts2并不推荐使用原生request域) //不推荐 Map<String, Object> requestScope = (Map<String, Object>) ActionContext.getContext().get("request"); //推荐 ActionContext.getContext().put("name", "requestTom"); //session域 => map Map<String, Object> sessionScope = ActionContext.getContext().getSession(); sessionScope.put("name", "sessionTom"); //application域=>map Map<String, Object> applicationScope = ActionContext.getContext().getApplication(); applicationScope.put("name", "applicationTom"); return SUCCESS; }
注意:直接调用put方法在jsp中取值时候直接取即可${name},其他的(例如session):${sessionScope.name}
第二种获取方式(不推荐):
//不推荐 public String execute() throws Exception { //原生request HttpServletRequest request = ServletActionContext.getRequest(); //原生session HttpSession session = request.getSession(); //原生response HttpServletResponse response = ServletActionContext.getResponse(); //原生servletContext ServletContext servletContext = ServletActionContext.getServletContext(); return SUCCESS; }
看过源码发现,这里还是调用了ActionContext中的方法
不推荐的原因:Struts2创造的目的就是避免原生的servlet
第三种:
实现接口
package api; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; //如何在action中获得原生ServletAPI public class Demo extends ActionSupport implements ServletRequestAware { private HttpServletRequest request; public String execute() throws Exception { System.out.println("原生request:"+request); return SUCCESS; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } }
response等等都是实现相应的接口即可
原理:servletConfig拦截器的intercept方法中获取了原生的servletAPI,本质上还是调用了ActionContext中的方法
实际开发中,常用的其实是第一种方式
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java--反射(框架设计的灵魂)案例 2020-06-11
- 学习Java 8 Stream Api (4) - Stream 终端操作之 collect 2020-06-11
- Java--反射(框架设计的灵魂) 2020-06-11
- java学习之第一天 2020-06-11
- Java学习之第二天 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash