`

如何配置web.xml文件?

 
阅读更多

Servlet本身只是HttpServlet抽象类的子类,通过重写doGet()doPost()等方法来确定它响应HTTP请求的处理逻辑。在Servlet 3.0版本以后,在Servlet类上表明@WebServlet注解可以定义它处理的URL模式——Servlet容器在加载Servlet时会扫描到注解中的信息,并将URL模式与该Servlet的映射关系记录下来,在接收HTTP请求以后根据这张映射关系表进行请求分发处理。这样做的好处是:

  • 单一职责——明确Servlet本身的职责,而将URL的映射关系交给容器管理
  • 复用——Servlet本身和URL映射关系解耦,它可以被引入任意Web应用中匹配不同的URL模式(注解不会影响Servlet本身的功能)

Web.xml文件

在Servlet 3.0之前,Servlet和URL的映射关系必须在WEB-INF/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/j2ee"
         xmlns:web="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee" version="2.5">
  <servlet>
    <servlet-name>registerServlet</servlet-name>
    <servlet-class>com.tianmaying.RegisterServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>registerServlet</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>
</web-app>

<servlet>标签定义了一个Servlet——它的名字(必须唯一)以及对应的Servlet类,Servlet容器在初始化时会直接加载这个Servlet;而<servlet-mapping>标签则定义的Servlet处理的URL匹配模式。

同样,Filter也可以在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/j2ee"
         xmlns:web="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee" version="2.5">
  <filter>
    <filter-name>createPostFilter</filter-name>
    <servlet-class>com.tianmaying.filter.CreatePostFilter</servlet-class>
  </filter>
  <filter-mapping>
    <filter-name>createPostFilter</filter-name>
    <url-pattern>/createPost</url-pattern>
  </filter-mapping>
</web-app>

web.xml是描述Java Web应用的XML文件,它定义了Web应用中的各个组件(Servlet, Filter等)以及部署信息。但是随着Web应用的规模逐渐庞大,web.xml可能会过于臃肿(几百个Servlet以及Filter)以至于不容易维护,所以我们推荐在定义Servlet与Filter时使用@WebServlet@WebFilter注解。

HTTP错误处理

程序运行过程中,总是难免会遇到各类错误:

  • 用户访问了一个不存在的URL
  • Servlet/JSP代码中抛出了异常

对于这些错误,Servlet容器提供了默认的处理方式,例如当用户访问了一个不存在的URL,会出现如下提示:

Clipboard Image.png

对于各类HTTP的错误返回码(4xx和5xx),Tomcat都提供了默认的错误页面,但是这个页面比较简单同时还包含了一些程序调试信息(异常Stacktrace),很多时候网站的这些错误提示页面都需要自己设计并配置。

这里用一个JSP页面WEB-INF/templates/error/404.jsp作为404错误返回:

<div class="container">
  <div class="row">
    <div class="col-md-12">
      <div class="error-template">
        <h1>啊哦!</h1>
        <h2>404 Not Found</h2>
        <div class="error-details">错误404: 你访问的页面不存在</div>
        <div class="error-actions">
          <a href="" class="btn btn-primary btn-lg">
            <span class="glyphicon glyphicon-home"></span>
            返回主页
          </a>
          <a href="" class="btn btn-default btn-lg"><span class="glyphicon glyphicon-envelope"></span> </a>
        </div>
      </div>
    </div>
  </div>
</div>

web.xml中的<error-page>标签中配置JSP:

<error-page>
  <error-code>404</error-code>
  <location>/WEB-INF/templates/error/404.jsp</location>
</error-page>

这样如果访问网站出现404错误,页面就会显示:

Clipboard Image.png

同理,<error-page>标签能够指定任意HTTP状态码对应的错误页面——常用的包括403,500等等。

异常处理

除了错误的HTTP状态码,很多时候我们还希望能够对特定类型的异常(Exception)进行处理。例如我们自定义了一个异常:

package com.tianmaying;

public class PostNotFoundException extends Exception {
    public PostNotFoundException(long id) {
        super("Post " + id + " not found!");
    }
}

当程序中抛出这个异常时,我们希望能够显示一个特定的错误页面,那么在web.xml可以这样配置:

<error-page>
  <exception-type>com.tianmaying.PostNotFoundException</exception-type>
  <location>/WEB-INF/templates/error/post.jsp</location>
</error-page>

<error-page>标签中,<error-code><exception-type>二者必选其一,代表处理不同类型的错误。<location>标签可以是任意Web应用中的URL(只要他们对应的JSP/Servlet输出的HTML即可)。

 

https://www.tianmaying.com/tutorial/servlet-web-xml

分享到:
评论

相关推荐

    在web.xml中引入其他xml配置文件的步骤

    为了提高代码的可维护性和复用性,有时需要将一部分配置内容提取到独立的XML文件中,再在`web.xml`中引用这些文件。本文将详细介绍如何在`web.xml`中引入其他XML配置文件,并解决可能出现的问题。 #### 步骤一:...

    web.xml配置文件详解

    #### 二、web.xml文件结构 `web.xml`文件的最外层标签为`&lt;web-app&gt;`,所有的配置项都需要定义在这个标签内,并且遵循一定的顺序。以下是对`web.xml`主要配置项的详细介绍: #### 三、配置项详解 1. ****:该标签...

    web.xml配置详解, web.xml web.xml 配置实例

    Web.xml 配置详解 Web.xml 是一个部署描述符文件,用于...web.xml 文件是 Web 应用程序的配置文件,用于描述 Web 应用程序的各种配置信息。了解 web.xml 文件的结构和元素次序对于开发和配置 Web 应用程序非常重要。

    web.xml配置详解

    web.xml 配置详解是指在 Java Web 应用程序中使用的部署描述符配置文件。它是一个 XML 文件,包含了很多描述 servlet/JSP 应用的各个方面的元素,如 servlet 注册、servlet 映射以及监听器注册。 在 web.xml 文件中...

    web.xml文件配置.doc

    《web.xml文件配置详解》 web.xml文件是Java Web应用程序的部署描述符,它是容器(如Tomcat)理解和管理Web应用的关键配置文件。本文将深入探讨web.xml文件中的加载顺序和常用元素,帮助开发者更好地理解和使用。 ...

    项目配置文件( spring-mvc.xml spring-mybatis.xml web.xml log4j.properties)

    通过这个配置,Spring可以管理MyBatis的SqlSession,实现数据库操作的事务控制,并且能够自动扫描和加载Mapper接口,使得SQL查询可以通过注解或者XML文件进行定义。 3. **web.xml**: 这是Web应用的部署描述符,定义...

    log4j与web.xml的配置

    - 在web.xml中,我们可以使用`&lt;context-param&gt;`标签来指定Log4j配置文件的位置,例如: ```xml &lt;param-name&gt;log4jConfigLocation &lt;param-value&gt;/WEB-INF/classes/log4j.properties ``` - 接着,使用`...

    web.xml各种配置

    在大型Web工程中,web.xml文件非常重要,因为它提供了一个中央配置点,便于管理Web应用的各种资源和服务。 ### Servlet版本与web.xml的结构 不同版本的servlet规范定义了不同的web.xml结构。以Servlet 2.3和...

    在web.xml中设置错误处理页面.docx

    在 JavaWeb 应用程序中,web.xml 文件是核心配置文件之一,它定义了应用程序的各项配置信息,包括错误处理页面。在 web.xml 文件中,我们可以使用 `&lt;error-page&gt;` 元素来设置错误处理页面,该元素有两个重要的属性:...

    Tomcat中用web.xml控制Web应用详解

    Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 context-param 元素 context-param 元素...

    演示web.xml文件中error-page标签的使用.zip

    本示例文件"演示web.xml文件中error-page标签的使用.zip"包含了一个简单的演示,以帮助理解这个功能。 `&lt;error-page&gt;`标签允许开发者指定当特定的错误发生时显示哪个页面。这可以极大地提升用户体验,因为默认的...

    javaweb项目中web.xml的作用

    web.xml文件的主要作用是用于初始化工程配置信息,例如welcome页面、filter、listener、servlet、servlet-mapping、启动加载级别等等。 web.xml文件的模式文件是由Sun公司定义的,每个web.xml文件的根元素为&lt;web-...

    详解Spring mvc的web.xml配置说明

    在构建基于Spring MVC的Web应用程序时,`web.xml`配置文件扮演着至关重要的角色。它定义了应用程序的行为,包括启动时的初始化、请求处理以及中间件的设置。下面我们将详细探讨`web.xml`中涉及Spring MVC的主要配置...

    J2EE中关于web.xml文件的配置

    "J2EE 中关于 web.xml 文件的配置" 在 J2EE 中,web.xml 文件扮演着非常重要的角色,它是一个基于 XML 的配置文件,用于描述 Web 应用的各个方面的配置信息。通过 web.xml 文件,我们可以对 Web 应用进行配置,例如...

    为tomcat服务器配置https,tomcat需要设置的server.xml与web.xml配置

    在Tomcat的`conf`目录下,有两个主要的XML配置文件:`server.xml`和`web.xml`。`server.xml`是Tomcat的主要配置文件,而`web.xml`则定义了应用程序的行为。 在`server.xml`中,我们需要配置`&lt;Connector&gt;`元素来启用...

    Tomcat中web.xml文件的详细说明

    Tomcat 中的 web.xml 文件是用于配置 Web 应用的核心文件,它定义了 Web 应用的基本信息、Filter、Servlet、Session 等信息。本文将详细介绍 web.xml 文件的结构和各个元素的作用。 1. 文件头部声明 web.xml 文件...

    Maven工程的web.xml模板

    由于经常使用Maven创建web工程所以需要使用web.xml默认模板

    在web.xml中配置action或.do

    3. **修改web.xml文件** - 在`web.xml`中找到`&lt;welcome-file-list&gt;`标签,并在其中添加刚创建的`go.action`文件名。 ```xml &lt;welcome-file&gt;go.action ``` - 这样做可以让服务器在访问项目根目录时自动...

Global site tag (gtag.js) - Google Analytics