当谈到web开发时,我绝对是noob。但是我在C/C++/Java中获得了一些背景,所以我对MVC控制器没有任何问题。这是让我头痛的配置。Spring MVC找不到* .jsp文件
我正在使用Spring Boot。根据教程,它可以神奇地解决所有问题,甚至不需要打开编辑器并输入单个字符。显然不是。
我有一个视图解析器配置为这样:
@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
public class PageController {
@RequestMapping(value = "/index")
public String doSomething() {
//.. do Something
return "/index";
}
我的主要问题是,它无法找到该文件,如果有一个jsp扩展中地址。 如果我输入的URL没有像localhost:8080/index这样的扩展名,页面显示正确。 如果我输入带有像localhost:8080/index.jsp这样的扩展名的url,页面将返回404错误。这对于在控制器中声明的所有页面都是一样的。
任何帮助将不胜感激。谢谢,谢谢。
如果我尝试删除SetSuffix(“。jsp”),localhost:8080/index也返回一个404错误,这意味着java正在阅读我的viewresolver代码。但是当我将后缀设置为“.jsp”时,如何将index.jsp映射到index.jsp?我错过了什么配置? – user3386275
这就是你如何配置的东西,也是如何工作。你不应该直接访问你的jsp文件(你也不能像在/ WEB-INF下那样),你将不得不让Spring解决JSP(因此也就是'/ index'作品,因为spring正在处理)按照预想的那样简短地工作(可能与你想要的不一样,但是唉)。 –
谢谢M. Deinum。现在一切都说得通了。我错过了/ WEB-INF下的东西的概念,不能直接访问。 – user3386275