ServletContext 通过servlet filter listner struts2四种方式获取

本文深入探讨了Web应用中ServletContext和Session的概念及其区别,详细阐述了如何通过Servlet、Filter、监听器和Struts2框架获取ServletContext,并解释了它们在Web应用中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ServletContext 更倾向于一个Web应用的全局范围,而session则只是在于保存用户和服务器之间交互

的一个来回完整性。
一个Web服务只有一个ServletContext搜索,一般都是存放一些全局信息,或者获取一些全局信息,

比如getResourcePaths,而Session却有多个,因为毕竟Session只是当用户请求服务器的时候,服务

器为了保持与用户之间的联系而采用的,当一个用户请求来到后台服务器,服务器会看这个请求是否有

Session Id,如果没有则会生成一个ID,然后把ID返回给前台,接下来前台继续请求后台服务器的时候

,这个ID会继续回传给后台服务器,这样一来后台服务器就能认识这个请求了。

servlet 获取ServletContext
//编写的servlet类继承抽象类HttpServlet
public class LoginServlet extends HttpServlet{
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ServletContext sc1 = req.getSession().getServletContext();
ServletContext sc2 =this.getServletContext();
System.out.println(sc1);
System.out.println(sc2); //sc1和sc2是同一对象
}
}
filter 获取ServletContext
//编写的filter类实现Filter接口
//看init方法和doFilter方法获取ServletContext
public class TestFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
System.out.println("doFilter invoked!");
HttpServletRequest req =(HttpServletRequest)arg0;
System.out.println(req.getServletContext());
chain.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("filter, "+filterConfig.getServletContext());
}
}
//监听器获取ServletContext
//编写的监听器类必须实现接口ServletContextListener
//看方法contextInitialized中获取ServletContext
public class TestListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("listener, "+arg0.getServletContext());
}
}
//struts2获取ServletContext
//编写的Action类,需继承ActionSupport类
public class UploadAction extends ActionSupport {
public String execute() throws Exception {
ServletContext sc = ServletActionContext.getServletContext();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值