@EnableWebMvc //<mvc:annotation-driven/>
public class AppConfig implements WebMvcConfigurer {
//视图解析器
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/",".jsp");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/*")
.addResourceLocations("/WEB-INF/static/");
}
//<mvc:default-servlet-handler></mvc:default-servlet-handler>
//处理不了的请求交给tomcat处理 通常静态资源
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
上图是springMVC的配置,图片404怎么都不好使。
jsp如下
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Person</title>
</head>
<body>
<h1>person</h1>
${5+1}
<img src="${pageContext.request.contextPath}/static/zl.jpg">
</body>
</html>
之前springmvc404 我一直没怎么寻思,看到别人说怎么好使我就怎么copy。弄的乱七八糟。
结论是我个人感觉,可能有误。忘大神指教。
在tomcat中发布图片所在的文件夹。
1).addResourceHandlers 等同于 <mvc:resources mapping="/static/*" location="/WEB-INF/static/"/>
访问/static/*路径时,对应的映射资源在哪 springmvc起作用
2).configureDefaultServletHandling 等同于 <mvc:default-servlet-handler></mvc:default-servlet-handler>
将springmvc处理不了的请求。交给tomcat处理 tomcat起作用
最开始的时候我两个都配置了但还是404,原因应该是
我在web.xml写了如下代码
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
这是tomcat配置一个servlet专门处理.jpg结尾的请求,与springmvc无关。当请求图片时,springmvc交给tomcat处理,可能是我tomcat少配置了东西,导致404.
如下设置
发布static文件夹,图片放在里面,重启后
直接访问好使,jsp中还是不行。
tomcat下的static去掉, 2)注释掉,web.xml里的servlet也注释了。
jsp好使,直接访问不行。
我想让直接访问跟jsp都好使。
tomcat下的static保留,1,2保留,web.xml中的servlet注释。
可行,俩种方式都ok。
总之就是提供一个排查404的方向吧。