浅谈ServletContext,HttpServletRequest,HttpServletResponse,HttpSession的获取
(1)对于一个web容器,ServletContext 是Servlet与Servlet容器之间直接通信的接口,Servlet容器在启动一个web应用时,会为它创建一个ServletContext对象,每个web应用有唯一的ServletContext对象,同一个web应用的所有Servlet对象共享一个 ServletContext,Servlet对象可以通过它来访问容器中的各种资源。简单的说,
·
(1)对于一个web容器,ServletContext 是Servlet与Servlet容器之间直接通信的接口,Servlet容器在启动一个web应用时,会为它创建一个ServletContext对象,每个web应用有唯一的ServletContext对象,同一个web应用的所有Servlet对象共享一个 ServletContext,Servlet对象可以通过它来访问容器中的各种资源。简单的说,对于一个web应用,servletContext对象就是这个web容器的全局对象。
(2)网上很多人提问题想要在一个普通java类中获取这四个对象,自我感觉是没有什么意义的,除非有特殊需求,而真正需要这四个类的地方现在无非就是servlet和由struts2封装了的servlet也就是action,下面举出几种常见的获取方法。
普通servlet中:
servlet是继承了httpServlet的java普通类,因此在其方法(比如doGet,doPost)的参数中都会默认取到HttpServletRequest,HttpServletResponse这个两个类,同样ServletContext和HttpSession也够可以通过HttpServletRequest这个类取到:
(1)在继承ActionSupport后,可以通过ServletActionContext这个类获得。
(2)可以通过继承ServletRequestAware,ServletResponseAware, ServletContextAware这三个类获得。
(2)网上很多人提问题想要在一个普通java类中获取这四个对象,自我感觉是没有什么意义的,除非有特殊需求,而真正需要这四个类的地方现在无非就是servlet和由struts2封装了的servlet也就是action,下面举出几种常见的获取方法。
普通servlet中:
servlet是继承了httpServlet的java普通类,因此在其方法(比如doGet,doPost)的参数中都会默认取到HttpServletRequest,HttpServletResponse这个两个类,同样ServletContext和HttpSession也够可以通过HttpServletRequest这个类取到:
request.getSession().getServletContext();
request.getSession();
方法取得。
在action中:
(1)在继承ActionSupport后,可以通过ServletActionContext这个类获得。
(2)可以通过继承ServletRequestAware,ServletResponseAware, ServletContextAware这三个类获得。
public class HelloWorldAction implements ServletRequestAware,
ServletResponseAware, ServletContextAware {
private HttpServletRequest request;
private ServletContext servletContext;
private HttpServletResponse response;
public void setServletRequest(HttpServletRequest req) {
this.request = req;
}
public void setServletResponse(HttpServletResponse res) {
this.response = res;
}
public void setServletContext(ServletContext ser) {
this.servletContext = ser;
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)