1 删除实验代码
- 页面链接
<td><a href=”/empDelete/${emp.id }”>Delete</a></td> |
- 控制器方法
@RequestMapping(value=”/empDelete/{id}” ,method=RequestMethod.DELETE)
public String empDelete(@PathVariable(“id”) Integer id){ employeeDao.delete(id); return “redirect:/empList”; } |
2 HiddenHttpMethodFilter过滤器
发起请求,无法执行,因为delete请求必须通过post请求转换为delete请求,借助:HiddenHttpMethodFilter过滤器
3 需要使用jQuery来转换请求方式
- 加入jQuery库文件
/scripts/jquery-1.9.1.min.js
- jQuery库文件不起作用
警告: No mapping found for HTTP request with URI [/SpringMVC_03_RESTFul_CRUD/scripts/jquery-1.9.1.min.js] in DispatcherServlet with name ‘springDispatcherServlet’ |
![]() |
- 解决办法,SpringMVC 处理静态资源
- 为什么会有这样的问题:
优雅的 REST 风格的资源URL 不希望带 .html 或 .do 等后缀,若将 DispatcherServlet 请求映射配置为 /, 则 Spring MVC 将捕获 WEB 容器的所有请求, 包括静态资源的请求, SpringMVC 会将他们当成一个普通请求处理, 因找不到对应处理器将导致错误。
②解决: 在 SpringMVC 的配置文件中配置 <mvc:default-servlet-handler/>
- 配置后,原来的请求又不好使了
需要配置<mvc:annotation-driven />
4 关于<mvc:default-servlet-handler/>作用
<!–
<mvc:default-servlet-handler/> 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler, 它会对进入 DispatcherServlet 的请求进行筛查,如果发现是没有经过映射的请求, 就将该请求交由 WEB 应用服务器默认的 Servlet 处理,如果不是静态资源的请求,才由 DispatcherServlet 继续处理 一般 WEB 应用服务器默认的 Servlet 的名称都是 default。 若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定 参考:CATALINA_HOME/config/web.xml <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 该标签属性default-servlet-name默认值是”default”,可以省略。 <mvc:default-servlet-handler/> –> <mvc:default-servlet-handler default-servlet-name=”default”/> |
5 通过jQuery转换为DELETE请求
<td><a class=”delete” href=”empDelete/${emp.id }”>Delete</a></td> |
<form action=”” method=”post”>
<input type=”hidden” name=”_method” value=”DELETE”/> </form> |
<script type=”text/javascript” src=”scripts/jquery-1.9.1.min.js”></script>
<script type=”text/javascript”> $(function(){ $(“.delete”).click(function(){ var href = $(this).attr(“href”); $(“form”).attr(“action”,href).submit(); return false ; }); }); </script> |
6 删除操作流程图解
想要了解跟多关于java培训知识欢迎关注小编!