Spring 的Servlet拦截器匹配规则(即 <url-pattern>...</url-pattern> )都可以自己定义,例:当映射为@RequestMapping("/user/add")时 拦截*.do、*.htm, 例如:/user/add.do这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。 拦截 /,例如:/user/add可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。想实现REST风格,事情就是麻烦一些。后面有解决办法还算简单。 拦截 /*这是一个错误的方式,请求可以走到Action中,但转到jsp时再次被拦截,不能访问到jsp。 拦截 /时的配置文件如下: <servlet-mapping> <servlet-name>spring-Servlet</servlet-name> <!--<url-pattern>*.do</url-pattern>--> <!--第一种--> <url-pattern>/</url-pattern><!--第二种--> </servlet-mapping> <!-- 对静态资源文件的访问 不支持访问WEB-INF目录 --> <mvc:default-servlet-handler /> <!--处理HTTP请求/资源/ *有效地服务 在$ { webapproot } /资源/目录静态资源 --> <!--静态资源--> <!-- 对静态资源文件的访问 支持访问WEB-INF目录 --> <mvc:resources mapping="/css/**" location="/css/" /> <mvc:resources mapping="/js/**" location="/js/" /> <mvc:resources mapping="/images/**" location="/images/" /> <mvc:resources mapping="/jsp/**" location="/WEB-INF/jsp/" />
Dispatcher 会将jsp请求当做普通请求来处理 拦截的话 一般都是拦截相应结尾的 比如*.action