Spring 4 静态内容(如 css/js)带来错误 405 不支持请求方法“GET”

2023-12-15

我已经检查过这个问题,但是经过 4 个小时的尝试,没有任何结果对我有用。

尝试访问我的 css 文件时收到 405 错误。这是我的 Config.java

package com.myapp.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.UrlBasedViewResolver;

@Configuration
@ComponentScan("com.myapp")
@EnableWebMvc
@EnableTransactionManagement
public class Config extends WebMvcConfigurerAdapter {

    @Bean
    public UrlBasedViewResolver setupViewResolver() {
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }

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

    }

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

}

和目录结构:

META-INF
WEB-INF
resources
    |-css
    |  |-myapp.css
    |-js
       |-myapp.js

使用netbeans作为IDE。我还尝试了 WEB-INF 中的资源目录。结果相同。

编辑:下面是我的默认控制器

@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(ModelMap map) {
    map.put("msg", "Hello Spring 4 Web MVC!");
    return "index";
}

编辑2:这是我的WebinItalizer

public class WebInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {        
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();  
        ctx.register(Config.class);  
        ctx.setServletContext(servletContext);    
        Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));  
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }
}

在此初始化程序中,如果我使用“/”作为 servlet.addMapping(“/”),我将无法访问 css。但是如果我将其更改为 servlet.addMapping("/app") 之类的其他内容,我就可以访问 CSS。但问题是,如果我这样做,我的所有网址都会以 app/ 开头,不太酷:/


首先,如果这是不正确的,抱歉。我做了很多 Spring 工作,但通常只是 XML 配置。

让我们从这里开始:

     registry.addResourceHandler("/resources/**")
             .addResourceLocations("/resources/","/css/","/js/");

这就是说“当我请求带有路径的东西时http://localhost/resources/**在看/resources/, /css/ or /js/.

Well, /css/ and /js/不存在。仅有的/resources/ does.

在这种情况下,您应该映射此

registry.addResourceHandler("/resources/**")
                 .addResourceLocations("/resources/");

并通过这种方式访问​​:

<script src="/resources/js/myapp.js"></script>

或者,你也可以这样做:

registry.addResourceHandler("/js/**")
                 .addResourceLocations("/resources/js/");
registry.addResourceHandler("/css/**")
                 .addResourceLocations("/resources/css/");

并以这种方式访问​​静态内容:

<script src="/js/myapp.js"></script>

至于为什么更改上下文根有效,是因为:

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

这尝试通过具有上下文根的默认 servlet 路由静态内容请求/。由于您正在创建 DispatcherServlet/,默认的 servlet 永远不会被命中,因为它默认设置为最低优先级。

如果您正在使用registry.addResourceHandler您不需要配置默认 servlet,反之亦然。正如您所发现的,您永远不会点击它,因为默认情况下它是最低优先级的。

如果您仍然遇到问题,即使在修复 ResourceHandler 之后,您也可以尝试完全省略资源处理程序配置,或者将默认 servlet 设置为更高的优先级(我不建议这样做)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 4 静态内容(如 css/js)带来错误 405 不支持请求方法“GET” 的相关文章

随机推荐

  • 使用存储过程从 SQL Server 导出图像

    我使用 Microsoft Sql server 2012 作为 DBMS 我的数据库包含有关足球运动员 每个球员都有一张照片 我需要将球员照片导出到我的计算机上 我想可以通过 TSQL 来完成 这样我就可以避免编程或编辑我的应用程序来仅导
  • 在 Selenium 的 FirefoxOptions 中设置 BrowserExecutableLocation 并不能防止出现“无法找到匹配的功能集”错误

    我对 Selenium 还很陌生 并且正在尝试创建一些最低限度通过的测试用例 我想您可以将它们称为某种意义上的 hello world 程序 我尝试创建一个 Firefox 驱动程序的实例 如下所示 var options new Fire
  • 将图像裁剪为圆形并添加边框

    我正在尝试裁剪圆形图像并在其周围添加边框 下面是我裁剪圆形图像的代码
  • OpenMPI:简单的 2 节点设置

    我在仅使用两个节点运行 OpenMPI 程序时遇到问题 其中一个节点与正在执行的机器是同一台机器 mpiexec命令和另一个节点是一台单独的机器 我将调用正在运行 mpiexec 的机器 master 以及另一个节点slave On bot
  • 使用 data.table [R] 查找组中众数出现的次数

    我一直在使用这里的优秀答案查找具有数据表的组的众数 但是 我还想查找每组变量 y 的 x 模态值出现的次数 我怎样才能做到这一点 编辑 有一种比上面链接的答案更快的方法来查找模式 我找不到从中得到的答案 如果有 请编辑并链接 但它使用此功能
  • React-router重定向到index.html并从.htaccess中的url中删除www

    我正在 ReactJS 中构建一个小型应用程序 因此所有页面都需要提供index html 并且 JS 处理 url 这很好用 但我还想让 htaccess 从网址中删除 www 如果存在 我正在阅读 mod rewrite 文档 但我不太
  • 如何在 Windows 7 中将 URL 参数从 Java 传递到本地 HTML 文件?

    我迫切需要您的专业知识来解决 Windows 7 问题 设想 我有一个基于框架的帮助包 它是为上下文相关的帮助调用而设置的 Java 应用程序能够通过将表示所需 HTML 的名为 anchor 的标记传递到名为 pophelp 的 HTML
  • 从输入文件读取实际值时出现浮点异常

    我尝试从输入文件中读取浮点值Fortran 为此 我使用以下代码 INTEGER nf REAL re OPEN newunit nf file toto txt READ unit nf fmt re 与 toto txt 包含我的真实值
  • Octave / MATLAB 中的 deal() 函数有什么意义?

    一些参考代码使用了该函数deal 简单地说 就像 a b c deal 1 2 3 如文档中所述 对于八度 and 对于MATLAB 该函数只是将输入复制到输出 Why use deal 在这种情况下 甚至在一般情况下 我正在尝试学习 更正
  • Django:从模板内访问会话变量?

    如果我在 Django 中设置一个会话变量 例如 request session name name 有没有办法可以从模板中访问它 或者我是否必须从视图中检索它 然后将其传递给模板 之所以这么问 是因为我想在模板中访问大约 10 个小会话变
  • 在 Angular 5 中迭代复杂的 JSON 结构

    如何在 Angular 5 中迭代 JSON 已经搜索了很多 得到了一个管道概念 但它不适用于复杂的 json 如下所示 我需要使用以下类型的数据创建可扩展表 我一直在阅读这个 json data Items Key 9009 type f
  • 如何使用 javascript 阻止因空字段而提交表单?

    如何在 javascript 中编写脚本来输出错误并防止表单中存在空字段时提交表单 假设表单名称为 form 输入名称为 name 我在 PHP 中遇到了一些麻烦 并不总是正确处理空字段 所以我想将其作为备份 如有任何帮助 我们将不胜感激
  • Sparklyr 更改所有列名称 Spark DataFrame

    我打算更改所有列名称 目前的重命名或选择操作太费力了 不知道有没有人有更好的解决方案 示例如下 df lt data frame oldname1 LETTERS oldname2 1 oldname200 APPLE df tbl lt
  • F5浏览器刷新和回发有区别吗?(asp.NET)

    我正在 asp NET 中现有数据网格的不同行中动态创建拖网格 我生成的数据网格有一列是 TemplateColumn 复选框列 在我的父数据网格中 我有一个带有复选框的模板列 当我选中或取消选中复选框的值时 会调用 check chang
  • Flutter:如何使用变量将参数传递给 Widget?

    这是一些伪代码 显示了我想要实现的目标 Text txt text subtitle false final params subtitle textAlign TextAlign center style TextStyle color
  • 如何检查 css box-shadow 是否受支持(jQuery)?

    我正在创建一个完整的 css 布局 但是 某些浏览器 例如IE6 不支持box shadow 和 webkit box shadow或 moz box shadow 我想检查一下是否不支持 然后添加其他样式 这在 jQuery 中怎么可能呢
  • 在 Heroku 上结合使用 Resque、Puma 和 Scheduler

    在查看了大量指南后 我想确认我的设置 现在我的procfile好像 web bundle exec puma C config puma rb config ru resque TERM CHILD 1 RESQUE TERM TIMEOU
  • 如何恢复用 jQuery 删除的元素?

    如果使用删除元素 notification remove 我们如何将其创建回来 你无法得到那个特定的例子后退 使用 remove 将其从 DOM 中删除 不过 您可以创建它的克隆 在 DOM 中移动它 隐藏它等等 根据您的项目需求 您可能还
  • 读取行时,awk $line

    我有一个包含数字列表的文件 我有第二个文件 每个文件包含各种条目和多个字段 我想要做的是获取第 12 个字段等于第一个数字的所有行 并将它们放入一个新文件中 然后放入第二个数字 依此类推 我写了一句很有道理的俏皮话 但我不明白为什么它行不通
  • Spring 4 静态内容(如 css/js)带来错误 405 不支持请求方法“GET”

    我已经检查过这个问题 但是经过 4 个小时的尝试 没有任何结果对我有用 尝试访问我的 css 文件时收到 405 错误 这是我的 Config java package com myapp config import org springf