Servlet ServletContext类

来源:互联网 发布:一知f君张碧晨三部 编辑:程序博客网 时间:2024/05/21 15:50

什么是ServletContext对象?

答:

web容器在启动时,它会为每个web应用程序创建一个对应的ServletContext对象,它代表当前的web应用。

ServletContext对象被包含在ServletConfig对象中,开发人员在编写servlet时,可以通过

ServletConfig.getServletContext方法获得ServlatContext对象的引用,也可以在一个HttpServlet中调用getServletContext()方法。

一个web应用中,ServletContext被所有Serv了所共享。

故可以通过ServletContext对象来实现通信。

ServletContext对象通常也被称之为context域对象。


ServletyContext的用途?

答:主要有四个;

1、多个Servlet通过ServletContext对象数据共享;

2、获取WEB应用的初始化参数。

3、实现Servlet的转发。[MVC设计模式]

转发特点,地址栏地址不变。


4、利用ServletContext对象读取资源文件。
               1、  得到文件路径(JVM启动目录位于:tomcat/bin/内)

                               InputStream is = new FileInputStream(new File("db.properties"));
               2、 读取资源文件的三种方式(传统/ServletContext/类加载机制)

                          String path = request.getServletContext().getRealPath("/upload/db.properties");//一般的  相当于项目工程根目录

                          InputStream is = request.getServletContext().getResourceAsStream("/db.properties")    //相当于项目工程根目录

                         InputStream is = this.getClass().getClassLoader().getResourceAsStream("/db.properties");//相当于ServletProject/WEB-INF/classes目录下
               3、  .properties文件(属性文件)

注意:
WEB应用的路径一定要相对于WEB服务器而言,不能是在IDE工具中的路径。

下载图片:

// 下载照片// 图片的路径String imgpath = "/img/abc.jpg";String realPath = getServletContext().getRealPath(imgpath);System.out.println(realPath);InputStream in = new FileInputStream(realPath);OutputStream output = response.getOutputStream();response.setHeader("Content-Disposition", "attachment;filename=12.jpg");byte buf[] = new byte[1024];int len = -1;while ((len = in.read(buf)) != -1) {output.write(buf, 0, len);}in.close();// output.close();


0 0
原创粉丝点击