springmvc实例之删除雇员相关信息(三)

2020-08-26 10:48:08 浏览数 (1)

接上一节。

  • 我们进行删除操作使用DELETE请求

要想将POST请求转换成PUT、DELETE请求,需要在web.xml中配置过滤器:

代码语言:javascript复制
    <!-- 配置 HiddenHttpMethodFilter: 把 POST 请求转为 DELETE、PUT 请求 -->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

由于在list.jsp中:

代码语言:javascript复制
<td><a class="delete" href="emp/${emp.id}">Delete</a></td>

这种通过超链接发送的请求是GET请求,因此我们要将其转换成DELETE请求。首先已经在web.xml配置相关的过滤器了。

然后我们在springmvc.xml中配置静态资源处理:

代码语言:javascript复制
    <!-- 配置静态资源 -->
    <mvc:default-servlet-handler/>

然后在WebContent目录下新建一个scripts文件夹,将jquery-1.9.1.min.js放置进去。这样静态资源文件就可以被访问到了。

但是,由于配置了这个,会导致原有的通过Handler方式访问的方式失效,所以接下来要在springmvc.xml配置文件中配置:

代码语言:javascript复制
<mvc:annotation-driven></mvc:annotation-driven>

接下来在list.jsp页面中编写相关js代码使的POST请求转换成DELETE请求:

首先是新建一个表单:type为hidden,name为_method,value为DELETE

代码语言:javascript复制
    <form action="" method="POST">
        <input type="hidden" name="_method" value="DELETE"/>
    </form>

然后引入js,并编写相关的js代码:

代码语言:javascript复制
<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>

这段js代码的意思是:在点击class名为delete的超链接时,获取该超链接的href属性,并将该属性赋予form标签的action属性,然后提交该表单。

最后,我们在EmployeeHandler.java中编写删除的方法:

代码语言:javascript复制
    @RequestMapping(value="/emp/{id}")
    public String delete(@PathVariable("id") Integer id) {
        employeeDao.delete(id);
        return "redirect:/emps";
    }

启动服务器之后:

依次点击删除最后的三项:

出现这个列表表明删除操作是成功的。

0 人点赞