ServletConfig接口
ServletConfig 接口的常用方法
方法说明 功能描述
String getlnitParameter(String name) | 根据初始化参数名返回对应的初始化参数值 |
---|---|
Enumeration getlnitParameterNames() | 返回一个Enumeration对象,其中包含了所有的初始化参数名 |
---|---|
ServletContext getServletContext() | 返回一个代表当前Web应用的ServletContext对象 |
---|---|
String getServletName() | 返回Servlet的名字,即web.xml中元素的值 |
---|---|
演示getlnitParameter()方的使用,具体如下。
(1)在chapter03项目的web.xml文件中为Servlet配置一些参数信息
<servlet>
<servlet-name>TestServlet02</servlet-name>
<servlet-class>cn.itcast.chapter03.servlet.TestServlet02</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet02</servlet-name>
<url-pattern>/TestServlet02</url-pattern>
</servlet-mapping>
(2)在cn.itcast.chapter03.servlet包中编写TestServlet02类,用于读取web.xml文件中的参数信息
public class TestServlet02 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
ServletConfig config = this.getServletConfig();
String param = config.getInitParameter("encoding");
out.println("encoding="+param);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
(3)启动Tomcat服务器,访问TestServlet02,显示的结果
ServletContext接口
1.获取Web应用程序的初始化参数
使用ServletContext接口获取Web应用程序的初始化参数。
(1)在chapter03项目的web.xml文件中,配置初始化参数信息和Servlet信息
<context-param>
<param-name>companyName</param-name>
<param-value>cn.itcast.chapter03</param-value>
</context-param>
<context-param>
<param-name>address</param-name>
<param-value>ChongQing</param-value>
</context-param>
<servlet>
<servlet-name>TestServlet03</servlet-name>
<servlet-class>cn.itcast.chapter03.servlet.TestServlet03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet03</servlet-name>
<url-pattern>/TestServlet03</url-pattern>
</servlet-mapping>
(2)在项目的 cn.itcast.servlet包中,创建一个名称为TestServlet03的类,该类中使用ServletContext接口来获取 web.xml中的配置信息
public class TestServlet03 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
ServletContext context = this.getServletContext();
Enumeration<String> paramNames = context.getInitParameterNames();
out.println("all the paramName and paramValue are following:");
while (paramNames.hasMoreElements()) {
String name = paramNames.nextElement();
String value = context.getInitParameter(name);
out.println(name + ":" + value);
out.println("<br />");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
启动Tomcat服务器,访问TestServlet03
2. 实现多个Servlet对象共享数据
ServletContext接口的方法
方法说明 功能描述
Enumeration getAttributeNames() 返回一个Enumeration对象,该对象包含了所有存放在ServletContext 中的所有域属性名
Object getAttibute(String name) 根据参数指定的属性名返回一个与之匹配的域属性值
void removeAttribute(String name) 根据参数指定的域属性名,从ServletContext中删除匹配的域属性
void setAttribute(String name,Object obj) 设置ServletContext的域属性,其中name是域属性名,obj是域属性值
在 chapter03 项目的pidan.servlet包中创建两个Servlet 类TestServlet04和TestServlet05,这两个Servlet类中分别使用ServletContext接口中的方法设置和获取属性值
package cn.itcast.chapter03.servlet;
import java.io.IOException;
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;
public class TestServlet04 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
context.setAttribute("data", "this servle save data");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
package cn.itcast.chapter03.servlet;
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;
public class TestServlet05 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
ServletContext countext = this.getServletContext();
String data=(String) countext.getAttribute("data");
out.println(data);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
启动Tomcat服务器,先访问TestServlet04,将数据存入ServletContext对象,然后访问TestServlet05,浏览器如图显示
3.读取Web应用下的资源文件
ServletContext接口的常用方法
功能描述 方法说明
Set getResourcePaths(String path) 返回一个Set集合,集合中包含资源目录中子目录和文件的路径名称。参数path必须以正斜线(/)开始,指定匹配资源的部分路径
String getRealPath(String path) 返回资源文件在服务器文件系统上的真实路径(文件的绝对路径)。参数path代表资源文件的虚拟路径,它应该以正斜线开始(/)开始,“/”表示当前Web应用的根目录,如果Servlet容器不能将虚拟路径转换为文件系统的真实路径,则返回null
URL getResource(String path) 返回映射到某个资源文件的URL对象。参数path必须以正斜线(/)开始,“/”表示当前Web应用的根目录
InputStreamget ResourceAsStream(String path) 返回映射到某个资源文件的InputStream输入流对象。参数path传递规则和getResource()方法完全一致
使用ServletContext对象读取资源文件
(1)创建一个资源文件。在chapterO3项目中右键单击src目录,选择【New】→【Other】
选项,进入创建文件的界面
点击Next,【File name】文本框中的内容为资源文件的名称,在此,将创建的资源文件命名为cn.itcast.chapter03.properties,并且选择存放的目录为src目录。单击【Finish】按钮,完成配置文件的创建。在创建好的itcast.properties文件中,输入如下所示的配置信息。
Company = niuma
Address = ChongQing
(2)编写读取 cn.itcast.chapter03.properties资源文件的Servlet。在pidan.servlet包中创建一个名称为TestServlet06的Servlet类
package cn.itcast.chapter03.servlet;
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;
public class TestServlet06 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
ServletContext context = this.getServletContext();
PrintWriter out = response.getWriter();
InputStream in = context.getResourceAsStream("/WEB-INF/classes/pidan.properties");
Properties pros = new Properties();
pros.load(in);
out.println("Coompany="+ pros.getProperty("Company")+ "<br />");
out.println("Address="+ pros.getProperty("Address")+ "<br />");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}