servlet练习2-简单学生学籍管理系统
要求同上一个练习一样,只使用servlet,实现简单的学生学籍管理系统,具备增删查改功能。
效果图:
第一部当然是建立数据库,这里使用的是oracle,
? ? ??第二部我们先写数据库的操作类吧,首先是查询所有学生信息
?
public ResultSet selectAllStudent() throws SQLException{String sql = "select * from student";java.sql.Statement stmt = conn.createStatement();ResultSet set = stmt.executeQuery(sql);System.out.println("查询正确");return set;}
?
?然后是插入一个新学生的信息
?
public boolean insertAStudent(int stu, String name, String sex, int phone,String address) throws SQLException {// TODO Auto-generated method stubString sql = "insert into student values("+stu+",'"+name+"','"+sex+"',"+phone+",'"+address+"')";Statement stmt = conn.createStatement();boolean b = stmt.execute(sql);return b;}
?
?还有依据学号删除一名学生的信息
?
public boolean deleteAStudent(int i) throws SQLException {// TODO Auto-generated method stubString sql = "delete from student where stu#='"+i+"'";Statement stmt = conn.createStatement();boolean b = stmt.execute(sql);System.out.println("删除成功");return b;}
?
?修改一名学生的信息(学号不能变)
?
public boolean updateAStudent(int stu, String name, String sex, int phone,String address) throws SQLException {String sql = "update student "+"set stuname='"+name+"',sex='"+sex+"',phone#="+phone+",address='"+address+"'"+"where stu#="+stu;Statement stmt = conn.createStatement();boolean b = stmt.execute(sql);System.out.println("更新成功");return b;}
?
?这一步就是给servlet提供对数据库操作的接口
第三部,也是重点,就是servlet的编写。
1.负责查询的servlet最简单,因为它不需要接收参数,它的职能就是调用数据库操作类中selectAllStudent方法,然后将结果集规范地显示出来,它在每一列(代表一名学生)中提供两个链接,分别是删除和编辑操作都将学号作为参数传到它请求的servlet中。
?
out.print("<td>"+set.getInt(1)+"</td>");out.print("<td>"+set.getString(2)+"</td>");out.print("<td>"+set.getString(3)+"</td>");out.print("<td>"+set.getLong(4)+"</td>");out.print("<td>"+set.getString(5)+"</td>");out.print("<td><a href='deleteServlet?stu="+set.getInt(1)+"'>删除</a>|<a href='updateServlet?stu="+set.getInt(1)+"'>修改</a></td>");
?
?
?2.负责删除的servlet需要接收一个参数,就是学生的学号
int i = Integer.valueOf(request.getParameter("stu"));
?将学号作为参数调用数据库操作类的deleteAStudent方法,方法执行结束后,请求查询的servlet,也就是直接返回主页
?
3.负责插入新学生信息的servlet用了两个,一个是用来输出表单让管理员填写学生信息,另一个接收前者发来的参数,并调用数据库的insertAStudent方法,顺便提供个返回主页的链接。
?
out.print("<h2>学生学籍管理系统</h2><hr/>");out.print("<p>编辑新学生信息</p>");out.print("<table border='0'>");out.print("<form action=insertOKServlet>");out.print("<tr><td>学号</td><td><input type='text' name='stu'/></td></tr>");out.print("<tr><td>姓名</td><td><input type='text' name='name'/></td></tr>");out.print("<tr><td>性别</td><td><input type='text' name='sex'/></td></tr>");out.print("<tr><td>电话</td><td><input type='text' name='phone'/></td></tr>");out.print("<tr><td>住址</td><td><input type='text' name='address'/></td></tr>");out.print("<tr><td><input type='submit' value='确定'/></td><td><input type='reset' value='重置'/></td></tr>");out.print("</form>");out.print("</table><hr/>");out.print("<a href='selectServlet'>回到首页</a>");
?
int stu = Integer.valueOf(request.getParameter("stu"));String name = request.getParameter("name");String sex = request.getParameter("sex");int phone = Integer.valueOf(request.getParameter("phone"));String address = request.getParameter("address");boolean b= Dao.excu().insertAStudent(stu,name,sex,phone,address);?
?
?
?
4.仿照插入,提供两个servlet,第一个输出表单让管理员编辑学生信息,其中的默认值是请求selectAStudent方法得来的,另一个调用数据库的updateAStudent方法,顺便提供返回主页的链接。
int i = Integer.valueOf(request.getParameter("stu"));ResultSet set = Dao.excu().selectAStudent(i);set.next();String name = set.getString(2);String sex = set.getString(3);long phone = set.getLong(4);String address = set.getString(5);out.print("<tr><td>学号</td><td><input type='hidden' name='stu' value="+i+"/></td></tr>");out.print("<tr><td>姓名</td><td><input type='text' name='name' value='"+name+"'/></td></tr>");out.print("<tr><td>性别</td><td><input type='text' name='sex' value='"+sex+"'/></td></tr>");out.print("<tr><td>电话</td><td><input type='text' name='phone' value="+phone+"/></td></tr>");out.print("<tr><td>住址</td><td><input type='text' name='address' value='"+address+"'/></td></tr>");out.print("<tr><td><input type='submit' value='确定'/></td><td><input type='reset' value='重置'/></td></tr>");out.print("</form>");out.print("</table><hr/>");out.print("<a href='selectServlet'>回到首页</a>");