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.继续( \ ) 有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号.中括号.花括号时可以多行书写.另外就是三引号包括下的字符串也可以跨行书写 ...
随机推荐
- 【收藏】十大Webserver漏洞扫描工具
如今有很多消息令我们感到Web的危急性,因此,当前怎样构建一个安全的Web环境成为网管员和安全管理员们义不容辞的责任.可是巧妇难为无米之炊,该选择哪些安全工具呢? 扫描程序能够在帮助造我们造就安全的W ...
- Flash Recovery Area空间不足导致DB不能打开或hang住处理方法
当归档目录设置在闪回恢复区,并且闪回恢复区又满了的情况下, DB 就会无法归档而hang住或者无法打开. 这种情况下打开数据库会遇到如下错误信息: SQL> select status from ...
- 最基本MySQL命令及vi命令
1.MySQL基本命令操作 Mysql的所有命令末尾都需要以分号结束,一条命令可以分成多行书写. 连接数据库:mysql –u root –p: 查看所有数据库:show databases; 创建数 ...
- mysql的面试试题
1, mysql的复制原理以及流程. (1)先问基本原理流程,3个线程以及之间的关联. 答:Mysql复制的三个线程:主库线程,从库I/O线程,从库sql线程: 复制流程:(1)I/O线程向主库发出请 ...
- SQL Server DML(UPDATE、INSERT、DELETE)常见用法(一)
1.引言 T-SQL(Transact Structured Query Language)是标准的SQL的扩展,是程序和SQL Server沟通的主要语言. T-SQL语言主要由以下几部分组成: 数 ...
- 关于HTML css的一些题目
1.dcutype是什么,他是干嘛用的 doctype是文档的一种声明,告诉浏览器器用什么规则来解析文档. 2.ul ol dl分别适用于什么地方? ul无序列表 ol有序列表 dl是定义列表,会默认 ...
- 标准C++的string类使用
原文:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含#include & ...
- hdu 1908
题意:一个人有一个代号K和一个优先等级P,一共有4种操作,0:结束,1:新建一个人,代号为K,优先等级为P,2:输出优先等级最大的人的代码,并删除该人,3:输出优先等级最小的人的代码,并删除该人. 用 ...
- 使用PowerShell管理Windows8应用
引子(?): 我从消费者预览版开始使用的win8,大概是因为我年龄不大的缘故,我很快熟悉了这个操作系统并习惯了使用windows8的Modern App.我之前使用过一个叫Windows8 Moder ...
- LED大屏发布系统
开发LED大屏发布系统已经有5.6年里了,可以根据专家.用户的要求进行布置,所有的数据都是通过TCP通讯获得的,所有的显示项目都是通过配置文件进行设置的,所以系统运行效率高.灵活.界面丰富多彩等.