JavaWeb核心编程之(三.4)Servlet Context 配置
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
注意代码中红色部分, 为需要创建文件的时间节点
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>
JavaWeb核心编程之(三.4)Servlet Context 配置的更多相关文章
- JavaWeb核心编程之(三.3)Servlet Init 配置
Servlet初始化 可以传入一些参数 通过 <init-param>来配置 新建 servletinit项目 新建包 com.xiaoan.test->new Class(Test ...
- JavaWeb核心编程之(三.2)Servlet配置
Servlet配置 1.配置Serlvet加载时机 2.配置多映射 配置加载时机 新建项目config->创建包com.xiaoan.config->创建类FirstServlet imp ...
- JavaWeb核心编程之(三.6)HttpServlet
之前都是集成的Servlet真的太过于繁琐了, Servlet接口提供了一个实现类 为HttpServlet 只要实现doGet 和doPost方法就可以了 仍然以一个表单为例 新建一个web工程 ...
- JavaWeb核心编程之(三.5)HTTP请求和接受表单数据
HTTP简介WEB浏览器与WEB拂去其之间的一问一答的交互过程, 必须遵循一定的规则,这个规则就是HTTP协议HTTP是hypertext transfer protocol(超文本传输协议)的简写, ...
- JavaWeb核心编程之(三.1)ServletHello
Servlet简介Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servlet和客户的通信以及调用Servlet方法, 在这里Servlet ...
- JavaWeb学习笔记(三)—— Servlet
一.Servlet概述 1.1 什么是Servlet Servlet是是sun公司提供一套规范(接口),是JavaWeb的三大组件之一(Servlet.Filter.Listener),它属于动态资源 ...
- JavaWeb学习总结(三)—Servlet
1. 什么是Servlet * Servlet是JavaWeb三大组件之一(Servlet.Filter.Listener) ,Servlet是用来处理客户端请求的动态资源,按照一种约定俗成的称呼习惯 ...
- JavaWeb核心编程之(四.1)JSP
JSP简介: JSP是简化Servlet编写的一种技术, 它将Java代码和HTML语句混合在一个文件中编写, 只对网页中药动态产生的内容采用Java代码来编写, 而对固定不变的静态内容采用普通的静态 ...
- 【1】python核心编程 第三章
1.继续( \ ) 有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号.中括号.花括号时可以多行书写.另外就是三引号包括下的字符串也可以跨行书写 ...
随机推荐
- 在CSDN上看到的一个过滤方法,感觉还不错
/// <summary> /// 把字符串中包含的敏感词替换成别的关键字 /// </summary> /// <param name="s"> ...
- String常用方法总结
字符串的截取: 1. slice(start,end) 返回一个新的字符串,不会改变原来引用值.end省略的时候,截取的是start到字符串结尾.传入start=0或者不传入start,就是复制了整个 ...
- SVG彩虹字
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- juce中的Singleton
说明上其实很明白,支持多线程,防止重复创建,同时支持如果删除以后就不在创建,利用局部静态变量进行标记.挺通用,看来下次写个c11版本的 //============================== ...
- python学习笔记:python对象
一.python对象 python使用对象模型来存储数据,构造任何类型的值都是一个对象.所有的python对象都拥有三个特性:身份.类型和值. 身份:每个对象都有一个唯一的身份标识自己,对象的身份可以 ...
- Python基础:绑定和方法调用
首先,方法仅仅是类内部定义的函数,也就是说,方法是类属性而不是实例属性. 其次方法有两种被调用的方式:调用绑定的方法和调用未绑定的方法. 当存在一个实例时,方法才被认为绑定到了那个实例上,没有实例时方 ...
- Jsoup小Demo
Jsoup小Demo public class JsoupUtil { public void parseWangYi() { Document doc = null; try { //eg1:解析百 ...
- python基础教程第2章——列表与元组笔记
1.序列是Python中最基本的数据结构.序列中的每个元素被分配一个序列号——元素的位置,也称索引,第1个索引是0,第2为1,以此类推.序列中的最后1个元素为-1,倒数第2个位-2. python中有 ...
- scikit-learn的主要模块和基本使用
1.加载数据(Data Loading) 假设输入是特征矩阵或者csv文件,首先数据被载入内存. scikit-learn的实现使用了NumPy中的arrays,所以,使用NumPy来载入csv文件. ...
- C语言程序设计(翁恺)--第三周课件中的三个遗留点
刚刚写完第二周遗留点,下面写第三周的 第三周:判断 1.if和else后面也可以没有{}而是一条语句.如果if后不带{},但是后面跟了两条语句,并且后面还有else语句,那么程序会怎么执行? 在Dev ...