zoukankan      html  css  js  c++  java
  • SpringMVC中/和/*和/**的区别,两分钟搞清楚怎么用

    SpringMVC中/和/*和/**的区别,两分钟搞清楚怎么用

    进入正题之前,先弄清楚一个事情,tomcat中默认配置了两个servlet:defaultServelet和jspServlet,拦截路径配置如下:

     DefaultServlet: 该servlet优先级最低,当没有任何一个Servlet处理一个请求时,那么DefaultServlet就会处理该请求,并返回状态码404。

    JspServlet: 主要是处理jsp页面的,将动态页面转换为静态页面(jsp技术已经不主流了)。

    进入正题,说说/、/*和/**的区别

    / :拦截所有请求 包括静态资源和动态请求 但是不拦截jsp 
    /*:拦截所有请求所有的文件夹,但是不包括子文件夹 包括静态资源和动态请求 也拦截jsp
    /**:的意思是所有文件夹及里面的子文件夹

    接下来,重点说说请求的拦截流程。这里假设拦截模式为/*。Controller代码如下:

    @Controller
    public class MyController {
    
        @RequestMapping(method = RequestMethod.GET,path = "/haha.jsp")
        public String test01(){
            System.out.println(1234);
            return "index";
        }
    
    }

    之前笔者一直不明白,提交一个.jsp请求之后,服务端应该返回一index页面才对,毕竟servlet拦截了这个请求。后来查了资料才知道,当返回/WEB-INF/pages/index.jsp,dispatherServlet会接着拦截这个请求,发现没有处理这个请求的方法,那么就会把这个请求交给defaultServlet,就会返回404状态码。

    @Controller
    public class MyController {
    
        @RequestMapping(method = RequestMethod.GET,path = "/haha.jsp")
        public String test01(){
            System.out.println(1234);
            return "index";
        }
        @ResponseBody
        @RequestMapping(method = RequestMethod.GET,path = "/WEB-INF/pages/index.jsp")
        public String test02(){
            System.out.println(456);
            return "hahah";
        }
    
    }

    验证,添加了上述的代码块,同样发送请求/haha.jsp,这时候控制台会输出1234 456,并返回hahah内容的页面。

     

  • 相关阅读:
    JDBC与ODBC的区别与应用
    java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序
    构造方法的继承
    2015-J. PUMA
    阶乘之和 南邮NOJ 1093
    阶乘之和 南邮NOJ 1093
    阶乘之和 南邮NOJ 1093
    阶乘之和 南邮NOJ 1093
    数的计算
    数的计算
  • 原文地址:https://www.cnblogs.com/amazing-eight/p/13225321.html
Copyright © 2011-2022 走看看