• Servlet urlPatterns配置


    * Servlet 想要被访问,必须配置其访问路径(urlPatterns)

    1.一个Servlet,可以配置多个urlPatterns

       例如:@WebServlet(urlPatterns = {"/demo7","/demo8"}) 

    2.urlPatterns配置规则

    (1)精确匹配(通过WebServlet对Servlet 配置的这个路径,和你浏览器访问的这个路径是一致的,就是精确匹配)

         配置路径:@WebServlet("/user/select") 

         访问路径:localhost:8080//web-demo/user/select

    示例代码:

    1. package itheima.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. /**
    9. * urlPatterns匹配规则
    10. * 1.精确匹配
    11. */
    12. @WebServlet(urlPatterns = "/user/select")
    13. public class ServletDemo8 extends HttpServlet {
    14. @Override
    15. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. System.out.println("你现在使用的是method为post.demo8");
    17. }
    18. @Override
    19. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20. System.out.println("你现在使用的是method为get.demo8");
    21. }
    22. }

     浏览器访问示例

     控制台示例  (调用doGET方法)

    (2)目录匹配

     配置路径:@WebServlet(" /user/* ") 

     访问路径:

                    localhost:8080//web-demo/user/aaa

                    localhost:8080//web-demo/user/bbb

     示例代码:

    1. package itheima.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. /**
    9. * urlPatterns匹配规则
    10. * 2.目录匹配
    11. */
    12. @WebServlet(urlPatterns = "/user/*")
    13. public class ServletDemo9 extends HttpServlet {
    14. @Override
    15. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. System.out.println("你现在使用的是method为post.demo8");
    17. }
    18. @Override
    19. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20. System.out.println("你现在使用的是method为get.demo9");
    21. }
    22. }

     浏览器访问示例:

     控制台示例 :调用doGET方法)

    (3)扩展名匹配

     配置路径:@WebServlet(" *.do ") 

     访问路径:

                    localhost:8080//web-demo/aaa.do

                    localhost:8080//web-demo/bbb.do

     示例代码: 

    1. package itheima.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. /**
    9. * urlPatterns匹配规则
    10. * 2.扩展名匹配匹配
    11. */
    12. @WebServlet(urlPatterns = "*.do")
    13. public class ServletDemo10 extends HttpServlet {
    14. @Override
    15. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. System.out.println("你现在使用的是method为post.demo8");
    17. }
    18. @Override
    19. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20. System.out.println("你现在使用的是method为get.demo10");
    21. }
    22. }

     浏览器访问示例:

    控制台示例 :调用doGET方法)

    (4)任意匹配

     配置路径:

                    @WebServlet("/") 

                    @WebServlet(" /* ")  

     访问路径:

                    localhost:8080//web-demo/haha

                    localhost:8080//web-demo/hehe

    /*与/的区别:

           *如果项目中部署了”/“,会覆盖掉tomcat中的DefaultServlet,当其他的urlPatterns斗匹配不上时,就会走这个servlet

           *如果项目中部署了”/*“,意味着可以匹配任意访问路径

     示例代码: 

    1. package itheima.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. /**
    9. * urlPatterns匹配规则
    10. * 2.扩展名匹配匹配
    11. */
    12. @WebServlet(urlPatterns = "/")
    13. public class ServletDemo11 extends HttpServlet {
    14. @Override
    15. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. System.out.println("你现在使用的是method为post.demo8");
    17. }
    18. @Override
    19. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20. System.out.println("你现在使用的是method为get.demo11");
    21. }
    22. }

     浏览器访问示例:

     

    控制台示例 :调用doGET方法)

     

     

  • 相关阅读:
    论文阅读CVPR2022 MaskformerV1和V2
    Windows下同一电脑配置多个Git公钥访问不同的账号
    [Linux系统编程]文件重定向dup和dup2
    Python matplot工具包之一的 mpl_toolkits绘制属于你的世界地图
    SSM+心理测验系统 毕业设计-附源码211710
    手机充电器成精会怎样?sanag塞那K30,自带插头和数据线的充电宝
    数据仓库:金融/银行业主题层划分方案
    PROJECT #1 - BUFFER POOL [CMU 15-445645]笔记
    基于stm32单片机甲醛烟雾温湿度检测仪设计
    25个Matplotlib图的Python代码,复制直接可用
  • 原文地址:https://blog.csdn.net/qq_51272114/article/details/125998250