学生信息管理系统(四)
更新学生信息
- 点击列表上的更新, 先跳转到一个EditServlet
package e.servlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import e.domain.Student;
import e.service.StudentService;
import e.service.impl.StudentServiceImpl;
/**处理单个学生的更新,查询一个学生的信息,然后跳转到更新页面
* Servlet implementation class EditServlet
*/
public class EditServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//1.接收id
int sid =Integer.parseInt(request.getParameter("sid"));
//2.查询学生数据
StudentService service=new StudentServiceImpl();
Student stu = service.findStudentById(sid);
//3.显示数据
//存数据
request.setAttribute("stu", stu);
//跳转
request.getRequestDispatcher("edit.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
在这个Servlet里面,先根据ID 去查询这个学生的所有信息出来。
- 跳转到更新的页面。 ,然后在页面上显示数据
<tr>
<td>姓名</td>
<td><input type="text" name="sname" value="${stu.sname }"></td>
</tr>
<tr>
<td>性别</td>
<td>
<!-- 如果性别是男的, 可以在男的性别 input标签里面, 出现checked ,
如果性别是男的, 可以在女的性别 input标签里面,出现checked -->
<input type="radio" name="gender" value="男" <c:if test="${stu.gender == '男'}">checked</c:if>>男
<input type="radio" name="gender" value="女" <c:if test="${stu.gender == '女'}">checked</c:if>>女
</td>
</tr>
<tr>
<td>爱好</td>
<td>
<!-- 爱好: 篮球 , 足球 , 看书
因为爱好有很多个, 里面存在包含的关系 -->
<input type="checkbox" name="hobby" value="游泳" <c:if test="${fn:contains(stu.hobby,'游泳') }">checked</c:if>>游泳
<input type="checkbox" name="hobby" value="篮球" <c:if test="${fn:contains(stu.hobby,'篮球') }">checked</c:if>>篮球
<input type="checkbox" name="hobby" value="足球" <c:if test="${fn:contains(stu.hobby,'足球') }">checked</c:if>>足球
<input type="checkbox" name="hobby" value="看书" <c:if test="${fn:contains(stu.hobby,'看书') }">checked</c:if>>看书
<input type="checkbox" name="hobby" value="写字" <c:if test="${fn:contains(stu.hobby,'写字') }">checked</c:if>>写字
</td>
</tr>
- 修改完毕后,提交数据到UpdateServlet
package e.servlet;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.tribes.util.Arrays;
import e.domain.Student;
import e.service.StudentService;
import e.service.impl.StudentServiceImpl;
/**
* Servlet implementation class UpdateServlet
*/
public class UpdateServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
request.setCharacterEncoding("UTF-8");
//1.获取客户端提交上来的数据
int sid=Integer.parseInt(request.getParameter("sid"));
String sname=request.getParameter("sname");
String gender=request.getParameter("gender");
String phone=request.getParameter("phone");
String birthday=request.getParameter("birthday");
//String hobby=request.getParameter("hobby");
String info=request.getParameter("info");
String [] h=request.getParameterValues("hobby");
String hobby=Arrays.toString(h);
hobby=hobby.substring(1, hobby.length()-1);
//2.添加到数据库
//String ---date
Date date= new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
Student student = new Student(sid,sname, gender, phone, hobby,date, info);
//3.更新数据库数据
StudentService service=new StudentServiceImpl();
service.update(student);
//4.跳转到列表页
request.getRequestDispatcher("StudentServlet").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
提交上来的数据是没有带id的,所以我们要手动创建一个隐藏的输入框, 在这里面给定id的值, 以便提交表单,带上id。
<form method="post" action="UpdateServlet">
<input type="hidden" name="sid" value="${stu.sid }">
...
</form>
- 获取数据,调用service, 调用dao.