今天在写springMVC RESTful CRUD 的delete操作将get请求经js转换成post请求最后由web.xml 过滤器转换成delete请求时,js这个静态资源被拦截
?
1. 为什么会有这样的问题:
?优雅的 REST 风格的资源URL 不希望带 .html 或 .do 等后缀
?若将 DispatcherServlet 请求映射配置为 /,
?则 Spring MVC 将捕获 WEB 容器的所有请求, 包括静态资源的请求, SpringMVC 会将他们当成一个普通请求处理, 因找不到对应处理器将导致错误。
?2. 解决: 在 SpringMVC 的配置文件中配置 <mvc:default-servlet-handler/>
?
default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求, 就将该请求交由 WEB 应用服务器默认的Servlet 处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理一般 WEB 应用服务器默认的 Servlet 的名称都是 default.若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定
?
加上之后又出现一个新的问题,以前能映射成功的controller现在出现404错误
?
最后又在springMVC的配置文件中配置<mvc:annotation-driven/>
?
问题解决,为什么要加上<mvc:annotation-driven/>现在也还没了解清楚,了解清楚下次补上。
?