一。系统分析
只要一个界面 ,但是建议写两个,一个用于显示投票界面 ,一个用于接受用户的投票,将所对应的老师得票加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>

Mastering the method of adding MySQL users is crucial for database administrators and developers because it ensures the security and access control of the database. 1) Create a new user using the CREATEUSER command, 2) Assign permissions through the GRANT command, 3) Use FLUSHPRIVILEGES to ensure permissions take effect, 4) Regularly audit and clean user accounts to maintain performance and security.

ChooseCHARforfixed-lengthdata,VARCHARforvariable-lengthdata,andTEXTforlargetextfields.1)CHARisefficientforconsistent-lengthdatalikecodes.2)VARCHARsuitsvariable-lengthdatalikenames,balancingflexibilityandperformance.3)TEXTisidealforlargetextslikeartic

Best practices for handling string data types and indexes in MySQL include: 1) Selecting the appropriate string type, such as CHAR for fixed length, VARCHAR for variable length, and TEXT for large text; 2) Be cautious in indexing, avoid over-indexing, and create indexes for common queries; 3) Use prefix indexes and full-text indexes to optimize long string searches; 4) Regularly monitor and optimize indexes to keep indexes small and efficient. Through these methods, we can balance read and write performance and improve database efficiency.

ToaddauserremotelytoMySQL,followthesesteps:1)ConnecttoMySQLasroot,2)Createanewuserwithremoteaccess,3)Grantnecessaryprivileges,and4)Flushprivileges.BecautiousofsecurityrisksbylimitingprivilegesandaccesstospecificIPs,ensuringstrongpasswords,andmonitori

TostorestringsefficientlyinMySQL,choosetherightdatatypebasedonyourneeds:1)UseCHARforfixed-lengthstringslikecountrycodes.2)UseVARCHARforvariable-lengthstringslikenames.3)UseTEXTforlong-formtextcontent.4)UseBLOBforbinarydatalikeimages.Considerstorageov

When selecting MySQL's BLOB and TEXT data types, BLOB is suitable for storing binary data, and TEXT is suitable for storing text data. 1) BLOB is suitable for binary data such as pictures and audio, 2) TEXT is suitable for text data such as articles and comments. When choosing, data properties and performance optimization must be considered.

No,youshouldnotusetherootuserinMySQLforyourproduct.Instead,createspecificuserswithlimitedprivilegestoenhancesecurityandperformance:1)Createanewuserwithastrongpassword,2)Grantonlynecessarypermissionstothisuser,3)Regularlyreviewandupdateuserpermissions

MySQLstringdatatypesshouldbechosenbasedondatacharacteristicsandusecases:1)UseCHARforfixed-lengthstringslikecountrycodes.2)UseVARCHARforvariable-lengthstringslikenames.3)UseBINARYorVARBINARYforbinarydatalikecryptographickeys.4)UseBLOBorTEXTforlargeuns


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

SublimeText3 Linux new version
SublimeText3 Linux latest version

WebStorm Mac version
Useful JavaScript development tools
