发表于: 2017-12-18 21:57:46
1 618
今天完成的事情:
今天完成了任务二的web小工程的功能.并加上了Restful风格.
package com.controller;
import com.bean.Student;
import com.bean.StudentGet;
import com.bean.StudentPut;
import com.service.IService;
import com.util.ChangeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.ArrayList;
import java.util.List;
/**
* @author Arike
* Create_at 2017/12/14 11:55
*/
@Controller
@RequestMapping("/student")
public class MyController {
@Autowired
private IService servicelmpl;
private Student student;
//增加方法
@RequestMapping("/addpage")
public String get(){
return "add";
}
@RequestMapping(value = "/addmethod")
public String post(StudentGet sg){
student = ChangeUtil.studentChange(sg);
student.setCreate_at(System.currentTimeMillis()/1000);
servicelmpl.insertStudent(student);
return "forward:list";
}
//查询所有方法
@RequestMapping(value = "/list")
public String list(Model model){
List<Student> list = servicelmpl.selectAll();
List<StudentPut> list2 = new ArrayList<>();
for (Student student1 : list) {
list2.add(ChangeUtil.timeChange(student1));
}
model.addAttribute("studentList",list2);
return "list";
}
//删除方法
@RequestMapping(value = "/onestudent",method = RequestMethod.DELETE)
public String delete(Long id){
System.out.println(id);
servicelmpl.deleteStudent(id);
return "redirect:list";
}
//下面2个是更新的方法
@RequestMapping(value = "/data",method = RequestMethod.POST)
public String getdata(Long id,Model model){
Student s = servicelmpl.getStudentById(id);
model.addAttribute("newstudent", s);
return "update";
}
@RequestMapping(value = "/id",method = RequestMethod.PUT)
public String update(Long id,StudentGet sg){
student = ChangeUtil.studentChange(sg);
student.setId(id);
servicelmpl.updateStudent(student);
return "forward:list";
}
}
在增加rest风格的时候,jsp文件只能通过form表单的形式来添加,因此出现了一个问题,
<%--
Created by IntelliJ IDEA.
User: Yong
Date: 2017/12/1
Time: 16:13
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<body>
<a href="${pageContext.request.contextPath}/student/addpage">添加新的学生</a>
<table align='center' border='1' cellspacing='0'>
<tr>
<td>ID</td>
<td>学生姓名</td>
<td>QQ号码</td>
<td>修真专业</td>
<td>毕业院校</td>
<td>在线学号</td>
<td>日报链接</td>
<td>辅导师兄</td>
<td>从哪里知道修真院</td>
<td>学习愿望</td>
<td>预计到校时间</td>
<td>修改</td>
<td>删除</td>
</tr>
<c:forEach items="${studentList}" var="s">
<tr>
<td>${s.id}</td>
<td>${s.name}</td>
<td>${s.QQ}</td>
<td>${s.major}</td>
<td>${s.gra_school}</td>
<td>${s.online_id}</td>
<td>${s.daily_link}</td>
<td>${s.bro}</td>
<td>${s.know_from}</td>
<td>${s.desire}</td>
<td>${s.entry_time}</td>
<td>
<form method="post" action="${pageContext.request.contextPath}/student/data?id=${s.id}">
<input type="submit" value="修改"/>
</form>
</td>
<%--<td><a href="${pageContext.request.contextPath}/student/getdata?id=${s.id}">修改</a></td>--%>
<td>
<form method="post" action="${pageContext.request.contextPath}/student/onestudent?id=${s.id}">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除"/>
</form>
</td>
<%--<td><a href="${pageContext.request.contextPath }/student/deleteMathod?id=${s.id}" >删除</a></td>--%>
</tr>
</c:forEach>
</table>
</body>
</html>
异常是这样的
因为要使用restful风格,只能用form表单(因为jsp只支持post和get请求,要使用delete和put请求只能使用form表单使用一个伪的).
这里我出现的问题是第一个按钮这个位置,点击没有作用.通过在chorm浏览器使用F12查看源码发现,点击发现我在方法里给form表单设置的是post请求,但是第一个按钮居然是get请求.奈何对jsp的语法和知识实在不熟悉,在检查多次之后才发现,我在外层嵌套了一个空的form表头和表尾.
这个form表头我声明了,但是在整个form 里我并没有给他赋予一个按钮用于提交数据,就导致他将我设置的内层form的第一个按钮以及input的数据劫持了.
形成了一个并没有任何作用的按钮,这个问题希望以后的师弟们如果有遇到,切记.
明天计划的事情:
了解任务二深度思考里所有的知识点, 可能1天不够...
遇到的问题:
已经讲了
收获:
jsp还是强...
评论