配置视图解析器的前缀后,工程访问jsp页面时前缀多了个工程名导致了404,这个该怎么解决
时间: 2024-09-26 20:06:38 浏览: 18
当你配置了Spring MVC的视图解析器前缀,并且发现访问JSP页面时URL带上了工程名而找不到资源,这通常是因为默认的视图解析器是在项目路径基础上查找视图。为了解决这个问题,你可以尝试以下几种方法:
1. **修改视图解析器配置**:在`WebMvcConfigurerAdapter`或者自定义的`WebMvcConfigurer`中,可以设置静态的视图前缀。例如:
```java
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.prefix("/").suffix(".jsp");
}
```
这将使得所有的JSP视图都直接基于当前应用根目录下查找。
2. **启用相对路径**:如果你希望使用相对路径而不是绝对路径,可以在Spring MVC的配置文件中添加 `useSuffixPatternMatch=true`,这样解析器会从当前请求的上下文中寻找资源,而不是工程的根目录。
3. **调整静态资源映射**:如果工程名只是在某些特定url路径上出现问题,你可以考虑针对这些路径单独配置静态资源处理器(如`<mvc:default-servlet-handler/>`),或者在web.xml中指定正确的Servlet映射。
4. **清理浏览器缓存**:有时候,旧的URL可能会保留在浏览器缓存中,清空缓存后尝试访问新的URL可能会解决问题。
5. **检查URL生成规则**:确认你的控制器返回的`ModelAndView`中的`viewName`属性是否正确,它应该是一个不含工程名的简单字符串。
记得检查相关日志信息,看看是否有关于视图解析失败的具体错误信息,以便更好地定位问题所在。