发表于: 2018-03-29 23:50:02
2 573
@RequestMapping(value = "/student/{id}",method = RequestMethod.PUT)
public String updateStudent(@PathVariable("id") int id,String name,String 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";
}
// @RequestMapping(value = "/student/{id}",method = RequestMethod.PUT)
// public String updateStudent(Student student){
// studentService.updateByPrimaryKey(student);
// log.info("student={}",student);
// return "redirect:/student/list";
// }
今天做了个特别骚的操作,我看控制器里的update方法特别长,于是就是自己改成了注释后的那个样子,这样不用传那么一大堆参数了,也不用新建一个对象,我只需要通过studentService调用updateByPrimaryKey(student)方法就可以啦。返回值重定向到student/list.
运行了一下之后,发现在页面里依然能够改,也就是照常运行。
这就很奇怪了。明明是根据id才能修改,现在没有传id的参数,为什么还能继续修改呢?
用postman测试put端口,就发现了区别了,因为测不出来,只能传进去id,其他参数穿不进去
后来在web。xml里面加入了过滤器的配置,才好了。至于原理,其实我没搞懂。
<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>
二。然后就尝试解释web.xml配置参数
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<!-- 解决工程编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param>
//这个是解决汉字编码的。
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param><init-param>
//
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring的配置文件--><context-param>
设置环境参数,一个设置名字,一个设置名字的值
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--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>
<!-- spring mvc核心:分发servlet -->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- spring mvc的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping><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>
</web-app>
三。json里面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<json:object escapeXml="false">
<json:array name="学员信息">
<c:forEach var="student" items="${studentList}">
<json:object>
<json:property name="id" value="${student.id}"></json:property>
<json:property name="创建时间" value="${student.createAt}"></json:property>
<json:property name="更新时间" value="${student.updateAt}"></json:property>
<json:property name="姓名" value="${student.name}"></json:property>
<json:property name="性别" value="${student.sex}"></json:property>
<json:property name="QQ" value="${student.qq}"></json:property>
<json:property name="主修" value="${student.major}"></json:property>
<json:property name="入学时间" value="${student.entryTime}"></json:property>
<json:property name="来自" value="${student.comeFrom}"></json:property>
</json:object>
</c:forEach>
</json:array>
</json:object>
看控制器里,json对应的方法是GET,于是我用postman去测试GET。输入地址是:http://localhost:8887/student/list/json
@RequestMapping(value = "/student/list/json", method = RequestMethod.GET)
public String getAllByJson(Model model) {
List<Student> studentList = studentService.getAll();
model.addAttribute("studentList", studentList);
return "jsonList";
}
测试结果出了个500错误。
明天的计划:再改一下json,看能不能提交任务二
遇到的问题:暂无
今天的收获:重学了postman,解释了web.xml
java任务二开始时间:2018.01.25
预计demo时间:2018.02.12
可能有延期风险,原因是:json看不懂,控制器的逻辑看不懂,所以又回看了java语法
禅道链接地址:http://task.ptteng.com/zentao/project-task-501.html
评论