JavaWeb服务器开发知识总结(HttpServletRequest,HttpServletResponse)
1. ServletConfig类
ServletConfig类是Servlet容器进行该Servlet对象初始化时为该类创建的配置对象.该类存储了Servlet类的配置信息,在Servlet对象中可以获得自身的ServletConfig配置对象.
每一个Servlet类初始化时都会创建一个ServletConfig配置对象,该配置对象只属于该Servlet对象.
ServletConfig对象随着Servlet对象创建而被创建,随着Servlet对象的销毁而被销毁.
ServletConfig类是用来获取该Servlet类的配置参数,不能更改配置信息.
1.1 ServletConfig类常用方法:
String getServletName():获取该Servlet类在web.xml中配置在<servlet-name>标签中属性值;
String getInitParameter(String name):获取该Servlet类初始化时的指定名称的参数值;
public java.util.Enumeration<E> getInitParameterNames():获取该Servlet类的所有初始值的名称,以枚举类型返回;
ServletContext getServletContext():获取该项目ServletContext对象的引用.
1.2 ServletConfig获取Servlet在web.xml中的配置信息:
<!--web.xml文件-->
<!--Servlet的配置-->
<servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>com.itheima.download.ServletDemo</servlet-class>
<!--Servlet的初始化参数配置-->
<init-param>
<!-- 初始化参数相当于是键值对,一般可以存储文件名和文件的读取路径 -->
<param-name>参数名1</param-name>
<param-value>参数值1</param-value>
</init-param>
<!--Servlet的初始化参数配置-->
<init-param>
<param-name>参数名2</param-name>
<param-value>参数值2</param-value>
</init-param>
...
</servlet>
2. ServletContext类(重要)
ServletContext类:服务器启动时为每一个项目工程创建一个单独的ServletContext对象,每个项目只有一个该对象.
ServletContext类有4中作用:
获取全局配置参数
,获取指定文件的MIME类型
,作为域对象存储数据
,读取web工程下的文件
.
2.1 ServletContext类常用的方法:
String getInitParameter(String name):获取指定名称的全局初始化参数值;
Enumeration getInitParameterNames():获取全局初始化参数值的名称,以枚举类型返回;
void setAttribute(String name, Object object):用ServletContext对象存储绑定到指定名称的对象;
Object getAttribute(String name):获取存储在ServletContext对象中指定名称的对象;
void removeAttribute(String name):移除存储在ServletContext对象中指定名称的对象;
String getMimeType(String file):返回指定文件的MIME类型,如果MIME类型未知,则返回null;
java.io.InputStream getResourceAsStream(String path):以InputStream对象的形式返回位于指定路径上的资源;
String getRealPath(String path):为给定虚拟路径返回包含实际路径的String表现形式;
2.2 ServletContext类获取全局配置参数:
在web.xml配置文件中,通过配置<context-param>
标签(与Servlet标签是平级关系)来配置全局的初始化参数,在程序中通获取ServletContext
的对象并通过其获取初始化参数的方法来获取初始化的参数,web.xml文件配置和程序中读取参数案例如下:
<!--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">
<display-name>项目工程的名称</display-name>
<!--Servlet的配置-->
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.itheima.servlet.UserServlet</servlet-class>
</servlet>
<!--Servlet的映射-->
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/UserServlet</url-pattern>
</servlet-mapping>
<!--配置全局的初始化参数-->
<context-param>
<param-name>参数名1</param-name>
<param-value>参数值1</param-value>
</context-param>
<context-param>
<param-name>参数名2</param-name>
<param-value>参数值2</param-value>
</context-param>
...
</web-app>
// 在程序的doGet或者doPost方法中获取Servletcontext对象来读取配置信息,以doGet方法示例
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取单个的初始化参数值
// 获取名称为username的全局初始化参数的值
String username = this.getServletContext().getInitParameter("username");
// 获取名称为password的全局初始化参数的值
String password = this.getServletContext().getInitParameter("password");
// 输出获取的指定名称和其参数值
System.out.println(name+"---"+value);
// 获取所有的初始化参数值
// 获取所有全局初始化参数的名称,以枚举类型返回
Enumeration<String> e = this.getServletContext().getInitParameterNames();
while(e.hasMoreElements()){
// 根据名称获取指定名称的全局初始化参数的值
String name = e.nextElement();
String value = this.getServletContext().getInitParameter(name);
// 输出获取的指定名称和其参数值
System.out.println(name+"---"+value);
}
}
2.3 ServletContext类获取文件的MIME类型:
文件的MIME类型一般应用在文件下载中,客户端请求下载文件时,服务器需要将文件的MIME类型封装到响应的头信息中,然后客户端浏览通过服务器指定的MIME文件类型来下载文件.通过ServletContext的getMimeType
方法获取文件的MIME类型.获取文件的MIME类型,见(HttpServletRequest文件下载案例).
2.4 ServletContext类作为域对象存取数据:
tomcat服务器启动时会为每一个项目创建一个单独的ServletContext对象(单例模式),该对象能被所有的Servlet对象所共享,并且可以通过其setAttribute
方法存储数据,通过getAttribute
方法获取指定名称的数据.
ServletContext对象的作用范围: 是整个项目工程,被所有的Servlet对象共享.
ServletContext对象的创建: tomcat服务器启动时为每一个项目创建一个单独的ServletContext对象.</