當談到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