gpt4 book ai didi

Spring MVC 找不到 *.jsp 文件

转载 作者:行者123 更新时间:2023-12-01 23:47:03 25 4
gpt4 key购买 nike

在网络开发方面,我绝对是个菜鸟。但我有一些 C/C++/Java 背景,所以我对 MVC Controller 没有问题。令我头疼的是配置。

我正在使用 Spring Boot。根据教程,它可以神奇地解决所有问题,甚至无需打开编辑器并输入单个字符。显然不是。

我有一个 View 解析器配置如下:

@Configuration
@ComponentScan (basePackages = {"my.test.controller"})
@EnableAutoConfiguration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}

@Bean
public InternalResourceViewResolver getViewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}



public static void main(String[] args) throws Exception {
SpringApplication.run(WebConfig.class, args);
}

}

我有一个像这样的 Controller :

@Controller
public class PageController {

@RequestMapping(value = "/index")
public String doSomething() {

//.. do Something

return "/index";
}

我的主要问题是,如果地址中有 jsp 扩展名,则无法找到该文件。如果我输入不带扩展名的网址(如 localhost:8080/index),页面将正确显示。如果我输入带有 localhost:8080/index.jsp 之类的扩展名的 url,页面将返回 404 错误。这对于 Controller 中声明的所有页面都是相同的。

任何帮助将不胜感激。谢谢谢谢。

最佳答案

Spring Boot中有一个JSP示例你可以从中抄袭。如果我是你,我不会定义 ViewResolver 因为 Boot 已经为你做到了这一点(但如果你想使用前缀和后缀解析,你需要设置 spring.view.prefixspring.view.suffix)。

您的@Controller应该返回 View 名称(而不是路径),因此“index”将在您现有的设置中解析为“/WEB-INF/views/index.jsp”。我也不会打扰“/resources”映射,因为 Spring Boot 已经提供了一个映射,尽管与您定义的不同(通常人们将静态资源放在“classpath:/static”中,但“classpath:/resources”可以工作)同样,HTTP 端点中的资源路径也没有前缀)。

JSP 在很多方面都不如其他 View 技术,因此不幸的是它如此普遍。有许多限制,包括对打包和运行引导应用程序的方式的限制(有关详细信息,请参阅 here)。如果你有时间的话,放弃学习 JSP 是值得的。

关于Spring MVC 找不到 *.jsp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com