首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring 4.2.4 / Controller与RequestMapping("/**")和静态资源

Spring 4.2.4 / Controller与RequestMapping("/**")和静态资源
EN

Stack Overflow用户
提问于 2016-01-08 13:52:34
回答 1查看 1.1K关注 0票数 2

我有一个使用ui路由器的角度应用程序,并由SpringMvc (4.2.4) java应用程序提供服务。我决定将任何请求映射到单个Controller/方法,该方法加载项目的单个JSP页面。

但是,当我试图添加静态资源映射,加载js和css文件时,这些静态资源将被忽略.在mayapp/resources/*路径中的每个请求都指向我的单个jsp页面。

这是我的配置:

web.xml

代码语言:javascript
复制
      <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring/servlet.xml</param-value>
        </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>

servlet.xml

代码语言:javascript
复制
      <context:component-scan base-package="com.adveasys.omrh.front.web" />
      <mvc:annotation-driven></mvc:annotation-driven>

      <mvc:resources mapping="/resources/**" location="/resources/">
       <mvc:resource-chain resource-cache="false" auto-registration="false">
         <mvc:resolvers>
           <bean class="org.springframework.web.servlet.resource.GzipResourceResolver"/>
           <bean class="org.springframework.web.servlet.resource.PathResourceResolver"/>
         </mvc:resolvers>
       </mvc:resource-chain>
     </mvc:resources> 

       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="prefix" value="/WEB-INF/pages/" />
         <property name="suffix" value=".jsp" />
      </bean>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/pages/" />
      <property name="suffix" value=".jsp" />
    </bean>

MainController.java

代码语言:javascript
复制
@RequestMapping("/**")
public ModelAndView mainPage(HttpServletRequest request) throws JsonProcessingException {

在出现此问题之前,我在web.xml中为每个/resources/*使用默认servlet,但我正在用maven生成脚本/css的.gz版本,我希望这种配置能够使用GzipResourceResolver。

的东西我已经试过了,但没有用

  • 在DispatcherServlets中声明2个web.xml区别,一个仅用于web.xml,另一个仅用于资源。(我将mvc配置拆分为每个servlet的两个不同文件)
  • @RequestMapping("/")在控制器中,用户必须在根地址输入网站,不可接受。
  • 我试图为InternalResourceViewResolver设置一个订单,并将其作为一个属性

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-08 14:55:12

好吧,在调试模式挖掘之后。HandlerMappings,在该顺序中:

  • RequestMappingHandlerMapping ( @Controller one,内部属性"order“= 0)
  • SimpleUrlHandlerMapping (资源一,内部属性"order“= 0)
  • BeanNameUrlHandlerMapping (不知道它是. ^^)

在调用/resource/*文件时,RequestMappingHandlerMapping是第一个作为有效候选文件响应的。

在Spring配置中添加这样的命令之后:

代码语言:javascript
复制
<mvc:resources mapping="/resources/**" location="/resources/" order = "-1">

啊,真灵。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34678695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档