1.相关控制类
package com.hwy.controller;
import com.hwy.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
/*
* 用户Rest风格CRUD
* form表单提交PUT和DELETE出现问题:会将PUT和DELETE作GET提交,因为HTML现在无法支持PUT和DELETE:
* 解决方案:
* 1.需要添加HiddenHttpMethodFilter过滤器
* 2.在表单中添加一个隐藏域 <input type="hidden" value="put" name="_method"> value就是对应的请求方式
* 3.将form的表单设置POST
*
* tomcat7以上的版本对request.method更加严格:只支持 GET/POST
* 解决方案:
* 1.使用tomcat7
* 2.不用转发,使用重定向
* 3.自定义一个过滤器
* */
@Controller
@RequestMapping("/rest")
public class RestController {
//查询
@GetMapping("/user/{id}")
public String get(@PathVariable("id") String id){
System.out.println("查询"+id);
return "/index.jsp";
}
//修改
@PutMapping("/user/{id}")
public String update(User user){
System.out.println("修改"+user);
return "/index.jsp";
}
//删除
@DeleteMapping("/user/{id}")
public String delete(@PathVariable("id") String id){
System.out.println("删除"+id);
return "redirect:/index.jsp";
}
//新增
@PostMapping("/user")
public String add(User user){
System.out.println("新增"+user);
return "redirect:/index.jsp";
}
}
-
用户Rest风格CRUD
-
form表单提交PUT和DELETE出现问题:会将PUT和DELETE作GET提交,因为HTML现在无法支持PUT和DELETE:
-
解决方案:
-
1.需要添加HiddenHttpMethodFilter过滤器
-
2.在表单中添加一个隐藏域 value就是对应的请求方式
-
3.将form的表单设置POST
-
tomcat7以上的版本对request.method更加严格:只支持 GET/POST
-
解决方案:
-
1.使用tomcat7
-
2.不用转发,使用重定向
-
3.自定义一个过滤器
2.jsp类
<%--
Created by IntelliJ IDEA.
User: MSI-NB
Date: 2021/12/9
Time: 19:12
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% request.setAttribute("basepath",request.getContextPath());%>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${basepath}/rest/user/1" method="get">
<input type="submit" value="查询">
</form>
<form action="${basepath}/rest/user" method="post">
id: <input name="id" type="text"><p></p>
姓名:<input name="name" type="text"><p></p>
<input type="submit" value="新增">
</form>
<form action="${basepath}/rest/user/1" method="post">
<input type="hidden" value="put" name="_method">
<input type="submit" value="修改">
</form>
<form action="${basepath}/rest/user/1" method="post">
<input type="hidden" value="delete" name="_method">
<input type="submit" value="删除">
</form>
</body>
</html>
3.XML
<!--处理Rest中PUT和DELETE HTML不支持-->
<filter>
<filter-name>hiddenHttpMethod</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethod</filter-name>
<servlet-name>springmvc</servlet-name>
</filter-mapping>
静态资源的处理
springmvc.xml中配置
<!--将映射的地址直接指向静态资源文件,springmvc将不会将要此映射作为Handler-->
<mvc:resources mapping="/resources/**" location="/resources/"/>