在serlvet中什么是ServletContext对象

在serlvet中什么是ServletContext对象,第1张

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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9555609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存