后湖做网站,做毕业设计网站教程,上海网站设计见建设,网站建设苏州公司url-pattern//url-pattern servlet的url-pattern设置为/时#xff0c; 它仅替换servlet容器的默认内置servlet#xff0c;用于处理所有与其他注册的servlet不匹配的请求。直白点说就是#xff0c;所有静态资源#xff08;js#xff0c;css#xff0c;ima…url-pattern//url-pattern servlet的url-pattern设置为/时 它仅替换servlet容器的默认内置servlet用于处理所有与其他注册的servlet不匹配的请求。直白点说就是所有静态资源jscssimage,html等的访问都将交给该servlet处理而jsp页面则交给servlet容器内置的JSP servlet处理。 会匹配到 /hello 这样的路径型的url不会匹配到模式为*.jsp这样的后缀型url言外之意就是不拦截jsp文件。故经过视图解析器后返回jsp视图时不会再进入DispatcherServlet。 说到为什么JSP页面的请求并不会命中这个Servlet那是因为servlet容器内建的JSP Servlet将会被调用而这个容器内建的JSP Servlet已经默认地映射在了*.jsp上。但还是能拦截到静态资源如*.js,*.css。 url-pattern/*/url-pattern servlet的url-pattern设置为/*时它会覆盖其他所有的servlet包括servlet容器提供的所有servlet如缺省servlet和JSP servlet。 无论你发出什么请求都会在该servlet拦截处理。通常我们不会这么做。如果你只是想使用/*那么你可以在Filter中使用它处理完后会将url交给servlet处理。 会匹配所有的url路径型的和后缀型的url(包括/login*.jsp*.js和*.html等)。故经过视图解析器后返回jsp视图时会再进入DispatcherServlet导致找不到对应的controller所以报404错。 /和/*的区别总结
先说一种问题假设你方法请求后想返回index.jsp界面return /index
如果配置成 url-pattern /* / url-pattern 这样即使你配置了如下这些同样会报错。
!-- 配置视图解析器 --
bean classorg.springframework.web.servlet.view.InternalResourceViewResolver!-- 前缀 --property nameprefix value/WEB-INF/jsp/ /!-- 后缀 --property namesuffix value.jsp /
/bean
错误提示 org.springframework.web.servlet.DispatcherServlet noHandlerFound
警告: No mapping found for HTTP request with URI [/myspring/WEB-INF/jsp/index.jsp] in DispatcherServlet with name ‘spring’ 错误,
也就是找不到 index.jsp 通过这种错误配置再来看一下两者区别吧 url-pattern / / url-pattern 不会匹配到*.jsp即*.jsp不会进入spring的 DispatcherServlet类 。 url-pattern /* / url-pattern 会匹配*.jsp会出现返回jsp视图时再次进入spring的DispatcherServlet 类重复的去分配到方法里面最终导致找不到对应的controller所以报404错。 总之关于web.xml的url映射的小知识 url-pattern//url-pattern 会匹配到/hello这样的路径型url不会匹配到模式为*.jsp这样的后缀型url url-pattern/*/url-pattern 会匹配所有url路径型的和后缀型的url(包括/hello,*.jsp,*.js和*.html等)