Servlet笔记4--ServletConfig接口和ServletContext接口
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、Servlet 2、ServletConfig 3、ServletContext 4、HttpUrlConnection
1.Servlet 2.ServletConfig 3.ServletContext 4.HttpUrlConnection 07. 五 / J2EE / 没有评论 一.第一个Servlet的编写 ...
- java学习笔记—ServletConfig、ServletContext接口(13)
ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet> ...
- Servlet(7)—ServletConfig接口和SevletContext接口
ServletConfig接口 1. 可以获取当前Servlet在web.xml中的配置信息(用的不多) 2. 在不使用"硬编码"的情况下,将部署状态信息传递给Servlet.这个 ...
- Java EE javax.servlet中的ServletContext接口
ServletContext接口 public interface ServletContext (https://docs.oracle.com/javaee/7/api/javax/servlet ...
- ServletConfig和ServletContext接口
ServletConfig 在web.xml文件中使用一个或多个init-param元素进行配置后,Tomcat初始化Servlet时,都会将该Servlet的配置信息封装到一个ServletConf ...
- servlet的ServletContext接口
ServletContext Servlet 上下文 每个web工程都只有一个ServletContext对象,也就是不管在哪个servlet里面,获取到的这个ServletContext对象都是同一 ...
- day05 Servlet 开发和 ServletConfig 与 ServletContext 对象
day05 Servlet 开发和 ServletConfig 与 ServletContext 对象 1. Servlet 开发入门 - hello world 2. Servlet 的调用过程和生 ...
- Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象
本文将记录ServletConfig/ServletContext中提供了哪些方法,及方法的用法. ServletConfig是一个抽象接口,它是由Servlet容器使用,在一个servlet对象初始 ...
- JavaEE:Servlet简介及ServletConfig、ServletContext
Servlet简介 1.Servlet是sun公司提供的一门用于开发动态web资源的技术*静态web资源:固定数据文件*动态web资源:通过程序动态生成数据文件2.Servlet技术基于Request ...
随机推荐
- Angular中ui-select的使用
Angular中ui-select的使用 最近工作一直很忙,没有时间整理知识,前几天项目中需要用到angular-ui-select,实现下拉框快速过滤效果,今天有时间研究了一下,终于搞明白了. 一. ...
- springmvc+mybatis 处理图片(一):上传图片
一直觉得上传图片文件之类的很难,所以最后才处理图片,发现也并没有那么难,开始正文. 思路:将前台上传的file存到MutipartFile类型字段中,再将MulipartFile转换为pojo类中的b ...
- shell的sort命令
sort命令以行为单位对文本进行排序. 命令语法: sort [-b/d/f/g/i/M/n/r] [InFile] 参数解释: -b: ignore-leading-blanks,忽略前面空格符部分 ...
- BZOJ 50题纪念?
是的,这次的纪念帖也比较磕碜-- 但是还有更磕碜的↓↓↓ 2017年6月7日,我在我的旧博客发了个bzoj10题纪念-- 那时我还是一个又young又simple的菜鸡(现在可能也是--),省选之后觉 ...
- 【poj3133】 Manhattan Wiring
http://poj.org/problem?id=3133 (题目链接) 题意 $n*m$的网格里有空格和障碍,还有两个$2$和两个$3$.要求把这两个$2$和两个$3$各用一条折线连起来.障碍里不 ...
- 单点登录(五)-----遇到问题-----cas server 源码部署tomcat运行报错BeanCreationException:Error creating bean with name 's
我们在上一篇文章已经解决了把下载好的cas server源码部署到tomcat缺少子项目编辑文件或者jar包导致找不到class报错的问题 单点登录(四)-----遇到问题-----cas serve ...
- Android Studio 导入系统 jar包
1.当前需要导入系统jar包的module所对应build.gradle中添加如下依赖: provided files('libs/classes-full-debug.jar') 也可以图形化设置: ...
- linux内核增加系统调用--Beginner's guide
Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. ...
- 主角场景Shader效果:遮挡透明
基本原理:被遮挡的部分关闭深度写入, 显示透明效果:未被遮挡的部分不关闭深度测试,显示正常贴图效果,即使用两个Pass即可. Pass1:关闭深度写入(ZWrite Off),深度测试渲染较远的物体, ...
- 【Asp.net入门06】第一个ASP.NET 应用程序-案例说明
创建简单的应用程序 本章的剩余部分将探讨一些用于创建简单的数据输入应用程序的基本ASP.NET功能.在这一节中,我们将加快进度——目标是演示ASP.NET的用法,因此将略过有关后台运行机制的详细说明. ...