servletconfig和ServletContext的用法和区别
来源:互联网 发布:java package private 编辑:程序博客网 时间:2024/06/03 21:31
一.ServletConfig:从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet有效,一个servlet的ServletConfig对象不能被另一个servlet访问。当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。在web.xml中这样配置:
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>cn.csdn.web.servlet.DemoServlet</servlet-class>
<init-param>
<param-name>characterEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.driver</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
public class DemoServletextends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String characterEncoding = super.getServletConfig().getInitParameter("characterEncoding");
System.out.println(characterEncoding);
}
}
其实还有一种取得characterEncoding的方法,就是在DemoServlet的init(ServletConfig config)方法:
public class DemoServletextends HttpServlet {
private ServletConfig config;
public void init(ServletConfig config)throws ServletException {
this.config = config;
}
public void doPost() throws ServletException,IOException{
String characterEncoding = this.config.getInitParameter("characterEncoding");
System.out.println("characterEncoding");
}
}
以上两种方法都可以取到web.xml中配置的characterEncoding,其实这两种方式的实现是一样的,只不过是第二种重写了父类的init()方法。
二.ServletContext:
每一个web应用启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。ServletConfig对象中维护了ServletContext对象的引用,由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。ServletContext基本上有两方面的应用:
1.servlet间的通信:
可以初始化context的值,在WEB-INF中这样配置:
<web-app>
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/4g</param-value>
</context-param>
<context-param>
<param-name>name</param-name>
<param-value>1314qr</param-value>
</context-param>
</web-app>
在servlet中这样写:
ServletContext context = this.getServletContext();
String name = context.getInitParameter("name");
context.setAttribute("name", "haha");
response.setStatus(302);
response.setHeader("location",http://day05/servlet/ListServlet);
这样就会跳转到ListServlet的doGet()方法,并可以在doget()方法中取到name这个变量。
2.读取web工程下的资源文件:
有的时候只知道文件的相对路径,但是不知道绝对路径,可以通过这种方式获得:
ServletContext context = this.getServletContext(); //ServletConfig可以取得ServletContext
String path = context.getRealPath("WEB-INF/classes/a.txt");
System.out.println(path);
getRealPath(path):根据相对于当前web工程的相对路径来取得绝对路径。
- servletconfig和ServletContext的用法和区别
- ServletConfig和ServletContext的区别
- ServletConfig和ServletContext的区别
- ServletContext和ServletConfig的区别
- ServletConfig和ServletContext的区别
- ServletConfig和ServletContext的区别
- ServletContext和servletconfig区别
- ServletContext和ServletConfig区别
- ServletConfig和ServletContext的区别及应用
- ServletContext和ServletConfig的理解
- ServletConfig和ServletContext的意思
- ServletConfig和ServletContext的使用
- ServletConfig和ServletContext的意思
- ServletContext和ServletConfig有什么区别
- ServletContext和ServletConfig分析
- ServletContext,ServletConfig和Sesion
- ServletConfig和ServletContext
- ServletConfig和ServletContext
- VMWARE虚拟机在迁移10gRAC VOTEDISK时出现问题,从网上搜的解决方法
- ios app 评分
- 继续这样下去未来怎样。。。。。
- device_register()和platform_device_register()的区别
- VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方
- servletconfig和ServletContext的用法和区别
- oracle部分维护操作
- paip.杀不死进程的原因--僵尸进程的解决.txt
- c/c++ Exceptions
- Spice架构图解
- 第十二章
- DAY03——VIM常用命令学习笔记(二)
- 编译原理--计算器Flex+Bison实现
- 软件工程师 Book