今天配置springmvc 的DispatcherServlet的时候,url-pattern配置成了/*,同时访问对应servlet需要跳转jsp界面,结果总是404,查阅了好多资料,明白了原因。
首先所有的请求进入tomcat,都会流经servlet,如果是jsp文件则由jsp servelt处理。如果没有匹配到任何应用指定的servlet,那么就会流到默认的servlet。默认的servlet是配置在$catalina/conf/web.xml里面的,应用的静态资源(比如 css,js,img 等)就默认由该servlet去处理。
当配置 <url-patten>/* </url-pattengt>的时候
它替换了所有default servlet和jsp servlet,这样请求的时候没有什么问题,可如果需要跳转jsp页面,或者是引用静态资源,上文提到所有的请求都会流经servlet ,这样配置替换了所有default servlet和jsp servlet,所以在处理静态字段时都走自定义serlvet,当然会报404错误
当配置 <url-patten>/</url-patten>的时候
它只会替换tomcat中的default Servlet不会替换jsp servlet。所以这样配置的话,在springmvc 的配置文件中还需要配置静态资源
当配置 <url-patten>*.do</url-patten>的时候
只处理以.do结尾的url
过滤器fitter
过滤器配置为<url-patten>/* </url-pattengt>是为了尽可能多的过滤请求
参考资料
http://stackoverflow.com/questions/4140448/difference-between-and-in-servlet-mapping-url-pattern