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.继续( \ ) 有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号.中括号.花括号时可以多行书写.另外就是三引号包括下的字符串也可以跨行书写 ...
随机推荐
- 最新的手机/移动设备jQuery插件
随着互联网的流行,移动网站开始急速增加,在2014年手机网站将会出现很多,所以手机网站是必须要学会制作的.手机网站不像桌面平台一样制作,否则会影响显示效果,目前大部分手机网站使用响应式设计技术,而且也 ...
- 【奇偶剪枝】【HDU1010】Tempter of the Bone
题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...
- LeetCode Day4——Factorial Trailing Zeroes
/* * Problem 172: Factorial Trailing Zeroes * Given an integer n, return the number of trailing zero ...
- 关于oracle卸载没有卸载完全的问题
1.关闭oracle所有的服务.可以在windows的服务管理器中关闭: 2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...
- windows下使用vnc viewer远程连接Linux桌面(转)
在windows下使用vnc viewer远程连接Linux桌面,主要配置步骤: Linux: 1.rpm -qa vnc //查看是否安装vnc服务,如果没有安装,可以使用yum,或者rpm进行安装 ...
- python基础之 Python os._exit() sys.exit() exit()区别
Python退出程序的方式有两种:os._exit(), sys.exit() 1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行. 2)sys.exit() 引发一个 S ...
- 关于Eclipse的编码配置和字体大小设置
编码设置 1.工作空间编码:Window-->Preferences-->General-->Workspace 2.工程文件编码:项目-->Properties-->R ...
- Android03-Activity生命周期及启动模式
1.返回栈概念 2.生命周期 1. onCreate() 这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动 第一次被创建的时候调用.你应该在这个方法中完成活动的初始化操作,比如 ...
- 各种HelloWorld
http://blog.csdn.net/whxaing2011/article/details/20736759 ES总结: http://www.cnblogs.com/sunxucool/p/3 ...
- Jdt Javax
http://www.javablogging.com/dynamic-in-memory-compilation/ http://www.java2s.com/Code/Java/JDK-6/Com ...