【问题标题】:Spring - cannot GET resources (405 error)Spring - 无法获取资源(405 错误)
【发布时间】:2016-11-22 17:21:21
【问题描述】:

您好,我有一个简单的 Spring 应用程序:

WebConfig.java:

package spittr.web;

@Configuration
@EnableWebMvc
@ComponentScan("spittr.web")
public class WebConfig extends WebMvcConfigurerAdapter {

      @Override
      public void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
      }

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

}

registerForm.jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
<%@ page session="false" contentType="text/html; charset=UTF-8" %>
<html>
  <head>
    <title>Spittr</title>
    <link rel="stylesheet" type="text/css" 
          href="<c:url value="/resources/style.css" />" >
  </head>
  <body>
    <h1>registration</h1>

 <sf:form method="POST" commandName="spitter" >

      <sf:errors path="*" element="div" cssClass="errors" />

      <sf:label path="firstName" 
          cssErrorClass="error">name</sf:label>: 
        <sf:input path="firstName" cssErrorClass="error" /><br/>

         ....

      <input type="submit" value="register" />
    </sf:form>
  </body>
</html>

当我得到上面的注册表单时:

  @RequestMapping(value="/register", method=GET)
  public String showRegistrationForm(Model model) {
      model.addAttribute("spitter", new Spitter());
    return "registerForm";
  }

CSS 文件未加载,我得到 JSP 页面,但没有 CSS 样式,并且在 Tomcat 控制台中出现错误:

127.0.0.1 - - [22/Nov/2016:18:04:48 +0100] "GET /Spittr-0.0.1-SNAPSHOT/resources/style.css HTTP/1.1" 405 1045强>

问题出在哪里? CSS 文件在路径 /Spittr-0.0.1-SNAPSHOT/resources/style.css 中,我指定了默认资源处理程序,那么为什么 JSP 页面无法获取此静态文件。

感谢您的任何建议:)

【问题讨论】:

    标签: java spring jsp spring-mvc servlets


    【解决方案1】:

    好的,我明白了:

    1- 从 WebMvcConfigurationSupport

    覆盖 resourceHandlerMapping()
    @Override
    @Bean
    public HandlerMapping resourceHandlerMapping() {
        AbstractHandlerMapping handlerMapping = (AbstractHandlerMapping) super.resourceHandlerMapping();
        handlerMapping.setOrder(-1);
        return handlerMapping;
    }
    

    2 - 从 WebMvcConfigurationSupport / WebMvcConfigurerAdapter 覆盖 addResourceHandlers()

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 2020-01-17
      • 2020-06-08
      • 1970-01-01
      • 2016-11-25
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多