我正在尝试在 Spring MVC 中使用 2 个控制器和一个调度程序 servlet。但是我在尝试渲染视图时遇到了 404 错误。调度程序非常简单,来自 web.xml:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
并具有以下配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
...
<context:component-scan base-package="com.mycompany.azalea" />
<mvc:annotation-driven />
</beans>
控制器是:
package com.mycompany.azalea;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(value = "/home")
public class homeController {
@RequestMapping(value = "/")
public String home() {
return "index";
}
}
和
package com.mycompany.azalea;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(value = "/data")
public class dataController {
@RequestMapping(value = "/")
public String home() {
return "index";
}
}
我正在使用一个非常标准的解析器:
@Configuration
public class AppConfig {
// Resolve logical view names to .jsp resources in the /WEB-INF/views directory
@Bean
ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
在 WEB-INF/views/home/ 和 WEB-INF/views/data/ 下设置视图
但是,如果我尝试请求类似的 URLhttp://localhost:8080/Azalea/home/
我在 GlassFish 日志中得到一个条目:
严重:PWC6117:找不到文件“.../build/web/ home /WEB-INF/views/index.jsp”
而不是预期的请求
“.../build/web/WEB-INF/views/ home / index.jsp”
“/data”的模式相同。从本质上看,请求映射被插入到请求中的错误位置。
我目前的工作是将解析器修改为
resolver.setPrefix("../WEB-INF/views/");
并从控制器返回以下内容:
公共类 homeController {
@RequestMapping(value = "/")
public String home() {
return "home/index";
}
}
但这似乎是一个次优的解决方案。如果您有任何建议,请告诉我。