ServletContext顾名思义是Servlet上下文对象,ServletContext对象有且只有一个该对象,这个其实就是单例模式;ServletContext对象相当于是Servlet容器的总司令部,里面包含了很多关于Servlet容器的信息,我们可以可以通过该对象来获取Servlet或与Servlet与之相关的一些信息。大致就是这样。。
如果你要在servlet的init方法中传递值给session,然后在cookie有效范围内使用session中保存的值,可以采用的方法是:首先把attribute放入到servletcontext中,然后在servlet的service或者doXXX方法中再把这些attribute放入到session中。在init方法中不能直接访问session。
步骤如下:
1、在init方法中调用servletconfig的getServletContext()方法,获得ServletContext对象。
2、调用ServletContext对象的setattribute方法放入值
3、在service或者doXXX方法中调用servlet的getServletContext方法,获得ServletContext对象
4、从ServletContext对象中查询需要的值,然后值放入到session中
这个场景通常是用于把webxml文件中配置的参数放入到seesion中。
可以有以下几种方法
方法一:在初始化时保存ApplicationContext对象
代码:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContextxml");
acgetBean("beanId");
说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
方法二:通过Spring提供的工具类获取ApplicationContext对象
代码:
import orgspringframeworkwebcontextsupportWebApplicationContextUtils;
ApplicationContext ac1 = WebApplicationContextUtilsgetRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtilsgetWebApplicationContext(ServletContext sc);
ac1getBean("beanId");
ac2getBean("beanId");
说明:
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。
其中 servletContext sc 可以具体 换成 servletgetServletContext()或者 thisgetServletContext() 或者 requestgetSession()getServletContext(); 另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出 WebApplicationContext 对象: WebApplicationContext webApplicationContext = (WebApplicationContext) servletContextgetAttribute(WebApplicationContextROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
方法三:继承自抽象类ApplicationObjectSupport
说明:抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationContext。
Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入。
方法四:继承自抽象类WebApplicationObjectSupport
说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext
方法五:实现接口ApplicationContextAware
说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。
Spring初始化时,会通过该方法将ApplicationContext对象注入
作用
1、可以读取全局配置参数。
2、可以搜索当前工程目录下面的资源文件。
3、可以获取当前工程名字。
用法
1、ServletContext对象获取
thisgetServletContext();
thisgetServletConfig()getServletContext();
2、添加属性:setAttribute(String name, Object obj);
3、得到值:getAttribute(String name),这个方法返回Object
4、删除属性:removeAttribute(String name)
扩展资料
实例
public void doGet(>
PrintWriter out = responsegetWriter();ServletContext servletContext = thisgetServletContext();
ServletContext servletContext2 = thisgetServletConfig()getServletContext(); servletContextsetAttribute("name", "小明");outprintln("将 name=小明 写入了ServletContext");}
注意
存在ServletContext中的数据在服务器中会长时间,就会占用很多内存,因此在使用ServletContext时,最好不要往里面添加过大的数据。
获取Servlet对象其实很简单,输入Java代码就可以了: //模拟>
以上就是关于在serlvet中什么是ServletContext对象全部的内容,包括:在serlvet中什么是ServletContext对象、熟悉servlet中init()方法以及session的创建和获取的请进、java 怎么调试spring mvc等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)