我发现一个很奇怪的现象,我修改jsp的时候,控制器里面是:
@RequestMapping(value = "/student/{id}",method = RequestMethod.PUT) public String updateStudent(@PathVariable("id") int id,String name,int qq,String major){ Student student = new Student(); student.setId(id); student.setQq(qq); student.setName(name); student.setMajor(major); studentService.updateByPrimaryKey(student); return "redirect:/student/list";
但是update.jsp里面却是:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body style="text-align: center"> <h2 style="text-align: center">编辑学员</h2> <form action="${pageContext.request.contextPath }/student/${student.id}" method="post" > <input type="hidden" name="_method" value="PUT"> <br>姓名<input type="text" name="name" value="${student.name}" style="text-align: center"> <br>QQ<input type="text" name="qq" value="${student.qq}" style="text-align: center"> <br>主修<input type="text" name="major" value="${student.major}" style="text-align: center"> <input type="submit" value="修改"> </form> </body> </html>
method后面是post。那是因为springMVC只能进行post和put方法,如果是其他方法,可以通过一个配置转化,配置在web.xml里面。:
<!--SpringMVC 只能处理post和get,为了还原对put和delete的处理,web.xml里面要加如下过滤器--> <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><input type="hidden" name="_method" value = ""put">为什么方法method前面要加个_符号呢?不知道。