struts中action实现ServletRequestAware接口,获得request的原因
来源:互联网 发布:python 灰帽子下载 编辑:程序博客网 时间:2024/05/29 06:49
实现了XXXAware接口,就可以拿到XXX。
public abstract class BaseAction extends ActionSupport implements SessionAware ,ServletRequestAware ,ServletResponseAware ,Constants{protected Map<String ,Object> session;protected HttpServletRequest request;protected HttpServletResponse response;@Overridepublic void setSession(Map<String, Object> session) {// TODO Auto-generated method stubthis.session = session;}public void setRequest(HttpServletRequest request) {this.request = request;}public void setServletResponse(HttpServletResponse response){this.response = response;}
package org.apache.struts2.interceptor;import javax.servlet.http.HttpServletRequest;public interface ServletRequestAware { public void setServletRequest(HttpServletRequest request); }
BaseAction没有直接实现ServletRequest实例,而在ServletRequestAware接口中更不能获得Servlet实例,查阅才发现,是通过interceptor实现的
package org.apache.struts2.interceptor;public class ServletConfigInterceptor extends AbstractInterceptor implements StrutsStatics { private static final long serialVersionUID = 605261777858676638L; public String intercept(ActionInvocation invocation) throws Exception { final Object action = invocation.getAction(); final ActionContext context = invocation.getInvocationContext(); if (action instanceof ServletRequestAware) { HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); ((ServletRequestAware) action).setServletRequest(request); } if (action instanceof ServletResponseAware) { HttpServletResponse response = (HttpServletResponse) context.get(HTTP_RESPONSE); ((ServletResponseAware) action).setServletResponse(response); } if (action instanceof ParameterAware) { ((ParameterAware) action).setParameters((Map)context.getParameters()); } if (action instanceof ApplicationAware) { ((ApplicationAware) action).setApplication(context.getApplication()); } if (action instanceof SessionAware) { ((SessionAware) action).setSession(context.getSession()); } if (action instanceof RequestAware) { ((RequestAware) action).setRequest((Map) context.get("request")); } if (action instanceof PrincipalAware) { HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); if(request != null) { // We are in servtlet environment, so principal information resides in HttpServletRequest ((PrincipalAware) action).setPrincipalProxy(new ServletPrincipalProxy(request)); } } if (action instanceof ServletContextAware) { ServletContext servletContext = (ServletContext) context.get(SERVLET_CONTEXT); ((ServletContextAware) action).setServletContext(servletContext); } return invocation.invoke(); }}
1 0
- struts中action实现ServletRequestAware接口,获得request的原因
- struts中action实现ServletRequestAware, 为什么就会获得request
- 通过ServletRequestAware接口获取request
- Struts Action中获取Request
- Struts2的Action中常用的获得request的方法
- 实现ServletRequestAware接口直接访问Servlet API
- struts的Action接口
- struts2的action中获得request response session
- struts2的action中获得request response session 对象
- struts2的action中获得request response session
- struts2的action中获得request response session
- struts之Action中获取request、response对象的方法
- struts之Action中获取request、response对象的方法
- struts之Action中获取request、response对象的方法
- struts之Action中获取request、response对象的方法
- struts之Action中获取request、response对象的方法
- struts之Action中获取request、response对象的方法
- struts之Action中获取request、response对象的方法
- vi 操作
- 排序算法比较与C++实现
- 数值的整数次方
- 关于业务代码维护和团队成长的实践分享,挺有意思的一篇文章
- return false不能终止这个函数的执行de 解决办法
- struts中action实现ServletRequestAware接口,获得request的原因
- Kaldi 中文语音识别需要考虑的问题
- 【进阶】MySQL中如何使用索引
- Python中字符串常见操作总结
- Java web 总图 第一阶段 HTML总结
- Linux命令
- 程序开发常用轮子
- java 和javaw 的区别
- Spring Boot系列之十banner和exitCode