Spring MVC对<mvc:default-servlet-handler />的需求是什么。我们应该在什么时候使用它。它是什么时候需要的。我们为什么要使用它。我在stackoverflow中浏览了几个链接,但无法获得清晰的图片或理解。有人能解释一下吗?
发布于 2015-07-11 04:38:54
<mvc:default-servlet-handler /> Spring MVC**?**中的的需求是什么
使用这个handler spring dispatcher会将所有请求转发到默认的Servlet。要启用该功能,您可以使用注释或基于xml的配置,如下所示:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}或者在XML中:
<mvc:default-servlet-handler/>它会做什么?
DefaultServletHttpRequestHandler将尝试在启动时使用大多数主要Servlet容器(包括Tomcat、Jetty、GlassFish、JBoss、Resin、WebLogic和WebSphere)的已知名称列表来auto-detect container的default Servlet。如果已使用不同的名称自定义配置了默认Servlet,或者正在使用不同的Servlet容器,其中默认Servlet名称未知,则必须显式提供默认Servlet的名称,如下例所示:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable("myCustomDefaultServlet");
}
}或者在XML中:
<mvc:default-servlet-handler default-servlet-name="myCustomDefaultServlet"/>我们应该在什么时候使用它?到底什么时候需要它?我们为什么要使用它?
当您希望spring dispatcher使用默认servlet为web root下的static resources提供服务时。
如果我们使用DefaultServletHttpRequestHandler,那么我们可以替换:
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/images/**" location="/images/" />通过以下方式:
<mvc:default-servlet-handler />更多信息,你可以浏览here。
发布于 2016-03-21 12:51:23
因为我们通常将DispatcherServlet配置为映射"/*",但所有请求(如.js/.css )也将映射到DispatcherServlet,因此我们需要一个HttpRequestHandler来将这些静态资源请求分派到DefaultServlet。
发布于 2018-04-10 19:50:49
<mvc:default-servlet-handler />此标记通常用于获取资源,如*.js、*.css、*.jpg等。
标记mvc:默认servlet处理程序使用DefaultServletHttpRequestHandler,它比mvc:annotation-driven:中的处理程序具有更低的属性(Integer.MAX_VALUE
例如的
您的请求(如( http://localhost:8080/jquery.js ))首先将是搜索控制器映射@请求集映射(“jquery.js”),当请求未找到任何控制器映射时,请尝试在您的文件夹web或webapp中获取资源。
如果你有webapp/jquery.js,,你会得到这个文件。
https://stackoverflow.com/questions/31346267
复制相似问题