ServletConfig接口:

 

 

ServletContext接口:

  

  代码详解:

  (1)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_2_5.xsd"
id="WebApp_ID" version="2.5"> <!-- web.xml文件中配置上下文参数,这些信息被自动封装到ServletContext对象中 -->
<context-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</context-param> <context-param>
<param-name>password</param-name>
<param-value>123</param-value>
</context-param> <servlet>
<servlet-name>a</servlet-name>
<servlet-class>com.bjpowernode.javaweb.servlet.AServlet</servlet-class>
<!-- 初始化参数:被封装到ServletConfig对象中 -->
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/bipowernode</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>a</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>b</servlet-name>
<servlet-class>com.bjpowernode.javaweb.servlet.BServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>b</servlet-name>
<url-pattern>/b</url-pattern>
</servlet-mapping>
</web-app>

    (2) 前端页面:

 <html>
<head>
<title>ServletConfig接口</title>
</head>
<body>
<a href="/prj-servlet-04/a">AServlet</a>
<br><br>
<a href="/prj-servlet-04/b">BServlet</a>
</body>
</html>

    (3)辅助实体类:

 package com.bjpowernode.javaweb.entity;

 public class User {

     private String usercode;
private String username; public String getUsercode() {
return usercode;
} public void setUsercode(String usercode) {
this.usercode = usercode;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} @Override
public String toString() {
return "User [usercode=" + usercode + ", username=" + username + "]";
} }

    (4) Servlet程序:

 package com.bjpowernode.javaweb.servlet;

 import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
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; import com.bjpowernode.javaweb.entity.User; public class AServlet implements Servlet { private ServletConfig config; public void init(ServletConfig config) throws ServletException {
this.config = config;
} public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter(); //获取ServletConfig
ServletConfig config = getServletConfig(); //获取Servlet Name
String servletName = config.getServletName();
out.print("<servlet-name>" + servletName + "</servlet-name>" + "<br><br>"); //获取ServletContext,后面讲什么是ServletContext
ServletContext application = config.getServletContext();
out.print("ASevlet's ServletContext = " + application + "<br><br>"); //通过当前Servlet初始化参数的name获取value
/*String driver = config.getInitParameter("driver");
String url = config.getInitParameter("url");
String user = config.getInitParameter("user");
String password = config.getInitParameter("password");*/ //获取当前Servlet所有初始化参数的name,然后再根据name获取value
@SuppressWarnings("unchecked")
Enumeration<String> anames = config.getInitParameterNames();
out.print("AServlet: <br>");
while(anames.hasMoreElements()){
String name = anames.nextElement();
String value = config.getInitParameter(name);
out.print(name + "=" + value);
out.print("<br>");
}
out.print("<br>"); //获取所有上下文(即当前Servlet的四周环境)初始化参数的name,然后再根据name获取value
@SuppressWarnings("unchecked")
Enumeration<String> snames = application.getInitParameterNames();
out.print("ServletContext: <br>");
while(snames.hasMoreElements()) {
String name = snames.nextElement();
String value = application.getInitParameter(name);
out.print(name + "=" + value);
out.print("<br>");
}
out.print("<br>"); //获取文件绝对路径,参数必须是WebRoot的下一级目录开始写
String realPath = application.getRealPath("/WEB-INF/resources/db.properties");
out.print(realPath + "<br>"); //创建User对象
User user = new User();
user.setUsercode("1231");
user.setUsername("jackson"); //向ServletContext范围中存储User数据
application.setAttribute("userObj", user);
application.setAttribute("time", new Date()); } public void destroy() { } public ServletConfig getServletConfig() {
return config;
} public String getServletInfo() {
return null;
} }
 package com.bjpowernode.javaweb.servlet;

 import java.io.IOException;
import java.io.PrintWriter; 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 BServlet implements Servlet { private ServletConfig config; public void init(ServletConfig config) throws ServletException {
this.config = config;
} public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter(); //init的时候已经获取过了config
out.println("BServlet's ServletConfig = " + config + "<br>"); ServletContext application = config.getServletContext(); Object obj1 = application.getAttribute("userObj");
Object obj2 = application.getAttribute("time");
out.print(obj1 + "<br>");
out.print(obj2 + "<br>");
} public void destroy() { } public ServletConfig getServletConfig() {
return config;
} public String getServletInfo() {
return null;
} }

Servlet笔记4--ServletConfig接口和ServletContext接口的更多相关文章

  1. 1、Servlet 2、ServletConfig 3、ServletContext 4、HttpUrlConnection

    1.Servlet 2.ServletConfig 3.ServletContext 4.HttpUrlConnection 07. 五 / J2EE / 没有评论   一.第一个Servlet的编写 ...

  2. java学习笔记—ServletConfig、ServletContext接口(13)

    ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet>  ...

  3. Servlet(7)—ServletConfig接口和SevletContext接口

    ServletConfig接口 1. 可以获取当前Servlet在web.xml中的配置信息(用的不多) 2. 在不使用"硬编码"的情况下,将部署状态信息传递给Servlet.这个 ...

  4. Java EE javax.servlet中的ServletContext接口

    ServletContext接口 public interface ServletContext (https://docs.oracle.com/javaee/7/api/javax/servlet ...

  5. ServletConfig和ServletContext接口

    ServletConfig 在web.xml文件中使用一个或多个init-param元素进行配置后,Tomcat初始化Servlet时,都会将该Servlet的配置信息封装到一个ServletConf ...

  6. servlet的ServletContext接口

    ServletContext Servlet 上下文 每个web工程都只有一个ServletContext对象,也就是不管在哪个servlet里面,获取到的这个ServletContext对象都是同一 ...

  7. day05 Servlet 开发和 ServletConfig 与 ServletContext 对象

    day05 Servlet 开发和 ServletConfig 与 ServletContext 对象 1. Servlet 开发入门 - hello world 2. Servlet 的调用过程和生 ...

  8. Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象

    本文将记录ServletConfig/ServletContext中提供了哪些方法,及方法的用法. ServletConfig是一个抽象接口,它是由Servlet容器使用,在一个servlet对象初始 ...

  9. JavaEE:Servlet简介及ServletConfig、ServletContext

    Servlet简介 1.Servlet是sun公司提供的一门用于开发动态web资源的技术*静态web资源:固定数据文件*动态web资源:通过程序动态生成数据文件2.Servlet技术基于Request ...

随机推荐

  1. 深入理解JAVA虚拟机阅读笔记4——虚拟机类加载机制

    虚拟机把描述类的Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 在Java语言中,类型的加载.连接和初始化过程都是 ...

  2. Qt中 QString 转 char*

    Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换 Qt再使用第三方开源库时,由于库的类型基本上都是标准的 ...

  3. Timus 1005 解题报告

    题目链接 http://acm.timus.ru/problem.aspx?space=1&num=1005 题目大意 给你一堆石头,现在需要你将这堆石头分成两堆,要求两堆石头的重量相差最小, ...

  4. gitlab相关

    1.gitlab的概述 1.gitlab是什么 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 基础功能免费,高级功能收费 2.为什么要使用gitla ...

  5. Android 65535 问题与 MultiDex分包

    Android Multidex 遇到的问题 http://blog.csdn.net/wangbaochu/article/details/51178881 Android 使用android-su ...

  6. bzoj 3816&&uoj #41. [清华集训2014]矩阵变换

    稳定婚姻问题: 有n个男生,n个女生,所有女生在每个男生眼里有个排名,反之一样. 将男生和女生两两配对,保证不会出现婚姻不稳定的问题. 即A-1,B-2 而A更喜欢2,2更喜欢A. 算法流程: 每次男 ...

  7. C标准库函数--文件IO操作函数。

    C标准库文件读写函数总结:都是对文件流进行输入输出的函数分为对文件的有格式读写以及无格式读写 一.文件的无格式读写根据每次读写字符的数量,分为三类:1.按字符读写文件 按字符读有三个函数:以下三个函数 ...

  8. apt代理设置

    内网apt使用代理 /etc/apt/apt.conf Acquire::http::Proxy "http://guest:password@ip:port";

  9. C++下实现同接口下多个类作为参数的调用和传参

    /* 实现同接口下不同类的对象的转移 定义类的接口 定义多个继承该接口的类 定义管理类,把接口当作类型, 传入该接口下各种类的对象,进行操作 */ #include<iostream> # ...

  10. python与pycharm

    什么叫自动化测试? 通俗来说,自动化测试就是通过写代码来帮我们测试软件.用来做自动化测试的语言很多,python,Java,php,Go,ruby等.而且软件系统开发语言与自动化测试语言可以不一致.例 ...