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. 把打印的内容保存成文件(PDF)

    有时候网页的内容和打印的内容会有一些差异,需要把打印的内容倒出来.是有办法的. 1.以谷歌为内核的浏览器示例,按Ctrl+p快捷键打开打印对话框,如图: 2.点击更改按钮,更改打印机,会出现选择目标打 ...

  2. HDU 6166 Senior Pan(二进制分组+最短路)

    题意 给出一个\(n\)个点\(m\)条边的有向图\((n,m<=100000)\),从中选择\(k\)个点\((k<=n)\),问这k个点两两之间的最短路最小值是多少? 思路 直接的想法 ...

  3. 对HashMap的理解(二):高并发下的HashMap

    在分析hashmap高并发场景之前,我们要先搞清楚ReHash这个概念.ReHash是HashMap在扩容时的一个步骤.HashMap的容量是有限的.当经过多次元素插入,使得HashMap达到一定饱和 ...

  4. QQ分享-定制分享卡片

    一般H5页面在进行分享的时候,都会生成一个分享卡片,但是这些卡片的生成是很多时候是我们是想要生成的卡片, 对于QQ,我们只需要在html页面里加如3个标签即可,如下: <meta itempro ...

  5. 51nod 1678 lyk与gcd | 容斥原理

    51nod 200题辣ψ(`∇´)ψ !庆祝! 51nod 1678 lyk与gcd | 容斥原理 题面 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作. 1:将 ai 改为 ...

  6. 【bzoj1031】 JSOI2007—字符加密Cipher

    http://www.lydsy.com/JudgeOnline/problem.php?id=1031 (题目链接) 题意 给出一个字符串,求它的加密串. Solution 很显然,将串倍长后求它的 ...

  7. 牛客网NOIP赛前集训营-普及组(第二场)

    T1 牛牛刚学习了输入输出,他遇到了一道这样的题目. 输入2个整数a和b 保证输入的a和b在long long范围之内,即满足 -9223372036854775808 <= a, b < ...

  8. CDOJ--1141

    原题链接:http://acm.uestc.edu.cn/problem.php?pid=1141 分析:运用欧拉函数可解此题. #include <iostream> #include ...

  9. Python 字符串前面加u,r,b的含义

    1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用: 后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时 ...

  10. Python【第三方模块&标准模块】

    模块: 模块其实就是一个python文件 1.标准模块.标准包 #python自带的这些模块,直接import就能用的 import string,random,datetime,os,json 2. ...