servletcontext,ServletContext作用是什么 怎么用
servletcontext,ServletContext作用是什么 怎么用详细介绍
本文目录一览: ServletContext作用是什么 怎么用
ServletContext.getContext().getxx()
一般是引用上下文路径。
作用
1、可以读取全局配置参数。
2、可以搜索当前工程目录下面的资源文件。
3、可以获取当前工程名字。
用法
1、ServletContext对象获取
this.getServletContext();
this.getServletConfig().getServletContext();
2、添加属性:setAttribute(String name, Object obj);
3、得到值:getAttribute(String name),这个方法返回Object
4、删除属性:removeAttribute(String name)
扩展资料
实例
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();ServletContext servletContext = this.getServletContext();
ServletContext servletContext2 = this.getServletConfig().getServletContext(); servletContext.setAttribute("name", "小明");out.println("将 name=小明 写入了ServletContext");}
注意
存在ServletContext中的数据在服务器中会长时间,就会占用很多内存,因此在使用ServletContext时,最好不要往里面添加过大的数据。
ServletContext对象
每一个web应用都有且仅有一个ServletContext对象,又称Application对象,从名称中可知,该对象是与应用程序相关的。在WEB容器启动的时候,会为每一个WEB应用程序创建一个对应的ServletContext对象。
该对象有两大作用, 第一 :作为域对象用来共享数据,此时数据在整个应用程序中共享; 第二 :该对象中保存了当前应用程序相关信息。例如可以通过getServerInfo()方法获取当前服务器信息,getRealPath(Stringpath)获取资源的真实路径等。
获取ServletContext对象的途径有很多。
ServletContext 也可当做域对象来使用,通过向ServletContext 中存取数据,可以使得整个应用程序共享某些数据。当然不建议存放过多数据,因为ServletContext中的数据一旦存储进去没有手动移除将会一直保存。
1.request域对象 在一次请求中有效。请求转发有效,重定向失效。 2.session域对象 在一次会话中有效。请求转发和重定向都有效,session销毁后失效。 3.servletContext域对象 在整个应用程序中有效。服务器关闭后失效。
怎么理解ServletContext,在Servlet访问过程中什么作用
ServletContext 被 Servlet 程序用来与 Web 容器通信。例如写日志,转发请求。每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享。因为Context可以用来保存资源并且共享,所以我所知道的 ServletContext 的最大应用是Web缓存----把不经常更改的内容读入内存,所以服务器响应请求的时候就不需要进行慢速的磁盘I/O了。
1 )上下文的作用
web
容器在启动时,它会为每个web程序都创建一个对应的ServletContext对象,它代表当前的web应用。
事实上SpringMVC封装的ApplicationContext
以及Struts2封装的ApplicationContext里面都是保存着原本的ServletContext
作用:Web应用范围内存取共享数据;访问web应用的静态资源;Servlet对象之间通过ServletContext对象来实现通讯。
2) 下文接口的方法
在Servlet中通过final ServletContext application = request.getServletContext();
获取上下文对象application
上下文的常用方法如下:
getInitParameter(String name) 获取name名称的初始化参数的值
getResourceAsStream(String path) 输入流的形式返回path对应的资源,path参数必须以“/”
getInitParameterNames() 获取所有初始化参数的名称,返回的结果是一个枚举值
getRequestDispatcher(String name) 根据转发的地址获取 RequestDispatcher对象
setAttribute() 设置属性值
getAttributeNames() 获取所有属性值名称
3) 上下文参数
在web.xml中配置初始化参数:
adminEmail
webmaster
元素是针对整个应用的,所以并不嵌套在某个
元素中,该元素是
元素的直接子元素。
从Servlet中访问初始化参数:
final ServletContext application=this.getServletContext();
application.getInitParameter("email");
4) 上下文属性ServletContext application=this.getServletContext();
application.setAttribute("name","value");
application.getAttribute("name");
Enumberation p=application.getAttributeNames();
https://www.zhihu.com/question/38481443/answer/76596017
ServletConfig和ServletContext的区别及应用
servlet config对象可以使用一个或多个
标签为servlet配置一些初始化参数,servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
相差字母1个,4个字母不同
简述servletcontext接口的三个主要作用?
ServletContext是javax.servlet包内定义的接口,Web容器会为每个Web程序构造一个实现该接口的对象实例,通过这个对象,Servlet可以和web容器进行交互,如获取Web容器版本号,通过Web容器的日志机制记录信息等;也可以和同一Web程序的其他Servlet进行交流,如可以通过该对象的属性来共享数据。
ServletConfig和ServletContext的区别及应用
ServletConfig和ServletContext的区别1、定义
1)ServletConfig:Servlet的配置对象,容器在初始化Servlet时通过它传递信息给Servlet。
2)ServletContext:上下文对象,提供了一系列方法供Servlet与Web容器交互。
2、创建时机
1)ServletConfig:在容器初始化Servlet的时候,并为其提供上下文初始化参数的名/值对的引用。
2)ServletContext:容器启动的时候,并为其提供Servlet初始化参数的名/值对的引用。
3、作用范围(可见性)
1)ServletConfig:每个JVM中每个Web应用一个ServletContext。
2)ServletContext:每个JVM中每个Web应用的每个Servlet一个ServletConfig。
所以ServletConfig=Servlet初始化参数,ServletContext=上下文初始化参数。
4、Servlet中的访问方法
1)ServletConfig:getServletConfig().getInitParameter(“name”)。
2)ServletContext:getServletContext().getInitParameter(“name”)。
如何使用servlet+context对象存储数据,并实现共享?
使用servlet+context对象存储数据并实现共享可以通过以下步骤实现:
1.在servlet中获取ServletContext对象
ServletContext context = getServletContext();
2.将数据存储在ServletContext对象中
context.setAttribute("name", "value");
3.在其他servlet或jsp中获取ServletContext对象并获取数据
ServletContext context = getServletContext();String value = (String) context.getAttribute("name");
4.注意事项
存储在ServletContext对象中的数据是应用程序级别的,可以在整个应用程序中共享。
数据存储在ServletContext对象中后,可以在整个应用程序中访问,但是需要注意线程安全问题。
可以使用ServletContextListener接口来监听ServletContext对象的创建和销毁事件,以便进行相应的初始化和清理操作。
如何利用servletcontext和servletconfig对象获得初始化参数
七、ServletConfig对象
在Servlet的配置文件中可以使用一个或多个
标签为Servlet配置初始化参数,web服务器会在创建Servlet对象时,将这些参数封装在ServletConfig对象中,因此我们可以通过ServletConfig对象来获取一个Servlet的初始化参数。通常将Servlet运行时要读取的配置文件写在这里。
八、ServletContext对象
ServletContext对象代表了一个应用,他是一个Context域对象,它里面的方法主要是一些全局性的方法,可以用来存储各个Servlet之间的共享数据。
ServletContext对象的应用场景,主要用于Servlet之间数据共享(可以用来做聊天室),获取web应用的初始化参数,实现Servlet转发,读取资源文件。
配置web应用的初始化参数,在web.xml文件中使用标签
,通常在这里配置数据库连接,
Servlet的转发和重定向,转发(你来请求我,我将请求转给他),通常转发给jsp用来美化输出,重定向(你来请求我,我让你重新请求他)
RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/1.jsp");
rd.forward(request,response);
九、利用ServletContext读取资源文件
1.
1 InputStream stream = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
2 Propertied prop = new Properties();
3 prop.load(stream);
4 prop.getProperty("user");
2.
//这种方式,可以很方便的获取文件名称
String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
FileInputStream inStream = new FileInputStream(path);
Propertied prop = new Properties();
prop.load(stream);
prop.getProperty("user");
十、Java web应用中非Servlet程序读取资源文件
1.
//使用类装载器,文件不能太大
public class UserDao
{
private static Properties prop = new Properties();
static
{
//InputStream inStream = UserDao.class.getClassLoader().getResourceAsStream("db.properties"); 这种方式无法获取到更新后的数据
String path = UserDao.class.getClassLoader().getResource("db.properties");
FileInputStream inStream = new FileInputStream(path); //这种方式可以获取到更新后的数据
prop.load(inStream);
}
public void update()
{
//引用inStream
}
public void find()
{
//引用inStream
}
}
Servlet总结六:ServletContext接口总结
3、到底是什么?什么时候被创建?什么时候被销毁?创建几个?
4、ServletContext接口中有哪些常用方法
5、Servlet、ServletConfig、ServletContext之间的关系
6、ServletContext范围可以完成跨用户传递数据
7、 上下文参数
username admin password 123
总结注意:
ServletConfig与ServletContext中的 getInitParameter() 、 getInitParameterNames() 不同
ServletContext中的 getInitParameter(String name) 与 getAttribute(String name) 不同
如何在普通的Java类中获得servletcontext
connection放在servletcontext中,action可以访问到servletcontext,而你的所谓普通类,必然是要在action中调用的,那么在action中取到后传入那个类就好了。
另:这样的取连接方法并不好!
在web项目中,如果需要在后台java代码中获取web上下文对象(以及session、request、response等对象),可以使用ActionContext类:
ActionContext context=ActionContext.getContext(); --得到Action执行的上下文
在获取了context后,还可以继续获取session等对象:
Map request=(Map)context.get("request");--得到HttpServletRequest的Map对象
Map session=context.getSession();--得到HttpSession的Map对象
Map application=context.getApplication();--得到ServletContext的Map对象
也可以直接使用常量枚举作为参数获取内置对象:
HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);