javaweb實(shí)現(xiàn)投票系統(tǒng)
本文實(shí)例為大家分享了javaweb實(shí)現(xiàn)投票系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
這次給大家?guī)硪粋€課堂基礎(chǔ)作業(yè),簡單的javaweb投票系統(tǒng)。
當(dāng)然也設(shè)計了添加投票人的接口,只是list頁面沒有直接導(dǎo)航過去。
如頁面顯示,可以增加和減少相應(yīng)的票數(shù)。同時id是利用數(shù)據(jù)庫該字段作為主鍵自增的。 name 和頭像都是上傳的,由mysql數(shù)據(jù)庫存儲照片名然后再自動尋找到。票數(shù)是直接由user_votes存儲使用。
接下來帶來關(guān)鍵代碼。
//這是類User_list package com.example.user_votes; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.Driver; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; @WebServlet("/list") public class User_list extends HelloServlet{ ? ? @Override ? ? protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ? ? ? ? //連接數(shù)據(jù)庫,獲取所有的用戶信息 ? ? ? ? //創(chuàng)建一個用戶對象 ? ? ? ? List<User> userlist = new ArrayList<User>(); ? ? ? ? try { ? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動程序 // ? ? ? ? ? ?DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); ? ? ? ? ? ? Class.forName("com.mysql.cj.jdbc.Driver"); // ? ? ? ?2.創(chuàng)建數(shù)據(jù)庫連接 ? ? ? ? ? ? String url = "jdbc:mysql://localhost:3306/java_test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; ? ? ? ? ? ? String jdbcuser = "root"; ? ? ? ? ? ? String jdbcpwd = "500400"; ? ? ? ? ? ? Connection conn = DriverManager.getConnection(url, jdbcuser, jdbcpwd); // ? ? ? ?3.創(chuàng)建語句對象 ? ? ? ? ? ? Statement stmt = conn.createStatement(); // ? ? ? ?4.執(zhí)行sql // ? ? ? ? ? ? ? ?被注釋的代碼是插入數(shù)據(jù) ? ? ? ? ? ? String ?sql ="SELECT * from user_votes"; ? ? ? ? ? ? //動態(tài)操作 ? ? ? ? ? ? ResultSet rows = stmt.executeQuery(sql); // ? ? ? ?5.處理結(jié)果 rows.next() 用于遍歷rows對象集 ? ? ? ? ? ? while(rows.next()){ ? ? ? ? ? ? ? ? User user = new User(); ? ? ? ? ? ? ? ? user.setId(rows.getInt("id")); ? ? ? ? ? ? ? ? user.setName(rows.getString("user_name")); ? ? ? ? ? ? ? ? user.setUrl(rows.getString("url")); ? ? ? ? ? ? ? ? user.setVotes(Integer.parseInt(rows.getString("votes"))); ? ? ? ? ? ? ? ? userlist.add(user); ? ? ? ? ? ? } // ? ? ? ?6.關(guān)閉語句對象,數(shù)據(jù)庫連接rows.close()關(guān)閉row對象集 ? ? ? ? ? ? rows.close(); ? ? ? ? ? ? stmt.clearBatch(); ? ? ? ? ? ? conn.close(); ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? System.out.println("獲取用戶列表失敗" + e.getMessage()); ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? ? ? //返回響應(yīng),以表格的方式顯示所有用戶 ? ? ? ? resp.setContentType("text/html"); ? ? ? ? resp.setCharacterEncoding("utf-8"); ? ? ? ? PrintWriter out =resp.getWriter(); ? ? ? ? out.println("<html><head><title>投票系統(tǒng)</title></head><body>"); ? ? ? ? if (userlist.size()>0){ ? ? ? ? ? ? out.println("<table>"); ? ? ? ? ? ? out.println("<caption></caption>"); ? ? ? ? ? ? out.println("<tr>"); ? ? ? ? ? ? out.println("<th>id</th>"); ? ? ? ? ? ? out.println("<th style=\"\n" + ? ? ? ? ? ? ? ? ? ? " padding-left: 10px; text-align: left;\n" + ? ? ? ? ? ? ? ? ? ? "\">Name</th>"); ? ? ? ? ? ? out.println("<th>照片</th>"); ? ? ? ? ? ? out.println("<th>votes</th>"); ? ? ? ? ? ? out.println("<th>操作</th>"); ? ? ? ? ? ? out.println("</tr>"); ? ? ? ? ? ? for (User user:userlist){ ? ? ? ? ? ? ? ? out.println("<tr>"); ? ? ? ? ? ? ? ? out.println("<td>"+user.getId()+"</td>"); ? ? ? ? ? ? ? ? out.println("<td>"+"   "+user.getName()+"</td>"); ? ? ? ? ? ? ? ? out.println("<td><img width = '30px' height = '30px' src="+"/photo/"+user.getUrl()+".jpg"+"></td>"); ? ? ? ? ? ? ? ? out.println("<td>"+"   "+user.getVotes()+"</td>"); ? ? ? ? ? ? ? ? out.println("<td><a href=add?id="+user.getId()+"&votes="+user.getVotes()+">add</a> <a href=delete?id="+user.getId()+"&votes="+user.getVotes()+">刪除</a></td>"); ? ? ? ? ? ? ? ? out.println("</tr>"); ? ? ? ? ? ? } ? ? ? ? ? ? out.println("</table>"); ? ? ? ? ? ? out.println(""); ? ? ? ? }else{ ? ? ? ? ? ? out.println("暫無用戶"); ? ? ? ? } ? ? ? ? out.println(); ? ? ? ? out.println("</body></html> ? ? }? }
這一段是用于list頁面的展示代碼。
同時以下是增減票數(shù)的代碼。
//這個是增加票數(shù)add package com.example.user_votes; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.*; @WebServlet("/add") public class AddUserVotes extends HttpServlet { ? ? @Override ? ? protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ? ? ? ? //解析表單數(shù)據(jù),獲取要添加的用戶信 ? ? ? ? // ? ? ? ?解析請求 ? ? ? ? req.setCharacterEncoding("utf-8"); ? ? ? ? PrintWriter out = resp.getWriter(); ? ? ? ? //使用自己寫的User類 ? ? ? ? User user = new User(); ? ? ? ? user.setId(Integer.parseInt(req.getParameter("id"))); ? ? ? ? user.setVotes(Integer.parseInt(req.getParameter("votes"))); // ? ? ? ?連接數(shù)據(jù)庫的操作 ? ? ? ? try { ? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動程序 ? ? ? ? ? ? String driver = "com.mysql.cj.jdbc.Driver"; ? ? ? ? ? ? Class.forName(driver).newInstance(); // ? ? ? ?2.創(chuàng)建數(shù)據(jù)庫連接 ? ? ? ? ? ? String url = "jdbc:mysql://localhost:3306/java_test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; ? ? ? ? ? ? String jdbcuser = "root"; ? ? ? ? ? ? String jdbcpwd = "500400"; ? ? ? ? ? ? Connection conn = DriverManager.getConnection(url,jdbcuser,jdbcpwd); // ? ? ? ?3.創(chuàng)建語句對象 ? ? ? ? ? ? //靜態(tài)的mysql操作語句 // ? ? ? ? ? ?Statement stmt = conn.createStatement(); // ? ? ? ?4.執(zhí)行sql ? ? ? ? ? ? String sql = "UPDATE user_votes SET votes = ? WHERE id = ?"; ? ? ? ? ? ? PreparedStatement pstmt = conn.prepareStatement(sql); ? ? ? ? ? ? //動態(tài)操作 ? ? ? ? ? ? int uservotes = user.getVotes()+1; ? ? ? ? ? ? pstmt.setInt(1,uservotes); ? ? ? ? ? ? pstmt.setInt(2,user.getId()); ? ? ? ? ? ? int rows = pstmt.executeUpdate(); // ? ? ? ?5.處理結(jié)果 ? ? ? ? ? ? if(rows == 1){ ? ? ? ? ? ? ? ? System.out.println("add成功為:"+uservotes); ? ? ? ? ? ? } ? ? ? ? ? ? else { ? ? ? ? ? ? ? ? System.out.println("add失??!"); ? ? ? ? ? ? } // ? ? ? ?6.關(guān)閉語句對象,數(shù)據(jù)庫連接 ? ? ? ? ? ? pstmt.clearBatch(); ? ? ? ? ? ? conn.close(); ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? System.out.println("添加用戶失敗"+e.getMessage()); ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? }; ? ? ? ? resp.setContentType("text/html;charset=UTF-8"); ? ? ? ? resp.getWriter().println("<script>alert('投票成功!');window.location.href='list';</script>"); ? ? ? ? //跳轉(zhuǎn)到用戶列表界面 ? ? ? ? resp.sendRedirect("list"); ? ? } }
減少票數(shù)
package com.example.user_votes; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; @WebServlet("/delete") public class DeleteUserVotes extends HelloServlet{ ? ? @Override ? ? protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ? ? ? ? //解析表單數(shù)據(jù),獲取要添加的用戶信 ? ? ? ? // ? ? ? ?解析請求 ? ? ? ? req.setCharacterEncoding("utf-8"); ? ? ? ? PrintWriter out = resp.getWriter(); ? ? ? ? //使用自己寫的User類 ? ? ? ? User user = new User(); ? ? ? ? user.setId(Integer.parseInt(req.getParameter("id"))); ? ? ? ? user.setVotes(Integer.parseInt(req.getParameter("votes"))); // ? ? ? ?連接數(shù)據(jù)庫的操作 ? ? ? ? try { ? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動程序 ? ? ? ? ? ? String driver = "com.mysql.cj.jdbc.Driver"; ? ? ? ? ? ? Class.forName(driver).newInstance(); // ? ? ? ?2.創(chuàng)建數(shù)據(jù)庫連接 ? ? ? ? ? ? String url = "jdbc:mysql://localhost:3306/java_test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; ? ? ? ? ? ? String jdbcuser = "root"; ? ? ? ? ? ? String jdbcpwd = "500400"; ? ? ? ? ? ? Connection conn = DriverManager.getConnection(url,jdbcuser,jdbcpwd); // ? ? ? ?3.創(chuàng)建語句對象 ? ? ? ? ? ? //靜態(tài)的mysql操作語句 // ? ? ? ? ? ?Statement stmt = conn.createStatement(); // ? ? ? ?4.執(zhí)行sql ? ? ? ? ? ? String sql = "DELETE FROM user_votes WHERE id = ?"; ? ? ? ? ? ? PreparedStatement pstmt = conn.prepareStatement(sql); ? ? ? ? ? ? //動態(tài)操作 ? ? ? ? ? ? pstmt.setInt(1,user.getId()); ? ? ? ? ? ? int rows = pstmt.executeUpdate(); // ? ? ? ?5.處理結(jié)果 ? ? ? ? ? ? if(rows == 1){ ? ? ? ? ? ? ? ? System.out.println("delete成功為:"+user.getId()); ? ? ? ? ? ? } ? ? ? ? ? ? else { ? ? ? ? ? ? ? ? System.out.println("delete失??!"); ? ? ? ? ? ? } // ? ? ? ?6.關(guān)閉語句對象,數(shù)據(jù)庫連接 ? ? ? ? ? ? pstmt.clearBatch(); ? ? ? ? ? ? conn.close(); ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? System.out.println("添加用戶失敗"+e.getMessage()); ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? }; ? ? ? ? //跳轉(zhuǎn)到用戶列表界面 ? ? ? ? resp.sendRedirect("list"); ? ? } }
添加參與投票的
package com.example.user_votes; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class AddUser extends HelloServlet{ ? ? @Override ? ? protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ? ? ? ? //解析表單數(shù)據(jù),獲取要添加的用戶信 ? ? ? ? // ? ? ? ?解析請求 ? ? ? ? req.setCharacterEncoding("utf-8"); ? ? ? ? PrintWriter out = resp.getWriter(); ? ? ? ? //使用自己寫的User類 ? ? ? ? User user = new User(); ? ? ? ? user.setName(req.getParameter("name")); ? ? ? ? user.setUrl(req.getParameter("url")); ? ? ? ? user.setVotes(0); // ? ? ? ?連接數(shù)據(jù)庫的操作 ? ? ? ? try { ? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動程序 ? ? ? ? ? ? String driver = "com.mysql.cj.jdbc.Driver"; ? ? ? ? ? ? Class.forName(driver).newInstance(); // ? ? ? ?2.創(chuàng)建數(shù)據(jù)庫連接 ? ? ? ? ? ? String url = "jdbc:mysql://localhost:3306/java_test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; ? ? ? ? ? ? String jdbcuser = "root"; ? ? ? ? ? ? String jdbcpwd = "500400"; ? ? ? ? ? ? Connection conn = DriverManager.getConnection(url,jdbcuser,jdbcpwd); // ? ? ? ?3.創(chuàng)建語句對象 ? ? ? ? ? ? //靜態(tài)的mysql操作語句 // ? ? ? ? ? ?Statement stmt = conn.createStatement(); // ? ? ? ?4.執(zhí)行sql ? ? ? ? ? ? String sql = "INSERT INTO user_votes(user_name,url,votes) VALUES(?,?,?)\n"; ? ? ? ? ? ? PreparedStatement pstmt = conn.prepareStatement(sql); ? ? ? ? ? ? //動態(tài)操作 ? ? ? ? ? ? pstmt.setString(1,user.getName()); ? ? ? ? ? ? pstmt.setString(2,user.getUrl()); ? ? ? ? ? ? pstmt.setInt(3,user.getVotes()); ? ? ? ? ? ? int rows = pstmt.executeUpdate(); // ? ? ? ?5.處理結(jié)果 ? ? ? ? ? ? if(rows == 1){ ? ? ? ? ? ? ? ? System.out.println("add成功為:"+user.getName()); ? ? ? ? ? ? } ? ? ? ? ? ? else { ? ? ? ? ? ? ? ? System.out.println("add失敗!"); ? ? ? ? ? ? } // ? ? ? ?6.關(guān)閉語句對象,數(shù)據(jù)庫連接 ? ? ? ? ? ? pstmt.clearBatch(); ? ? ? ? ? ? conn.close(); ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? System.out.println("添加用戶失敗"+e.getMessage()); ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? }; ? ? ? ? //跳轉(zhuǎn)到用戶列表界面 ? ? ? ? resp.sendRedirect("list"); ? ? } }
該項(xiàng)目沒有使用mvc項(xiàng)目結(jié)構(gòu),就是因?yàn)楸容^簡單,因此如果有剛剛學(xué)習(xí)到這里的可以來看看,參考學(xué)習(xí)
附上項(xiàng)目目錄圖,其他的就沒有過多的去介紹了,畢竟比較簡單。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在eclipse導(dǎo)入Java的jar包的方法JDBC(圖文說明)
這篇文章主要介紹了在eclipse導(dǎo)入Java 的jar包的方法 JDBC 圖文說明 ,需要的朋友可以參考下2015-09-09Java線程池隊(duì)列LinkedBlockingDeque
這篇文章主要為大家介紹了Java線程池隊(duì)列LinkedBlockingDeque示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Java中生產(chǎn)者消費(fèi)者問題總結(jié)
這篇文章主要介紹了Java中生產(chǎn)者消費(fèi)者問題總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07詳解rabbitmq使用springboot實(shí)現(xiàn)fanout模式
這篇文章主要介紹了rabbitmq使用springboot實(shí)現(xiàn)fanout模式,Fanout特點(diǎn)是發(fā)布與訂閱模式,是一種廣播機(jī)制,它是沒有路由key的模式,需要的朋友可以參考下2023-07-07