JavaWeb核心编程之(三.4)Servlet Context 配置
2016-07-20 00:18
519 查看
ServletContext
Servlet引擎为每个Web应用程序都创建一个对应的ServletContext对象, ServletContext对象被包含在ServletConfig对象中, 调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用.
由于一个WEB应用程序中的所有Servlet都共享同一个ServletCOntext对象, 所以ServletContext对象被称之为application对象(Web应用程序对象).
功能:
1> 获取WEB应用程序的初始化参数
2> 记录日志
3> application域范围的属性
4> 访问资源文件
5> 或许虚拟路径所映射的本地路径
6> WEB应用程序之间的访问
7> ServletContext的其他方法
配置方式
<context-param>
<param-name></param-name>
<param-value></param-value>
</context-param>
获得参数方法
获得servletcontext对象
ServletContext servletContext = servletConfig.getServletContext();
通过key获得value
servletContext.getInitParameter("")
获得keys
获取当前web应用的某一个文件的真实路径(绝对路径)--是获取的服务器上的物理路径
getRealPath();
获得当前web应用的名称
getContextPath
获得当前web应用的某一个文件对应的输入流
getResourceAsStream(String path) path的/为当前web应用的根目录
1> 需要处理异常
ClassLoader classLoader = getClass().getClassLoader();
InputStream is = classLoader.getResourceAsStream("文件");
2> 需要抛出异常
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/文件");
实现实例
新建动态web工程-> 新建包 com.xiaoan.test->新建类TestContext
注意代码中红色部分, 为需要创建文件的时间节点
web.xml文件配置
Servlet引擎为每个Web应用程序都创建一个对应的ServletContext对象, ServletContext对象被包含在ServletConfig对象中, 调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用.
由于一个WEB应用程序中的所有Servlet都共享同一个ServletCOntext对象, 所以ServletContext对象被称之为application对象(Web应用程序对象).
功能:
1> 获取WEB应用程序的初始化参数
2> 记录日志
3> application域范围的属性
4> 访问资源文件
5> 或许虚拟路径所映射的本地路径
6> WEB应用程序之间的访问
7> ServletContext的其他方法
配置方式
<context-param>
<param-name></param-name>
<param-value></param-value>
</context-param>
获得参数方法
获得servletcontext对象
ServletContext servletContext = servletConfig.getServletContext();
通过key获得value
servletContext.getInitParameter("")
获得keys
获取当前web应用的某一个文件的真实路径(绝对路径)--是获取的服务器上的物理路径
getRealPath();
获得当前web应用的名称
getContextPath
获得当前web应用的某一个文件对应的输入流
getResourceAsStream(String path) path的/为当前web应用的根目录
1> 需要处理异常
ClassLoader classLoader = getClass().getClassLoader();
InputStream is = classLoader.getResourceAsStream("文件");
2> 需要抛出异常
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/文件");
实现实例
新建动态web工程-> 新建包 com.xiaoan.test->新建类TestContext
注意代码中红色部分, 为需要创建文件的时间节点
package com.xiaoan.test; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class TestContext implements Servlet{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void init(ServletConfig arg0) throws ServletException { ServletContext servletContext = arg0.getServletContext(); //通过key获得value String username = servletContext.getInitParameter("username"); System.out.println("username: " + username); //获得参数key列表 Enumeration<String> keys = servletContext.getInitParameterNames(); while(keys.hasMoreElements()){ String key = keys.nextElement(); String val = servletContext.getInitParameter(key); System.out.println("key: " + key + ", val: " + val); } //在WebContent下新建 test.txt文件 //获取当前web应用的某一个文件的真实路径(绝对路径)--是获取的服务器上的物理路径 String filePath1 = servletContext.getRealPath("/test.txt"); System.out.println(filePath1); //获得当前web应用的名称 String webName = servletContext.getContextPath(); System.out.println("当前应用名为: " + webName); //在src下(与包同级)创建testStream.txt文件, 作为流输入文件 //获得当前web应用的某一个文件对应的输入流 //第一种 try { ClassLoader classLoader = servletContext.getClassLoader(); InputStream is = classLoader.getResourceAsStream("/testStream.txt"); System.out.println(is); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //第二种 try { InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/testStream.txt"); System.out.println(is2); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub } }
web.xml文件配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>testcontent</display-name> <context-param> <param-name>username</param-name> <param-value>xiaoan</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>123456</param-value> </context-param> <servlet> <servlet-name>tc</servlet-name> <servlet-class>com.xiaoan.test.TestContext</servlet-class> </servlet> <servlet-mapping> <servlet-name>tc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
相关文章推荐
- Java学习中位运算符底层运算过程
- RxJava入门第八、九问(二)
- windows7下java配置环境
- java实现单例singleton的几种模式
- java环境配置--转载
- springMVC和jackson的版本
- 【Java】Java中的时间日期处理
- Java多线程剖析
- Ehcache 整合Spring 使用页面、对象缓存
- Java Lambda表达式(Java Lambda Expression)
- JDK, JRE和JVM的区别与联系
- Java Scanner类(读取输入)
- Java 循环结构for、do...while、while
- java实现MD5加密
- 自己动手设计java web框架(一)-封装请求拦截器DispatchServlet
- 学习Socket通信时PrintWriter中write和println的区别
- 开发环境搭建
- 学学Java Servlet:创建一个简单的Servlet
- JAVA 的 可变长度的 方法的 参数 比如 String...arg
- Spring Boot 入门