The premise is that the picture directory has been placed outside the WEB-INF, and the Error 404 is still reported. If it is a JSP resource, it can be parsed correctly. Later, it was found that it was caused by the spring MVC configuration file
, added in the configuration file
<mvc:default-servlet-handler />
If you visit again, you will no longer report errors
The landlord checked the function of this configuration
when looking for pages, the servlet follows the route of dispatcher servlet. If it cannot be found, it will report 404
when this default servlet is added, the servlet will look for static content when it cannot be found
How can your dispatcher servlet intercept URLs such as *. Do?There is no problem that you can't access static resources. If your
dispatcher servlet intercepts "/", all requests are intercepted, and the access to *. JS and *. JPG is also intercepted
purpose: you can access the static file normally. Don’t report 404 if you can’t find the static file
scheme 1: activate Tomcat’s defaultservlet to process static files
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> To configure multiple, one for each file
To write in front of the dispatcher servlet, let The defaultservlet is intercepted first, and this will not enter spring
Tomcat, Jetty, JBoss, and GlassFish Name of default servlet — “default”
name of default servlet of Google App Engine — “_ah_Default ”
name of the default servlet –” reset file ”
name of the Weblogic default Servlet — ” FileServlet”
WebSphere The name of the default servlet — “simplefileservlet”
scheme 2, use < mvc:default-servlet-handler/>
The “/ * *” URL will be registered in the urlmap of simpleurlhandlermapping, and the access to static resources will be transferred from handlermapping to org.springframework.web.servlet.resource.defaultservlethttprequesthandler for processing and return. Defaultservlethttprequesthandler is the default servlet of each servlet container
Supplementary note: the execution sequence of multiple handlermapping:
The order attribute value of defaultannotationhandlermapping is: 0
< mvc:resources/ > Automatically registered The order property value of simpleurlhandlermapping is: 2147483646
< mvc:default-servlet-handler/> automatic logon Simpleurlhandlermapping for The value of the order attribute is: 2147483647
Spring will execute the with a small order value first. When accessing a a.jpg image file, first DefaultAnnotationHandlerMapping We can’t find the processor. We don’t have an action called a.jpg. Then find it in ascending order of order value, because the last one SimpleUrlHandlerMapping It’s a horse “/**” Yes, so it will match and respond to the picture
Similar Posts:
- [Solved] com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes
- Struts 2.0 Error: The Struts dispatcher cannot be found (Error 500 Internal Server Error)
- How to Solve Error: The content of element type “web-app” must match “(icon?display
- [Solved] Spring Error: Artifact spring:war exploded: Error during artifact deployment. See server log for details
- [Solved] IDEA: JSP Could Not Use session Build-in Object
- [Solved] Warning: Servlet threw load() exception java.lang.ClassNotFoundException: org.glassfish.jersey.servlet…
- Using Tomcat 10 to build a servlet, an error is reported: class XXX is not a servlet
- import javax.servlet.http.HttpSession;
- [Solved] IDEA javaweb web.xml File Error: Invalid content was found starting with element
- Tomcat10 Error: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener