12.1.4 一个简单的Servlet(3)

来源:互联网 发布:我的凉山兄弟 知乎 编辑:程序博客网 时间:2024/06/05 19:45

12.1.4  一个简单的Servlet(3)

  从表12-1中可以看到,WEB-INF目录下的classes和lib目录都可以存放Java的类文件。在Servlet容器运行时,Web应用程序的类加载器将首先加载classes目录下的,其次才是lib目录下的类。如果这两个目录下存在同名的类,起作用的将是classes目录下的类。

  在表12-1中,我们还可以看到一个特殊的目录WEB-INF,注意在书写时不要写错,所有字母都要大写。说这个目录特殊,是因为这个目录并不属于Web应用程序可以访问的上下文路径的一部分,对客户端来说,这个目录是不可见的。如果你将index.html文件放到WEB-INF目录下,对于客户端是无法通过下面的方式访问到这个文件的:

  http://localhost:8080/ch12/WEB-INF/index.html

  不过,WEB-INF目录下的内容对于Servlet代码是可见的,在Servlet代码中可以通过调用ServletContext对象中的 getResource()或者 getResourceAsStream()方法来访问 WEB-INF 目录下的资源,也可以使用RequestDispatcher调用(参见第12.6节)将WEB-INF目录下的内容呈现给客户端。

  如果想要在Servlet代码中访问保存在文件中的配置信息,而又不希望这些配置信息被客户端访问到,就可以把这个文件放到WEB-INF目录下。

  在%CATALINA_HOME%\webapps\ch12目录下新建一个目录WEB-INF,进入WEB-INF目录,新建一个classes目录,整个目录结构是:

  %CATALINA_HOME%\webapps\ch12\WEB-INF\classes

  将编译生成的HelloWorldServlet.class文件连同所在的包一起放到WEB-INF\classes目录下。

  接下来,我们需要部署这个Servlet,Web应用程序的配置和部署是通过web.xml文件来完成的。web.xml文件被称为Web应用程序的部署描述符,它可以包含如下的配置和部署信息:

  ServletContext的初始化参数

  Session的配置

  Servlet/JSP的定义和映射

  应用程序生命周期监听器类

  过滤器定义和过滤器映射

  MIME类型映射

  欢迎文件列表

  错误页面

  语言环境和编码映射

  声明式安全配置

  JSP配置

  我们所编写的web.xml文件必须是格式良好的XML.编写web.xml文件,内容如例12-2所示。

  例12-2  web.xml

  <?xml version="1.0" encoding="UTF-8"?>

  <web-app 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">

  <servlet>

  <servlet-name>HelloWorldServlet</servlet-name>

  <servlet-class>

  org.sunxin.ch12.servlet.HelloWorldServlet</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>HelloWorldServlet</servlet-name>

  <url-pattern>/helloworld</url-pattern>

  </servlet-mapping>

  </web-app>

  第一行是XML声明,接下来在根元素<web-app>上声明了使用的XML Schema的版本。这段代码除了版本号外,其他都是固定的,你无须记忆它,只要知道复制/粘贴就可以了。如果使用Tomcat 7之前的版本,由于之前的版本并不支持Servlet 3.0规范,所以要使用Servlet 3.0的新特性,需要将version属性设置为3.0,同时将web-app_2_5.xsd修改为web-app_3_0.xsd.

  如果你使用Tomcat 7之前的版本,由于之前的版本并不支持Servlet 3.0规范,所以要相应地修改version属性和引用的模式文档的文件名。如Tomcat 6需要将version属性设置为2.5,web-app_3_0.xsd修改为web-app_2_5.xsd.

原创粉丝点击