第六章EL和JSTL 1-el表达式(2)

案例

    1. 数据库:

     学生:姓名、性别、生日、身高、所属班级(select选择)、是否特长生,民族(select选择)

     老师:姓名、电话、生日

     班级:班级名称、教室号、班主任老师(select选择)

     民族:名称

     课上实现老师、学生的增删改查。 Dao(Servlet中不出现SQL语句、ResultSet等JDBC):DAO返回的数据、接收的数据都用Model。我习惯Model类名以Info结束。

     作业:完成“老师、班级”的增删改查。给“老师”增加 “民族、性别、邮箱”三个字段。

     2.DAO的理由:1、Servlet中不出现数据库相关的东西。2、把所有和数据库相关的东西放到DAO中,Servlet只和DAO打交道。3、Servlet和DAO之间传递复杂数据用对象

    3. DAO的优点:各司其职:Servlet就是负责和用户交互(获取请求,处理请求,返回响应),到底数据是怎么样跟数据库搞出来的,Servlet不管;DAO只负责和数据库打交道,取出来的数据怎么用,为什么要addnew一条数据,DAO不管。

     4.有的老师的习惯:DAO和Model合一。


项目列表:

 

【TeacherDAO.java】

【TeacherInfo.java】

【RupengUtils.java】

【TeacherServlet.java】

【TeacherList.jsp】

【TeacherEdit.jsp】

【TeacherAddNew.jsp】

【Error.jsp】

 

建好数据库


建议:现在大家都习惯在catch里throw newRuntimeException了想处理就处理

很少throws 检查异常  spring基本都是遵循这个习惯  为了调用者方便

Dao有好多种写法

在Dao中封装一个方法toModel  把ResultSet转换为TeacherInfo对象

 

【TeacherDAO.java】

 

package com.rupeng.web3;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

/**
 * 对教师表的增删改查等进行封装
 * 
 * @author yzk
 * 
 */
public class TeacherDAO
{
	// 方法的参数一般不要超过5个。
	// public void addnew(String name,String phoneNum,...)
	//spring
	
	/**
	 * 新增数据
	 */
	public void addnew(TeacherInfo teacher)
	{
		try
		{
			JdbcUtils.executeUpdate(
							"Insert into T_Teachers(Name,PhoneNum,BirthDay) values(?,?,?)",
							teacher.getName(), teacher.getPhoneNum(), teacher.getBirthDay());
		} catch (SQLException e)
		{
			//封装成RuntimeException主要为了调用者方便
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 更新数据(要求id字段是确定,不被修改)
	 * @param teacher
	 */
	public void update(TeacherInfo teacher)
	{
		try
		{
			JdbcUtils.executeUpdate("Update T_Teachers set Name=?,PhoneNum=?,BirthDay=? where Id=?",
					teacher.getName(),teacher.getPhoneNum(),teacher.getBirthDay(),teacher.getId());
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 删除主键为id的老师
	 * @param id
	 */
	public void delete(int id)
	{
		try
		{
			JdbcUtils.executeUpdate("delete from T_Teachers where Id=?", id);
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 查找逐渐为参数id值的老师
	 * @param id
	 * @return 老师对象
	 */
	public TeacherInfo getById(int id)
	{
		ResultSet rs = null;
		try
		{
			rs = JdbcUtils.executeQuery("select * from T_Teachers where Id=?", id);
			if(rs.next())
			{
				/*
				TeacherInfo info = new TeacherInfo();
				info.setId(rs.getInt("Id"));
				info.setName(rs.getString("Name"));
				info.setPhoneNum(rs.getString("PhoneNum"));
				info.setBirthDay(rs.getDate("BirthDay"));
				return info;*/
				return toModel(rs);
			}
			else
			{
				return null;//一条数据都没有,也就是没有找到id=id的数据
			}
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			JdbcUtils.closeAll(rs);
		}
	}
	
	/**
	 * 读取当前行的数据,然后形成一个对象返回
	 * @param rs
	 * @return
	 * @throws SQLException
	 */
	private TeacherInfo toModel(ResultSet rs) throws SQLException
	{
		TeacherInfo info = new TeacherInfo();
		info.setId(rs.getInt("Id"));
		info.setName(rs.getString("Name"));
		info.setPhoneNum(rs.getString("PhoneNum"));
		info.setBirthDay(rs.getDate("BirthDay"));
		return info;
	}
	
	/**
	 * 获得所有的老师对象
	 * @return
	 */
	public List<TeacherInfo> getAll()
	{
		ResultSet rs = null;
		try
		{
			rs = JdbcUtils.executeQuery("select * from T_Teachers");
			List<TeacherInfo> list = new LinkedList<TeacherInfo>();
			while(rs.next())
			{
				/*
				TeacherInfo info = new TeacherInfo();
				info.setId(rs.getInt("Id"));
				info.setName(rs.getString("Name"));
				info.setPhoneNum(rs.getString("PhoneNum"));
				info.setBirthDay(rs.getDate("BirthDay"));
				list.add(info);*/
				list.add(toModel(rs));
			}
			return list;
		}
		catch(SQLException e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			JdbcUtils.closeAll(rs);
		}
	}
}

【TeacherInfo.java】

package com.rupeng.web3;

import java.sql.Date;

public class TeacherInfo
{
	private int id;
	private String name;
	private String phoneNum;
	private Date birthDay;

	public int getId()
	{
		return id;
	}

	public void setId(int id)
	{
		this.id = id;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getPhoneNum()
	{
		return phoneNum;
	}

	public void setPhoneNum(String phoneNum)
	{
		this.phoneNum = phoneNum;
	}

	public Date getBirthDay()
	{
		return birthDay;
	}

	public void setBirthDay(Date birthDay)
	{
		this.birthDay = birthDay;
	}
}

乱码处理 转到错误页

【RupengUtils.java】

package com.rupeng.web3;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RupengUtils
{
	/**
	 * 从请求中获取名字为name的值,解决中文乱码问题
	 * @param req
	 * @param name
	 * @return
	 */
	public static String getParameter(HttpServletRequest request, String name)
	{
		try
		{
			String value = request.getParameter(name);
			byte[] bytes;
			bytes = value.getBytes("ISO-8859-1");
			return new String(bytes, "UTF-8");
		} catch (UnsupportedEncodingException e)
		{
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 在/Error.jsp中显示错误消息
	 * @param request
	 * @param response
	 * @param msg
	 * @throws ServletException
	 * @throws IOException
	 */
	public static void showError(HttpServletRequest request,HttpServletResponse response,String msg)
	throws ServletException, IOException
	{
		request.setAttribute("msg", msg);
		request.getRequestDispatcher("/Error.jsp").forward(request, response);
	}
}

【TeacherServlet.java】

package com.rupeng.web3;

import java.io.IOException;
import java.sql.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TeacherServlet extends HttpServlet
{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
	{
		this.doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		String action = request.getParameter("action");
		if(action.equals("addnew"))
		{
			request.getRequestDispatcher("/TeacherAddNew.jsp").forward(request, response);
		}
		else if(action.equals("addnewSubmit"))
		{
			String name = RupengUtils.getParameter(request, "name");
			String phoneNum = request.getParameter("phoneNum");
			String birthDay = request.getParameter("birthDay");
			Date dateBirthDay = Date.valueOf(birthDay);//把"2008-08-08"这样的字符串解析为Date类型
			
			TeacherInfo teacher = new TeacherInfo();
			teacher.setName(name);
			teacher.setPhoneNum(phoneNum);
			teacher.setBirthDay(dateBirthDay);
			
			//看不到一行sql语句,看不到一个和JDBC相关的东西
			//在Servlet中不出现JDBC、不出现SQL语句
			//JDBC、SQL语句出现在DAO中
			
			//对于复杂的项目,引入DAO会让代码更清晰,可复用性更强
			TeacherDAO dao = new TeacherDAO();
			dao.addnew(teacher);
			response.sendRedirect("teacher?action=list");
		}
		else if(action.equals("edit"))
		{
			int id = Integer.parseInt(request.getParameter("id"));
			//先查询修改前的数据
			TeacherInfo teacher = new TeacherDAO().getById(id);
			if(teacher==null)
			{
				/*
				request.setAttribute("msg", "没有查询到id="+id+"的老师");
				request.getRequestDispatcher("/Error.jsp").forward(request, response);*/
				RupengUtils.showError(request, response, "没有查询到id="+id+"的老师");
			}
			else
			{
				request.setAttribute("teacher",teacher);
				request.getRequestDispatcher("/TeacherEdit.jsp").forward(request, response);
			}
		}
		else if(action.equals("editSubmit"))
		{
			int id = Integer.parseInt(request.getParameter("id"));
			String name = RupengUtils.getParameter(request, "name");
			String phoneNum = request.getParameter("phoneNum");
			String birthDay = request.getParameter("birthDay");
			Date dateBirthDay = Date.valueOf(birthDay);//把"2008-08-08"这样的字符串解析为Date类型

			TeacherInfo teacher = new TeacherInfo();
			teacher.setId(id);
			teacher.setName(name);
			teacher.setPhoneNum(phoneNum);
			teacher.setBirthDay(dateBirthDay);
			new TeacherDAO().update(teacher);
			
			response.sendRedirect("teacher?action=list");
		}
		else if(action.equals("delete"))
		{
			int id = Integer.parseInt(request.getParameter("id"));
			new TeacherDAO().delete(id);
			response.sendRedirect("teacher?action=list");
		}
		else if(action.equals("list"))
		{
			TeacherDAO dao = new TeacherDAO();
			List<TeacherInfo> list = dao.getAll();
			request.setAttribute("teachers", list);
			request.getRequestDispatcher("/TeacherList.jsp").forward(request, response);
		}
		else
		{
			/*
			request.setAttribute("msg", "错误的action:"+action);
			request.getRequestDispatcher("/Error.jsp").forward(request, response);*/
			RupengUtils.showError(request, response,"错误的action:"+action);
		}
	}
}

【TeacherList.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>教师管理</title>
</head>
<body>
	<p><a href="teacher?action=addnew">新建教师</a></p>
	<table>
		<tr><td>删除</td><td>修改</td><td>姓名</td><td>手机号</td><td>生日</td></tr>
		<c:forEach items="${teachers}" var="t">
		<tr><td><a href="teacher?action=delete&id=${t.id}">删除</a></td><td><a href="teacher?action=edit&id=${t.id}">修改</a></td><td><c:out value="${t.name}"/></td><td><c:out value="${t.phoneNum}"/></td><td>${t.birthDay}</td></tr>
		</c:forEach>
	</table>
</body>
</html>

【TeacherEdit.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>编辑教师</title>
</head>
<body>
<form action="teacher" method="post">
	<input type="hidden" name="action" value="editSubmit"/>
	<input type="hidden" name="id" value="${teacher.id}"/>
	姓名:<input type="text" name="name" value="${teacher.name }"/>
	手机号:<input type="text" name="phoneNum" value="${teacher.phoneNum }"/>
	生日:<input type="text" name="birthDay" value="${teacher.birthDay }"/>
	<input type="submit" value="保存"/>
</form>
</body>
</html>

【TeacherAddNew.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新建老师</title>
</head>
<body>
<form action="teacher" method="post">
	<input type="hidden" name="action" value="addnewSubmit"/>
	姓名:<input type="text" name="name"/>
	手机号:<input type="text" name="phoneNum"/>
	生日:<input type="text" name="birthDay"/>
	<input type="submit" value="保存"/>
</form>
</body>
</html>

【Error.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>错误</title>
</head>
<body>
${msg}
</body>
</html>

Student项目列表:

【StudentDAO.java】

【StudentInfo.java】

【StudentServlet.java】

【StudentList.jsp】

【StudentEdit.jsp】

【StudentList.jsp】

 

【StudentDAO.java】

package com.rupeng.web3;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

public class StudentDAO
{

	public void addnew(StudentInfo student)
	{
		try
		{
			JdbcUtils.executeUpdate(
							"Insert into T_Students(Name,Gender,BirthDay,ClassId,TeChangSheng,MinZuId) values(?,?,?,?,?,?)",
							student.getName(), student.isGender(), student.getBirthDay(),student.getClassId(),
							student.isTeChangSheng(),student.getMinZuId());
		} catch (SQLException e)
		{
			//封装成RuntimeException主要为了调用者方便
			throw new RuntimeException(e);
		}
	}
	
	public void update(StudentInfo student)
	{
		try
		{
			JdbcUtils.executeUpdate("Update T_Students set Name=?,Gender=?,BirthDay=?,ClassId=?,TeChangSheng=?,MinZuId=? where Id=?",
					student.getName(),student.isGender(),student.getBirthDay(),student.getClassId(),student.isTeChangSheng(),
					student.getMinZuId(),student.getId());
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		}
	}
	
	public void delete(int id)
	{
		try
		{
			JdbcUtils.executeUpdate("delete from T_Students where Id=?", id);
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		}
	}
	
	public StudentInfo getById(int id)
	{
		ResultSet rs = null;
		try
		{
			rs = JdbcUtils.executeQuery("select * from T_Students where Id=?", id);
			if(rs.next())
			{
				return toModel(rs);
			}
			else
			{
				return null;//一条数据都没有,也就是没有找到id=id的数据
			}
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			JdbcUtils.closeAll(rs);
		}
	}
	
	private StudentInfo toModel(ResultSet rs) throws SQLException
	{
		StudentInfo info = new StudentInfo();
		info.setId(rs.getInt("Id"));
		info.setName(rs.getString("Name"));
		info.setGender(rs.getBoolean("Gender"));
		info.setBirthDay(rs.getDate("BirthDay"));
		info.setClassId(rs.getInt("ClassId"));
		info.setTeChangSheng(rs.getBoolean("TeChangSheng"));
		info.setMinZuId(rs.getInt("MinZuId"));
		return info;
	}
	
	public List<StudentInfo> getAll()
	{
		ResultSet rs = null;
		try
		{
			rs = JdbcUtils.executeQuery("select * from T_Students");
			List<StudentInfo> list = new LinkedList<StudentInfo>();
			while(rs.next())
			{
				list.add(toModel(rs));
			}
			return list;
		}
		catch(SQLException e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			JdbcUtils.closeAll(rs);
		}
	}
}

【StudentInfo.java】

package com.rupeng.web3;

import java.sql.Date;

public class StudentInfo
{
	private int id;
	private String haha;
	private boolean gender;
	private Date birthDay;
	private int classId;
	private boolean teChangSheng;
	private int minZuId;

	public int getId()
	{
		return id;
	}

	public void setId(int id)
	{
		this.id = id;
	}

	public String getName()
	{
		//return "rupeng";
		return haha;
	}

	public void setName(String name)
	{
		this.haha = name;
	}

	public boolean isGender()
	{
		return gender;
	}

	public void setGender(boolean gender)
	{
		this.gender = gender;
	}

	public Date getBirthDay()
	{
		return birthDay;
	}

	public void setBirthDay(Date birthDay)
	{
		this.birthDay = birthDay;
	}

	public int getClassId()
	{
		return classId;
	}

	public void setClassId(int classId)
	{
		this.classId = classId;
	}

	//对于boolean类型的属性,获取方法既可以以get开头又可以以is开头
	//如果既有get方法又有is方法,则is方法优先级高
	
	//vip、gender(性别)。He is vip。He is Gender。His Gender is male。
	//isVIP、getGender()
	//isTeChangSheng
	
	//
	/*
	public boolean isTeChangSheng()
	{
		return true;
	}*/
	
	public boolean isTeChangSheng()
	//public boolean getTeChangSheng()
	{
		return teChangSheng;
	}

	public void setTeChangSheng(boolean teChangSheng)
	{
		this.teChangSheng = teChangSheng;
	}

	public int getMinZuId()
	{
		return minZuId;
	}

	public void setMinZuId(int minZuId)
	{
		this.minZuId = minZuId;
	}

}

【StudentServlet.java】

package com.rupeng.web3;

import java.io.IOException;
import java.sql.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StudentServlet extends HttpServlet
{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
	{
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		String action = request.getParameter("action");
		if (action.equals("addnew"))
		{
			List<MinZuInfo> minzus = new MinZuDAO().getAll();
			request.setAttribute("minzus", minzus);//给到jsp中的民族下拉列表显示所有民族使用
			
			request.getRequestDispatcher("/StudentAddNew.jsp").forward(request,
					response);
		} else if (action.equals("addnewSubmit"))
		{
			String name = RupengUtils.getParameter(request, "name");
			/*
			boolean gender = Boolean.parseBoolean(request
					.getParameter("gender"));*/
			boolean gender ="male".equals(request.getParameter("gender"));
			
			String birthDay = request.getParameter("birthDay");
			Date dateBirthDay = Date.valueOf(birthDay);
			int classId = Integer.parseInt(request.getParameter("classId"));
			boolean teChangSheng = "on".equalsIgnoreCase(request
					.getParameter("teChangSheng"));
			int minZuId = Integer.parseInt(request.getParameter("minZuId"));
			StudentInfo student = new StudentInfo();
			student.setBirthDay(dateBirthDay);
			student.setClassId(classId);
			student.setGender(gender);
			student.setMinZuId(minZuId);
			student.setName(name);
			student.setTeChangSheng(teChangSheng);
			new StudentDAO().addnew(student);

			response.sendRedirect("student?action=list");
		} else if (action.equals("edit"))
		{
			int id = Integer.parseInt(request.getParameter("id"));
			StudentInfo student = new StudentDAO().getById(id);
			request.setAttribute("student", student);
			
			List<MinZuInfo> minzus = new MinZuDAO().getAll();
			request.setAttribute("minzus", minzus);//给到jsp中的民族下拉列表显示所有民族使用

			
			request.getRequestDispatcher("/StudentEdit.jsp").forward(request,
					response);
		} else if (action.equals("editSubmit"))
		{
			int id = Integer.parseInt(request.getParameter("id"));
			String name = RupengUtils.getParameter(request, "name");
			boolean gender = Boolean.parseBoolean(request
					.getParameter("gender"));
			String birthDay = request.getParameter("birthDay");
			Date dateBirthDay = Date.valueOf(birthDay);
			int classId = Integer.parseInt(request.getParameter("classId"));
			boolean teChangSheng = "on".equalsIgnoreCase(request
					.getParameter("teChangSheng"));
			int minZuId = Integer.parseInt(request.getParameter("minZuId"));

			StudentInfo student = new StudentInfo();
			student.setId(id);
			student.setBirthDay(dateBirthDay);
			student.setClassId(classId);
			student.setGender(gender);
			student.setMinZuId(minZuId);
			student.setName(name);
			student.setTeChangSheng(teChangSheng);
			new StudentDAO().update(student);

			response.sendRedirect("student?action=list");
		} else if (action.equals("list"))
		{
			List<StudentInfo> list = new StudentDAO().getAll();
			request.setAttribute("students", list);
			request.getRequestDispatcher("/StudentList.jsp").forward(request,
					response);
		} else if (action.equals("delete"))
		{
			int id = Integer.parseInt(request.getParameter("id"));
			new StudentDAO().delete(id);
			response.sendRedirect("student?action=list");
		} else
		{
			RupengUtils.showError(request, response, "action错误" + action);
		}
	}
}

【StudentAddNew.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新增学生</title>
</head>
<body>
<form action="student" method="post">
	<input type="hidden" name="action" value="addnewSubmit"/>
	<table>
		<tr><td>姓名:</td><td><input type="text" name="name"/></td><td>
		性别:</td><td>
		<select name="gender">
			<option value="male">男</option>
			<option value="female">女</option>
		</select>
		
		</td></tr>
		<tr><td>出生日期:</td><td><input type="text" name="birthDay"/></td><td>班级:</td><td><input type="text" name="classId"/></td></tr>
		<tr><td><input type="checkbox" name="teChangSheng" id="teChangSheng" /><label for="teChangSheng">特长生</label></td><td></td>
		<td>民族:</td><td>
		<select name="minZuId">
			<c:forEach items="${requestScope.minzus}" var="minzu">
				<option value="${minzu.id}">${minzu.name}</option>
			</c:forEach>
		</select>		
		</td></tr>
	</table>
	<input type="submit" value="保存"/>
</form>
</body>
</html>


【StudentEdit.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改学生</title>
</head>
<body>
<form action="student" method="post">
	<input type="hidden" name="action" value="editSubmit"/>
	<input type="hidden" name="id" value="${student.id }" />
	<table>
		<tr><td>姓名:</td><td><input type="text" name="name" value="<c:out value='${student.name }'/>"/></td>
		<td>性别:</td><td>
		<select name="gender">
			<option value="male" ${student.gender?'selected':'' }>男</option>
			<option value="female"${student.gender?'':'selected' }>女</option>
		</select>
		</td></tr>
		<tr><td>出生日期:</td><td><input type="text" name="birthDay" value="${student.birthDay }"/></td>
		<td>班级:</td><td><input type="text" name="classId" value="${student.classId }"/></td></tr>
		<tr><td><input type="checkbox" name="teChangSheng" id="teChangSheng" ${student.teChangSheng?'checked':'' }/><label for="teChangSheng">特长生</label></td><td></td>
		<td>民族:</td><td>
		<select name="minZuId">
			<c:forEach items="${requestScope.minzus}" var="minzu">
				<option value="${minzu.id}" ${student.minZuId eq minzu.id?'selected':'' }>${minzu.name}</option>
			</c:forEach>
		</select>	
		
		</td></tr>
	</table>	
	<input type="submit" value="保存"/>
</form>
</body>
</html>

【StudentList.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生管理</title>
</head>
<body>
<p><a href="student?action=addnew">新增学生</a></p>
<table>
	<thead>
		<tr><td>删除</td><td>修改</td><td>姓名</td><td>性别</td><td>生日</td><td>是否特长生</td></tr>
	</thead>
	<tbody>
	<c:forEach items="${students}" var="s">
		<tr><td><a href="student?action=delete&id=${s.id}">删除</a></td><td><a href="student?action=edit&id=${s.id}">修改</a></td>
		<td><c:out value="${s.name}"/></td><td>${s.gender }</td><td>${s.birthDay }</td><td>${s.teChangSheng }</td></tr>
	</c:forEach>
	</tbody>
</table>
</body>
</html>

民族项目列表:

【MinZuDAO.java】

【MinZuInfo.java】

 

【MinZuDAO.java】

package com.rupeng.web3;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

public class MinZuDAO
{
	public List<MinZuInfo> getAll()
	{
		List<MinZuInfo> list = new LinkedList<MinZuInfo>();
		ResultSet rs = null;
		try
		{
			rs = JdbcUtils.executeQuery("select * from T_MinZus");
			while(rs.next())
			{
				list.add(toModel(rs));
			}
			return list;
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		} finally
		{
			JdbcUtils.closeAll(rs);
		}
	}
	
	private MinZuInfo toModel(ResultSet rs) throws SQLException
	{
		MinZuInfo info = new MinZuInfo();
		info.setId(rs.getInt("Id"));
		info.setName(rs.getString("Name"));
		return info;
	}
}

【MinZuInfo.java】

package com.rupeng.web3;

public class MinZuInfo
{
	private int id;
	private String name;
	public int getId()
	{
		return id;
	}
	public void setId(int id)
	{
		this.id = id;
	}
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	
}

班级项目列表

【ClassDAO.java】

【ClassInfo.java】

 

【ClassDAO.java】

package com.rupeng.web3;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

public class ClassDAO
{
	private ClassInfo toModel(ResultSet rs) throws SQLException
	{
		ClassInfo info = new ClassInfo();
		info.setId(rs.getInt("Id"));
		info.setName(rs.getString("Name"));
		info.setRoomNum(rs.getString("RootNum"));
		info.setTeacherId(rs.getInt("TeacherId"));
		return info;
	}
	
	public List<ClassInfo> getAll()
	{
		List<ClassInfo> list = new LinkedList<ClassInfo>();
		ResultSet rs = null;
		try
		{
			rs = JdbcUtils.executeQuery("select * from T_Classes");
			while(rs.next())
			{
				list.add(toModel(rs));
			}
			return list;
		} catch (SQLException e)
		{
			throw new RuntimeException(e);
		} finally
		{
			JdbcUtils.closeAll(rs);
		}
	}
}

【ClassInfo.java】

package com.rupeng.web3;

public class ClassInfo
{
	private int id;
	private String name;
	private String roomNum;
	private int teacherId;

	public int getId()
	{
		return id;
	}

	public void setId(int id)
	{
		this.id = id;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getRoomNum()
	{
		return roomNum;
	}

	public void setRoomNum(String roomNum)
	{
		this.roomNum = roomNum;
	}

	public int getTeacherId()
	{
		return teacherId;
	}

	public void setTeacherId(int teacherId)
	{
		this.teacherId = teacherId;
	}

}

【总结】有的老师会把TeacherInfo类和TeacherDao类合成一个类

JavaBean规范  直接s.name  引用属性getName实际属性为name

boolean属性获取方法既可以以get开头也可以以is开头 都存在就is优先级高




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值