urlParrern配置

举报
兰舟千帆 发表于 2022/07/21 19:15:53 2022/07/21
【摘要】 urlParrern配置之前我们采用注解的方式配置这个访问路径,只设置了一个访问路径。其实还可以配置多个访问路径。就像这样。@WebServlet(urlPatterns = {"/demo7","/demo07"})其实我们这样的配置就是一种路径匹配规则或者说是项目匹配访问规则。下面我们介绍几种匹配规则1:精确匹配我们在注解中这样写的话,将来我们访问的化需要通过这个完整的路径来访问项目。...

urlParrern配置

之前我们采用注解的方式配置这个访问路径,只设置了一个访问路径。其实还可以配置多个访问路径。就像这样。

@WebServlet(urlPatterns = {"/demo7","/demo07"})

其实我们这样的配置就是一种路径匹配规则或者说是项目匹配访问规则。

下面我们介绍几种匹配规则
1:精确匹配
我们在注解中这样写的话,将来我们访问的化需要通过这个完整的路径来访问项目。
eg:

@WebServlet("/jgdabc/666")

2:目录匹配
eg:

/@WebServlet(urlPatterns = "/user/*") 目录匹配

将来我们访问的时候首先需要输入user,然后后面可以跟上任何路径。

3:扩展名匹配

@WebServlet("*.do") 

将来访问的时候前面可以加上任何路径,但是后面需要加上do的扩展名。

4:任意匹配

//@WebServlet("/")
//@WebServlet("/*")

任意匹配不建议使用

  1. 当我们的项目中的Servlet配置了 “/”,会覆盖掉tomcat中的DefaultServlet,当其他的url-pattern都匹配不上时都会走这个Servlet
  2. 当我们的项目中配置了"/*",意味着匹配任意访问路径
  3. DefaultServlet是用来处理静态资源,如果配置了"/"会把默认的覆盖掉,就会引发请求静态资源的时候没有走默认的而是走了自定义的Servlet类,最终导致静态资源不能被访问

测试用例

package jgd;

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("/jgdabc/666")
//可配置多个访问路径,这是精确匹配
//@WebServlet(urlPatterns = {"/demo7","/demo07"})
//@WebServlet(urlPatterns = "/user/*") 目录匹配
//当精确匹配和目录匹配同时都满足的时候,精确匹配优先级别更高
//@WebServlet("*.do") 扩展名匹配
//任意匹配
// /* 的优先级高于/
//@WebServlet("/")
//@WebServlet("/*")

public class ServletDemo7 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo7get...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doPost(req, resp);
    }
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。