要求同上一个练习一样,只使用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 stub String 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 stub String 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>");