4 实验四 Servlet容器模型
一. 实验目的
1. 掌握Web应用程序的DD文件web.xml的配置方法和作用; 2. 掌握如何通过ServletConfig获取Servlet的初始化参数; 3. 掌握ServletContext的概念,如何获得ServletContext对象; 4. 掌握如何通过RequestDispatcher转发请求。 二. 实验内容
1. 建立一个名为bookstore的Web应用程序
在Tomcat的webapps目录下,建立一个如下所示的目录结构:
|- bookstore
|- html (包含所有的HTML文件) |- jsp (包含所有的JSP文件)
|- images (包含所有的GIF、JPEG和BMP图象文件) |- index.html (默认的HTML文件) |- WEB-INF |-classes ├ lib
├ web.xml
图4.1 bookstore应用程序的目录结构
这样就建立了一个名为bookstore的Web应用程序,本实验后面的题目都在该应用程序下面完成。
2. 使用ServletConfig检索Servlet的初始化参数
【步骤1】编写ConfigDemoServlet程序,内容如下:
package com.demo; import java.io.*; import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ConfigDemoServlet extends HttpServlet{ String servletName=null; ServletConfig config=null; String email=null;
String telephone=null;
public void init() {
config = getServletConfig();
servletName = config.getServletName(); email = config.getInitParameter(\;
telephone = config.getInitParameter(\; }
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setContentType(\PrintWriter out = response.getWriter(); out.println(\
out.println(\名称:\ out.println(\地址:\ out.println(\电话:\out.println(\} }
【步骤2】修改web.xml文件,在其中添加下面Servlet定义和初始化参数定义
【步骤3】在浏览器的地址栏中输入下面URL访问该Servlet:
http://localhost:8080/bookstore/configDemo.do
程序运行结果如图3.2所示:
图3.2 ConfigDemoServlet的运行结果
3. ServletContext的使用
修改上面程序,将email地址和电话使用ServletContext初始化参数传递给ConfigDemoServlet。使用ServletContext对象将email地址和电话信息写入日志文件中,并查看日志文件。
4.下面是一个Servlet,它可以获得有关服务器的信息。
package com.demo; import java.io.*; import java.util.*;
import javax.servlet.*;
public class ServerInfo extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { response.setContentType(\ PrintWriter out = response.getWriter(); ServletContext sc = getServletContext(); out.println(\ out.println(\ out.println(\ out.println(\获取服务器端信息\ out.println(\ out.println(\ out.println(\服务器端信息:\ out.println(\ out.println(\ out.println(\站点名\ out.println(\
request.getServerName() + \
out.println(\ out.println(\ out.println(\端口号\ out.println(\ out.println(\ out.println(\ out.println(\服务器类型\ out.println(\ out.println(\ out.println(\ out.println(\支持Servlet版本\
out.println(\
+sc.getMinorVersion()+\