(一)ServletConfig的使用
1.ServletConfig:当Tomcat初始化一个Servlet时,会将Servlet配置信息封装到ServletConfig对象中去。再通过ServletConfig对象获取配置信息(web.xml)。
2.ServletConfig的常用方法
String getServletName():获取Servlet的名称
3.代码演示
1.创建 TestServlet01类
package com.haha;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/TestServlet01")
public class TestServlet01 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1.创建PrintWriter对象 用于向页面打印数据
PrintWriter out = response.getWriter();
// 2.创建ServletConfig对象用于读取数据
ServletConfig config = this.getServletConfig();
// 3.读取编码数据
String str = config.getInitParameter("enconding");
ServletContext context = config.getServletContext();
String servletName = config.getServletName();
out.println("enconding=" + str);
out.println("conetext=" + context);
out.println("=" + servletName);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
----------
2.在web.xml文件中配置 TestServlet01
"1.0" encoding="UTF-8"?>
"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">
ServletDemo
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
qq
com.haha.TestServlet01
enconding
UTF-8
qq
/fuck
4.输出结果

(二)ServletContext的使用
1.ServletContext的作用:读取web.xml文件中的数据
<web-app id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>ServletDemodisplay-name>
<servlet>
<servlet-name>qqservlet-name>
<servlet-class>com.haha.TestServlet02servlet-class>
servlet>
<context-param>
<param-name>nameparam-name>
<param-value>kainaparam-value>
context-param>
<context-param>
<param-name>addressparam-name>
<param-value>changshaparam-value>
context-param>
<servlet-mapping>
<servlet-name>qqservlet-name>
<url-pattern>/fuckurl-pattern>
servlet-mapping>
<welcome-file-list>
<welcome-file>index.htmlwelcome-file>
<welcome-file>index.htmwelcome-file>
<welcome-file>index.jspwelcome-file>
<welcome-file>default.htmlwelcome-file>
<welcome-file>default.htmwelcome-file>
<welcome-file>default.jspwelcome-file>
welcome-file-list>
web-app>
----------
package com.haha;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/TestServlet01")
public class TestServlet02 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("text/html;charset=gbk");
// 1.创建PrintWriter对象 用于向页面打印数据
PrintWriter out = response.getWriter();
//2.创建ServletContext对象
ServletContext context = this.getServletContext();
//3.获取参数名
Enumeration<String> paramNames = context.getInitParameterNames();
//4.遍历参数名,获取 参数值
while(paramNames.hasMoreElements()){
String name=paramNames.nextElement();
String value=context.getInitParameter(name);
out.println(name+":"+value);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2.ServletContext实现多个Servlet对象共享数据
package com.haha;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/TestServlet01")
public class TestServlet02 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1.创建PrintWriter对象 用于向页面打印数据
PrintWriter out = response.getWriter();
//2.创建ServletContext对象
ServletContext context = this.getServletContext();
//3.设置属性和属性值
context.setAttribute("name","Hello");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
----------
package com.haha;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/TestServlet03")
public class TestServlet03 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.创建PrintWriter对象 用于向页面打印数据
PrintWriter out = response.getWriter();
// 2.创建ServletContext对象
ServletContext context = this.getServletContext();
//3.通过属性名获取属性值
String str = (String) context.getAttribute("name");
out.println("name="+str);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3.ServletContext读取web应用上下文的资源文件
常用方法:
getSourceAsStream(String path)
4.项目结构图
5.代码演示
package com.haha;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/TestServlet08")
public class TestServlet08 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html,charser=utf-8");
// 1.创建PrintWriter对象 用于向页面打印数据
PrintWriter out = response.getWriter();
// 2.创建ServletContext对象
ServletContext context = this.getServletContext();
//3.获取相对路径的输入流,也可以获取绝对路径
InputStream in = context.getResourceAsStream("/WEB-INF/classes/testSource");
Properties p=new Properties();
p.load(in);
out.println("name="+p.getProperty("name"));
out.print("dept="+p.getProperty("dept"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
----------
"1.0" encoding="UTF-8"?>
"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">
ServletDemo
wwww
com.haha.TestServlet08
wwww
/kakaka
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
6.输出结果