ITPub博客

首页 > 数据库 > 数据库开发技术 > Web开发不迷糊|一文带你搞懂Servlet和JSP请求路径的匹配方式

Web开发不迷糊|一文带你搞懂Servlet和JSP请求路径的匹配方式

原创 数据库开发技术 作者:Finally_m 时间:2022-10-14 08:03:00 0 删除 编辑
点击上方蓝字关注我们

一. Servlet请求路径的定义方式

我们很多同学在学习Servlet匹配请求路径时,都知道匹配请求路径的方式有三种,分别是精确匹配、通配符匹配和后缀匹配,具体如下:

/a         精确匹配
/a/*       通配符匹配
*.do       后缀匹配
@WebServlet(urlPatterns = {"/a", "/a/*", "*.do"})
public class MyServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //业务代码
    }
    
}

上面这样定义的Servlet,就能接收精确匹配、通配符匹配、后缀匹配相应的请求路径。我们在浏览器中,可以按照如下格式进行访问:

http://localhost:8080/project/a

http://localhost:8080/project/a/bb

http://localhost:8080/project/cc.do

二. JSP中静态资源请求路径的定义方式

后来在学习jsp时,发现有时需要引入静态资源,如jsp页面中带有静态资源:

<head>
  <title>$Title$</title>
  <link rel="stylesheet" href="/project/resource/style/style.css">
  <script type="text/javascript" src="resource/js/jquery.js"></script>
</head>

静态资源的请求路径,可以分为绝对路径和相对路径。绝对路径以斜杠(/)开头,这就很容易和Servlet的匹配路径混淆,让我们以为精确匹配前面的斜杠是绝对路径,在使用时有些人就把斜杠给省略掉了,变成相对路径的定义格式,定义成下面这样的格式:

@WebServlet(urlPatterns = {"addUser"})
public class UserServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //业务代码
    }
    
}

但在启动项目时,就出现了下面这样的错误:

请大家记住这个错误,如果出现上图中的这种错误,十有八九就是因为定义的请求路径有问题。因为"addUser",既非精确匹配也不是通配符匹配,更不是后缀匹配,所有的这种定义方式都是错误的,正确的方式是应该定义成"/addUser",如下面的代码:

@WebServlet(urlPatterns = {"/addUser"})
public class UserServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //业务代码
    }
    
}

所以初学者在定义路径时,应该多加注意,Servlet匹配路径没有绝对路径和相对路径之说,而静态资源的请求路径会有。现在你知道该怎么定义接口及资源的请求路径了吗?

关注Java架构栈,获取更多干货!

扫码了解获取千锋更多课程资料!



点击【阅读原文】,零基础免费学Java!


原文作者:Java架构栈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-04-13

  • 博文量
    573
  • 访问量
    243903