新增处理完之后,接下来就是处理更新信息和删除信息的操作了,项目我已经放在gitee上了,可以参考下,这里就不贴源码了。
这里就说说更新过程中遇到的问题,因为Tomcat服务器默认是不支持HTTP的put 和delete的请求。所以我们要使用rest风格的增删查改,需要解决这个问题。
下面是jsp页面中通过ajax发送put请求,但是Tomcat服务器不支持该请求就会造成数据不会进行封装处理,也就造成了我们后台的controller拿不到前端发送给我们的数据,得到的employee是null。
//点击更新按钮
$("#empt_update_btn").on("click", function () {
$.ajax({
type: "PUT",
url: "${APP_PATH}/emps/" + $(this).attr("edit_id"),
data: $(".update").serialize() + "&empId=" + $(this).attr("edit_id"),
success: function (result) {
alert("更新成功!");
$("#empUpdateModal").modal('hide');
select_by_pagenum(currentPage);
}
})
});
要解决上面的情况,通过度娘找到了两种办法:
第一种,找到Tomcat的安装目录,找到\conf\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>readonly</param-name>
<param-value>false</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>
第二种方法,在springmvc配置文件中,配置httpPutFormContentFilter 过滤器,它可以支持jsp 或html 的form表单的put或者delete请求。
<filter>
<filter-name>httpPutFormcontentFilter</filter-name>
<filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>httpPutFormContentFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第三种方法,在springmvc配置文件中,配置HiddenHttpMethodFilter的过滤器、可以把 POST 请求转为 DELETE 或 POST 请求 。但是和第二种过滤器不同的是,他不能直接写成type:“put”或者type:“delete” 而是需要在form表单中添加一个隐藏域,并且该隐藏域的 name=“_method" value="put" 或者是 name=“_method" value="delete"请看下图。
<!--
配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求
-->
<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>
<form action="#" method="post">
<input type="hidden" name="_method" value="DELETE"/>
<input type="submit"/>
</form>