Maison > Article > base de données > 基于表单的投票系统--MySql ,DAO ,VO_MySQL
一。系统分析
只要一个界面 ,但是建议写两个,一个用于显示投票界面 ,一个用于接受用户的投票,将所对应的老师得票加1 ,
工作完了再回到前一个界面 。
各个页面与作用:
VoteDao.java 连接数据库,查询老师的编号 ,姓名 ,得票,修改老师的得票数,将编号对应的得票 数加 1
Vote.java 封装老师的编号 ,姓名 ,得票 数
display.jsp 调用VoteDao查询老师编号 ,姓名 ,得票数,并显示
vote.jsp 获得request 传送 过来的老师编号数组 ,调用 VoteDao 将每个编号对应的得票数加1 ,回到display.jsp
二。数据库初始化
属性:teacherno teachername votenumber
在mySQL中写成脚本运行,用source 命令。
use test;create table t_vote( teacherno varchar(20), teachername varchar(20), vote int );insert into t_vote values('1', 'lishengjing',1);insert into t_vote values('2', 'huangwenjun',1);insert into t_vote values('3', 'zhaosy',2);insert into t_vote values('4', 'chaoshehn',3);
三。java 代码
要将MySQL的驱动复制到 web-inf/lib中,将bar.jpg 复制到WebRoot下的img目录。导入包时最好用 import java.sql*;
public class VoteDao { private Connection conn=null; public void initConnection() throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url ="jdbc:mysql://localhost:3306/test"; conn = DriverManager.getConnection(url , "root","root"); } public ArrayList getAllVotes()throws Exception{ ArrayList all = new ArrayList (); initConnection(); String sql = "select * from t_vote"; Statement stat= conn.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()){ Vote vote = new Vote(); vote.setTeacherno(rs.getString("teacherno")); vote.setTeachername(rs.getString("teachername")); vote.setVotenumber(rs.getInt("vote")); all.add(vote); } clossConnection(); return all; } public void updateVotes(String [] teacherno )throws Exception{ initConnection(); String sql = "update t_vote set vote=vote+1 where teacherno=?"; PreparedStatement ps = conn.prepareStatement(sql); for (int i =0;i<teacherno.length;i++){ ps.setString(1, teacherno[i]); ps.executeUpdate(); } clossConnection(); } public void clossConnection ()throws Exception{ conn.close(); }}
四。JSP代码部分
display.jsp
<body> <form action ="vote.jsp" method ="post"> <table align="center"> <caption> 欢迎投票<input type="submit" value="提交"> </caption> <tr bgcolor="yellow"> <td>编号</td> <td>姓名</td> <td>得票数</td> </tr> <% VoteDao vdao= new VoteDao(); ArrayList votes = vdao.getAllVotes(); for (int i=0;i<votes.size();i++){ Vote vote =(Vote) votes.get(i); %> <tr bgcolor="pink"> <td><%=vote.getTeacherno()%></td> <td><%=vote.getTeachername()%></td> <td><img src ="img/bar.jpg" style="max-width:90%"基于表单的投票系统--MySql ,DAO ,VO_MySQL" >" height ="10"/> <%=vote.getVotenumber() %></td> <td><input name="teacherno" type="checkbox" value="<%=vote.getTeacherno()%>"></td> </tr> <% } %> </table> </form> </body>
vote,jsp
<body> <% String [] teacherno = request.getParameterValues("teacherno") ; VoteDao vdao = new VoteDao(); vdao.updateVotes(teacherno); %> <jsp:forward page="display.jsp"></jsp:forward> </body>