Action访问Servlet API
Posted 跃小云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Action访问Servlet API相关的知识,希望对你有一定的参考价值。
第一种方式:
Struts2提供了一个ServletActionContext对象可以访问ServletAPI。 例如 HttpServletRequest request=ServletActionContext.getRequest(); HttpServletResponse response=ServletActionContext.getResponse(); ServletContext context=ServletActionContext.getServletContext(); HttpSession session=request.getSession();
第二种方式,实现ServletContextAware,ServletRequestAware,ServletResponseAware三个接口
public class VcodeAction extends ActionSupport implements ServletContextAware,ServletRequestAware,ServletResponseAware { //定义三个参数 private HttpServletRequest request; private HttpServletResponse response; private ServletContext context; public String execute() throws Exception { return null; } //实现接口中设置参数的方法 @Override public void setServletResponse(HttpServletResponse response) { this.response=response; } @Override public void setServletRequest(HttpServletRequest request) { this.request=request; } @Override public void setServletContext(ServletContext context) { this.context=context; } } 执行流程是什么,谁调用了set方法? struts的内建拦截器有一个ServletConfig的拦截器。 它会先得到我们的动作类的引用, 然后通过instanceof方法判断我们动作类是否属于ServletContextAware,ServletRequestAware,ServletResponseAware类型 因为我们实现了这个接口,当然属于这个类型 然后获取request,response等 然后调用我们动作类实现的接口方法 setServletResponse,setServletRequest,setServletContext等为我们的request,response赋值。
以上是关于Action访问Servlet API的主要内容,如果未能解决你的问题,请参考以下文章
Struts2笔记--Action访问Servlet API
action访问servlet的API并且获取到MAP类型的application,session,request