当在web.xml文件和控制台noHandlerFound中的urlpattern中使用*.jsp时,Spring MVC显示404的原因是因为Spring MVC默认不会将以.jsp结尾的URL映射到对应的JSP文件上。
在Spring MVC中,URL的映射是通过HandlerMapping来实现的,而默认的HandlerMapping是RequestMappingHandlerMapping。该HandlerMapping会根据配置的@RequestMapping注解来确定URL与Controller的映射关系。
当URL的后缀为.jsp时,默认的HandlerMapping无法找到对应的Controller来处理该请求,因此会返回404错误。
要解决这个问题,可以通过配置InternalResourceViewResolver来将以.jsp结尾的URL映射到对应的JSP文件上。
在web.xml文件中,可以添加以下配置:
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
在spring-mvc.xml文件中,可以添加以下配置:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
上述配置中,InternalResourceViewResolver将以.jsp结尾的URL解析为对应的JSP文件,prefix属性指定JSP文件所在的目录,suffix属性指定JSP文件的后缀。
另外,为了处理404错误,可以在web.xml文件中配置error-page,将404错误重定向到一个自定义的错误页面,例如error.jsp。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云