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内容的页面。

     

  • 相关阅读:
    Qt实战6.万能的无边框窗口(FramelessWindow)
    Qt实战5.如何获取USB设备信息?
    Qt实战4.简单封装的文件监控
    Qt实战3.Qt仿Win10风格界面
    Linux下使用脚本让程序顺序启动
    项目经验1.软件的开发过程
    Qt实战2.老生常谈的文件传输
    mysql导入txt文件
    linux离线安装python3
    mysql知识点
  • 原文地址:https://www.cnblogs.com/amazing-eight/p/13225321.html
Copyright © 2011-2022 走看看