【JavaWeb】关于Servlet的两种配置Web.xml文件配置或使用@WebServlet注解及urlPattern配置规则

这篇具有很好参考价值的文章主要介绍了【JavaWeb】关于Servlet的两种配置Web.xml文件配置或使用@WebServlet注解及urlPattern配置规则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先,我们需要了解到的是在Servlet2.x版本中,配置依然是通过web.xml的形式进行配置的,升级到Servlet3.x后,才可以依赖注解式方式进行配置。

1、通过Web.xml文件进行配置

代码格式:

    <!--注册Servlet-->
    <servlet>
    	<!--自定义,一般为类名-->
        <servlet-name></servlet-name>
        <!--servlet的类全名:package.类名-->
        <servlet-class></servlet-class>
    </servlet>
	<!--Servlet的请求路径-->
    <!--给Servlet提供(映射)一个可供客户端访问的URI-->
    <servlet-mapping>
    	<!--必须和servlet中的name相同-->
        <servlet-name></servlet-name>
        <!-- servlet的映射路径(访问serclet的名称) -->
        <url-pattern></url-pattern>
    </servlet-mapping>

代码展示:

servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml

访问过程:

①servlet通过浏览器地址栏输入的路径与servlet-mapping标签中的url-pattern的标签值进行匹配。
②通过url-pattern这个映射值找到servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name进行匹配。
③通过mapping映射关系找到真正的servlet中的servlet-name以后,找到servlet标签中的servlet-class标签中对应的servlet类的src文件夹下的全路径。
④从⽽调⽤并执⾏相应的servlet类。
servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml

注意:

  • servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name必须相同。
  • servlet-class是全限定名。
  • url-pattern是网页要提交的对应地址。

2、使用@WebServlet注解进行配置

注解的话比较简单,只用写出注解,填写name和urlPatterns就好了,name是类名,urlPatterns是网页要提交的对应地址,但是我一般只写urlPatterns。

代码展示:

import javax.servlet.annotation.WebServlet;

@WebServlet("/demo01")
public class demo01 extends HttpServlet {}

下面是一些@WebServlet注解属性:

servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml

注意:

  • 不要再Web.xml文件的根元素()中指定metadata-complete=“true”;默认metadata-complete=“true"的话就将该属性修改为"false”。
  • @WebServlet中value和urlPatterns属性都可以用来表示Servlet的访问路径。value和urlPatterns都是数组形式,表示我们可以把一个Servlet映射到多个访问路径,但是value和urlPatterns不能同时使用。如果同时使用了value和urlPatterns,Servlet无法访问到。

urlPattern配置拓展

Servlet类编写好后,要想被访问到,就需要配置其访问路径(urlPattern)

  • 一个Servlet,可以配置多个URLPattern
    servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
package com.aDiao.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(urlPatterns = {"/demo04","/aDiao04"})
public class ServletDemo04 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo04 get...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

上附代码中"/demo04","/aDiao04"这两个地址都能访问到。

  • urlPattern配置规则
  1. 精确匹配
    servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
package com.aDiao.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/user/demo05")
public class ServletDemo05 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo05 get...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml

  1. 目录匹配
    servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
package com.aDiao.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/user/*")
public class ServletDemo06 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo06 get...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
思考:
(1)访问路径“/user”是否能访问ServletDemo06的doGet方法?
(2)访问路径“/user/a/b”是否能访问ServletDemo06的doGet方法?
(3)访问路径“/user/demo05”是否能访问ServletDemo06的doGet方法?
答:能,能,不能(访问的是demo05中的doGet方法)进而我们可以得到的结论是/user/*中的/*代表的是零或多个层级访问目录同时精确匹配优先级要高于目录匹配。

  1. 扩展名匹配
    servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
package com.aDiao.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("*.demo07")
public class ServletDemo07 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo07 get...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
注意:
(1) 如果路径配置的不是扩展名,那么在路径的前面就必须要加/否则会报错;
(2)如果路径配置的是*.do,那么在*.do的前面不能加/,否则会报错。

  1. 任意匹配
    servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
package com.aDiao.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/")
//@WebServlet("/*")
public class ServletDemo08 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo08 get...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml
注意:/ 和 /* 的区别:
(1)当我们的项目中的Servlet配置了 “ / ”,会覆盖掉tomcat中的DefaultServlet,当其他的url-pattern都匹配不上时都会走这个Servlet;
(2)当我们的项目中配置了“ /* ”,意味着匹配任意访问路径;
(3)DefaultServlet是用来处理静态资源,如果配置了"/"会把默认的覆盖掉,就会引发请求静态资源的时候没有走默认的而是走了自定义的Servlet类,最终导致静态资源不能被访问。

3、下面我们来对比一下二者的优缺点

  • 通过Web.xml文件进行配置

优点:配置信息全部卸载Web.xml文件中,可以集中管理各servlet类路径的映射路径,方便修改和查找。
缺点:对“懒癌患者”不太友好,代码量大且繁琐,可读性不强。

  • 使用@WebServlet注解进行配置

优点:代码量少,直接在Servlet类中使用。每个类只关注自身的业务逻辑,彼此之间互不干扰。
缺点:一个类配置一个,如果大量使用servlet注解,当servlet类文件数量过多时,不方便查找和修改。

如有错误,请指正。
servlet的配置主要有两种方式,分别是使用web.xml文件来完成配置和使用____注解的,servlet,前端,xml文章来源地址https://www.toymoban.com/news/detail-736700.html

到了这里,关于【JavaWeb】关于Servlet的两种配置Web.xml文件配置或使用@WebServlet注解及urlPattern配置规则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • VIVADO写完xxx.v文件后进行引脚配置的两种方法

    VIVADO写完xxx.v文件后进行引脚配置的两种方法

    第一种:创建引脚配置文件(XDC),这种方法需要学习配置引脚的语句语法不适合新手。 第二种,直接进入引脚配置界面。

    2024年02月11日
    浏览(17)
  • [JavaWeb]完美解决关于IDEA2023新版本无法创建Servlet的问题
  • 清理构建目标文件夹的两种方式:webpack配置选项 VS clean-webpack-plugin插件

    92. 清理构建目标文件夹的两种方式:webpack配置选项 VS clean-webpack-plugin插件 在 webpack 中, clean: true 是一项配置选项,而 clean-webpack-plugin 是一个插件。它们的作用是清理(删除)构建目标文件夹中的旧文件。 1. clean: true 配置选项: 在 webpack 的配置文件中,你可以使用 clean 配

    2024年02月11日
    浏览(14)
  • 关于windows自带的两种远程访问方式

    关于windows自带的两种远程访问方式

    实验环境:两台非家庭版的windows系统(我使用的win7和xp系统),在同一网段下 关于windows的两种远程访问方式:         1、将普通用户添加到远程桌面服务组(Remote Desktop Users组,该组账户专门用于为远程访问提供服务)         2、 telnet为用户提供命令行远程访问权限 使

    2024年02月07日
    浏览(13)
  • java web.xml配置文件漏洞

    一.介绍 介绍 二.实例 实例1

    2024年02月14日
    浏览(10)
  • 关于 Token 过期问题的两种解决方案

    关于 Token 过期问题的两种解决方案

     对于token过期,我们有两种方案:   方案一:当我们操作某个需要token作为请求头的接口时,返回的数据错误error.response.status === 401,说明我们的token已经过期了。 我们希望当响应返回的数据是401身份过期时,让当前浏览页面强行跳转到登入页面,让用户 手动更新token。拿到

    2024年01月17日
    浏览(14)
  • 关于 python 在 pycharm 下载库的两种方法

    关于 python 在 pycharm 下载库的两种方法

    正常操作: 1.点击左上角File 。  2.点击setting,进入设置界面 。 3.点击python Interpreter。  4.添加新库时,点击右上侧 “ + ” 号,出现新界面。  5,在搜索框搜索想添加的库,点击左下角 Instal  Package , 等待完成即可。 特殊情况:  此时可能出现失败情况 直接打开电脑搜索栏,

    2024年02月12日
    浏览(13)
  • 关于axios的两种拦截方式:请求拦截和响应拦截

    关于axios的两种拦截方式:请求拦截和响应拦截

    提示:这里可以添加本文要记录的大概内容: 提示:以下是本篇文章正文内容,下面案例可供参考 axios.interceptors.request.use() 请求拦截 axios.interceptors.request.use( function ( config ) { return config }) 这个方法的参数是一个函数,发送请求之前就会执行这个函数,函数里面的参数就是执

    2024年01月24日
    浏览(18)
  • Servlet 初始化参数(web.xml和@WebServlet)
  • ASP.NET Core 中的两种 Web API

    ASP.NET Core 有两种创建 RESTful Web API 的方式: 基于 Controller,使用完整的基于ControllerBase的基类定义接口endpoints。 基于 Minimal APIs,使用Lambda表达式定义接口 endpoints。 基于 Controller 的 Web API 可以使用构造函数注入,或者属性注入,遵循面向对象模式。 基于 Minimal APIs 的 Web API 通

    2024年02月09日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包