spring-webmvc快速入门和SpringMVC中,中央控制器加 / 和 /* 的区别。

1、pom.xml

   
     
      org.springframework  
      spring-context 
      
     
      org.springframework  
      spring-webmvc 
      
     
      jakarta.platform  
      jakarta.jakartaee-web-api 
     
  

2、web.xml




	
		DispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:springmvc.xml
		
		1
	

	
		DispatcherServlet
		/
	

3、springmvc.xml




    

4、Hello01Controller.java

package com.atguigu.springmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class Hello01Controller {

    @RequestMapping("/h01")
    @ResponseBody
    public String ho1() {
        System.out.println("Hello SpringMVC!");

        return "mandatory";
    }
}

spring-webmvc快速入门和SpringMVC中,中央控制器加 / 和 /* 的区别。_第1张图片

spring-webmvc快速入门和SpringMVC中,中央控制器加 / 和 /* 的区别。_第2张图片

5、在SpringMVC中,中央控制器加 / 和 /* 的区别

在SpringMVC中,中央控制器指DispatcherServlet,它是整个SpringMVC框架的核心,负责接收所有的HTTP请求,并将请求委托给对应的Controller进行处理。

加/和/*的区别如下:

  1. 加/的映射:可以匹配所有请求,包括静态资源请求,比如图片、css、js等。这种映射适合用于处理静态资源请求,但相对会占用大量的服务器资源。

  2. 加/*的映射:可以匹配所有请求,但不能匹配静态资源请求。如果使用这种映射方式,则需要配置静态资源的访问路径,否则静态资源将无法访问。

一般来说,如果项目中有大量的静态资源请求,建议使用加/的映射方式;如果项目中静态资源请求较少,则可以使用加/*的映射方式,避免不必要的资源浪费。

在SpringMVC中,中央控制器是指DispatcherServlet,它是SpringMVC框架的核心组件,负责将请求分发给相应的处理器(Handler),并返回响应结果。

中央控制器加/和/*的区别在于请求映射的粒度不同:

  • 加/的情况下,DispatcherServlet只会拦截所有以/开头的请求,也就是说只有根路径下的请求会被拦截,例如http://localhost:8080/。
  • 加/*的情况下,DispatcherServlet会拦截所有请求,包括根路径下的请求和子路径下的请求,例如http://localhost:8080/user、http://localhost:8080/user/info等等。

因此,在配置RequestMapping时,如果使用/,则只需要在浏览器中输入根路径即可访问,而如果使用/*,则需要输入完整的请求路径。

 

在SpringMVC中,中央控制器指的是DispatcherServlet,它是整个SpringMVC框架的核心,所有的请求都会被它接收,然后分发到对应的控制器进行处理。

中央控制器加/和/*的区别如下:

  1. 中央控制器加/:表示DispatcherServlet接收所有的请求,包括静态资源(如图片、css和js等),但不包括JSP页面等动态页面,这些请求需要通过Controller来处理。

  2. 中央控制器加/*:表示DispatcherServlet接收所有的请求,包括静态资源和动态页面,但如果有其他Servlet或Filter与DispatcherServlet同时处理同一个请求,则可能会出现冲突。

因此,一般建议使用中央控制器加/,同时将静态资源放到单独的目录下,由Web服务器直接处理,提高系统性能。

 

 

在SpringMVC中,中央控制器是一个特殊的控制器,用于处理所有进入应用程序的请求。在配置SpringMVC时,通常会为中央控制器指定一个URL路径,以便它可以拦截和处理所有进入应用程序的请求。

在指定中央控制器的URL路径时,可以使用不同的模式来匹配不同的URL。其中,/和/*是两种常见的模式。

  1. /:当使用/作为中央控制器的URL路径时,中央控制器将拦截所有以根路径为开头的请求。这意味着所有以/开头的URL都将由中央控制器处理。例如,如果中央控制器的URL路径设置为/,那么它将拦截所有进入应用程序的请求,如/hello、/user/profile等。
  2. /*:当使用/*作为中央控制器的URL路径时,中央控制器将拦截所有请求,无论请求的URL是什么。在这种情况下,中央控制器将处理所有进入应用程序的请求,包括静态资源的请求。这意味着所有进入应用程序的请求都将由中央控制器处理,然后由其他控制器或处理程序进一步处理。

需要注意的是,使用/*作为中央控制器的URL路径可能会导致性能问题,因为它将中央控制器设置为处理所有请求,包括静态资源的请求。如果应用程序有大量的静态资源请求,这可能会导致性能瓶颈和不必要的延迟。因此,在选择中央控制器的URL路径时,应该根据具体的应用程序需求进行权衡和选择。

 

在Spring MVC中,中央控制器(Controller)是用于处理和响应用户请求的组件。在URL映射方面,中央控制器可以处理多个URL路径,并且可以根据需要将不同的URL映射到不同的处理程序方法。

在URL路径映射中,"/ "和" /* "这两个符号有不同的含义:

  1. "/ ":这是URL路径的根符号。当你在中央控制器中使用"/"时,它表示该控制器是所有根URL的中央处理器。例如,如果你将中央控制器与"/"路径映射,则该控制器将处理所有以根URL开头的请求,如 "/app","/index" 等。
  2. "/*":这个符号表示该控制器是所有子URL的中央处理器。也就是说,它将处理所有在根URL之后的部分。例如,如果将中央控制器与"/* "路径映射,则该控制器将处理所有以根URL开头的请求之后的部分,如 "/app/123","/index/abc" 等。

总结起来,"/"和" /* "的区别在于:

  • "/ ":表示该控制器是所有根URL的中央处理器。
  • "/*":表示该控制器是所有子URL的中央处理器。

 

在Spring MVC中,中央控制器(通常是一个DispatcherServlet)负责处理传入的HTTP请求,并将其路由到相应的控制器。在配置中央控制器时,通常会使用URL模式来指定哪些URL应该由该Servlet处理。

/ 和 /* 在URL模式中是有区别的:

  1. / :

    • 这种配置意味着DispatcherServlet将只处理根路径(/)下的请求。其他路径的请求(如/static/下的静态资源请求)将不会被DispatcherServlet处理,因此静态资源可以正常访问。
    • 这是一个相对更为宽松的配置,它不会将所有请求都拦截到DispatcherServlet,只有根路径下的请求才会被拦截。
  2. / *:

    • 这种配置意味着DispatcherServlet将会处理所有的请求,包括对静态资源的请求,如CSS、JavaScript、图片文件等。这通常是我们不希望看到的,因为这会阻止静态资源的正常访问。
    • 使用这种配置时,通常需要额外配置来确保静态资源的正常访问,比如通过标签。

在选择这两种配置时,需要根据你的具体需求来决定。通常,/配置更为灵活,因为它可以精确地控制哪些URL应该被DispatcherServlet处理,而/*配置则更为粗暴,它会将所有请求都拦截到DispatcherServlet。因此,一般来说,/是更常用和推荐的配置。

你可能感兴趣的:(#,Spring,Web,MVC,springframework,springcontext,springwebmvc,jakarta,jakartaeewebapi,platform,servlet)