• 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方法)

     

     

  • 相关阅读:
    2023-10-22
    2022-11-19 关于代码设计的思考
    操作系统初识
    [错题]电路维修
    白噪声,有色噪声的定义、特性及其MATLAB仿真
    计算机毕业设计(附源码)python在线影视购票系统
    深度学习训练时冻结部分参数的方法
    LeeCode 1787 DP
    php基于BS模式的物业管理系统设计与实现毕业设计源码290918
    如何开通 Medium会员
  • 原文地址:https://blog.csdn.net/qq_51272114/article/details/125998250