栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

匹配根网址和提供静态资源

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

匹配根网址和提供静态资源

首先,我将对

DefaultServlet
工作原理进行初步说明。根据Servlet
3.0规范
,容器通常提供默认的Servlet,该Servlet的优先级最低,并提供静态上下文。映射
/
是此默认Servlet的隐式映射。

现在为解决方案:

将弹簧控制器映射到子层次结构

这是最简单的解决方案:你映射spring

DispatcherServlet
/pages
,或者
/pages
/api
例如。然后,默认servlet将提供所有其他URL(包括root)。为了服务于根控制器,可以映射控制器,其
/home
(例如),并具有
/index.jsp
包含
<jsp:forwardpage="/home"/>
-这是在使用扩展映射如Struts其他框架当前使用(的方法
*.do
用于老Struts1的)。

缺点:用url声明

/pages
不是很好。

将资源映射到子层次结构

此解决方案在参考页面中得到了广泛使用。Spring

DispatcherServlet
被映射到
/*
所有请求(除非存在更具体的映射)。要提供静态资源,您只需
ResourceHttpRequestHandler
在XML中声明一个,即可:

<mvc:resources mapping="/resources/**" location="/public-resources/"/>

或在Java配置中:

@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter {    @Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.addResourceHandler("/resources/**").addResourceLocations("/public-resources/");    }}

这工作得很好,您可以

/
直接将Spring控制器映射到。

缺点:您不能提供直接位于根上下文下的静态资源。

映射
DispatcherServlet
为默认servlet

实际上,将Spring映射

DispatcherServlet
/
要替换容器中的默认servlet,以处理所有尚未处理的URL。通过这种映射,对于未映射到控制器的URL,Spring可以回退到原始的默认servlet。为此,您必须配置一个
DefaultServletHttpRequestHandler
具有
"/**"
最低优先级的URL映射。您可以使用XML进行操作:

<mvc:default-servlet-handler/>

或在Java配置中:

@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter {    @Override    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {        configurer.enable();    }}

这样,

DispatcherServlet
通常会调用所有控制器,并具有原始的默认Servlet来服务静态(未映射)资源。不幸的是,这并 没有为根URL工作,你必须使用
<jsp:forward page="..."/>
伎俩像第一个解决方案。

缺点 :

  • 无法直接映射根URL,需要
    index.jsp
    <jsp:forward page="..."/>
    技巧
  • 由于Spring被替换为原始容器的默认servlet,因此 必须 按名称进行调用。它适用于常见容器(包括Tomcat,Jetty,GlassFish,JBoss,Resin,WebLogic和WebSphere),或者您也可以将默认servlet的名称作为XML config(
    <mvc:default-servlet-handler default-servlet-name="customDefaultServlet"/>
    )中的属性或参数(如果是Java配置)给出:
    configurer.enable("customDefaultServlet");

参考:Spring参考手册/ Web
MVC框架/资源服务



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号