JavaWeb ServletConfig 和 ServletContext chapter03

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);
	}
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值