学习日志——2019/08/12

学生信息管理系统(四)

更新学生信息

在这里插入图片描述

  1. 点击列表上的更新, 先跳转到一个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 去查询这个学生的所有信息出来。

  1. 跳转到更新的页面。 ,然后在页面上显示数据
		 <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>
  1. 修改完毕后,提交数据到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>
  1. 获取数据,调用service, 调用dao.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值