发表于: 2018-06-10 23:25:23
1 824
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
今天明白了为什么要把post请求转换成delete和put请求
浏览器的form表单只支持POST和get,而rest是用不同的动词post、get、delete、put对应请求,
因此增添和获取数据部分不需要更改请求。
1.在web.xml中配置POST请求转换为delelt和put请求
<!-- 配置把post请求转化成PUT或DELETE请求 -->
<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>
更新数据接受的请求control
@RequestMapping(path = "/updateUser",method = RequestMethod.PUT)
public String updateUser(User user, Model model) throws Exception
更新数据使用PUT请求操作,可以使用表单的隐藏域实现或者也可以把PUT改为POST(也可以用于更新资源)
<input type="hidden" name="..." value="...">
属性解释:
type=”hidden”定义隐藏域;
name属性定义隐藏域的名称,要保证数据的准确采集,必须定义一个独一无二的名称;
value属性定义隐藏域的值
例如:<input type=”hidden” name=”ExPws” value=”dd”>
在表单中添加隐藏域
否则会出现不支持POST请求,我们在controller限制只接受put请求
2.删除对应的delete操作
delete 操作没有用表单操作,使用ajax提交请求
JSP页面
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
function del(id) {
if(confirm("确定删除?"))
var url = '${pageContext.request.contextPath }/user/delUser/'+id;
$.ajax({
url:url,/*url也可以是json之类的文件等等*/
type:'DELETE',/*DELETE、POST */
dataType:'json',
});
}
删除按钮
<a href="<%=basePath%>user/getAllUser" onclick="del(${user.id})">删除</a>
Controller
@ResponseBody
@RequestMapping(path = "/delUser/{id}",method = RequestMethod.DELETE)
public String del( @PathVariable int id) throws Exception {
userService.delUser(id);
return "redirec/user/getAllUser";
}
明天计划的事情:(一定要写非常细致的内容)
继续完善程序
遇到的问题:(遇到什么困难,怎么解决的)
删除按钮链接,执行顺序:点击删除按钮>调用del()方法发送delete请求>
删除数据跳的<a标签>href连接,此处链接为空>跳转到了项目根路径,出现乱码
<a href="" onclick="del(${user.id})">删除</a>
删除数据没有跳转到用户列表,
正确写法已经写在上面
收获:(通过今天的学习,学到了什么知识)
delete resful风格实现
为什么要把POST转换为put和delete
评论