javaweb實(shí)現(xiàn)投票系統(tǒng)
本文實(shí)例為大家分享了javaweb實(shí)現(xiàn)投票系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

這次給大家?guī)硪粋€(gè)課堂基礎(chǔ)作業(yè),簡單的javaweb投票系統(tǒng)。
當(dāng)然也設(shè)計(jì)了添加投票人的接口,只是list頁面沒有直接導(dǎo)航過去。
如頁面顯示,可以增加和減少相應(yīng)的票數(shù)。同時(shí)id是利用數(shù)據(jù)庫該字段作為主鍵自增的。 name 和頭像都是上傳的,由mysql數(shù)據(jù)庫存儲(chǔ)照片名然后再自動(dòng)尋找到。票數(shù)是直接由user_votes存儲(chǔ)使用。
接下來帶來關(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)建一個(gè)用戶對(duì)象
? ? ? ? List<User> userlist = new ArrayList<User>();
? ? ? ? try {
? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動(dòng)程序
// ? ? ? ? ? ?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)建語句對(duì)象
? ? ? ? ? ? Statement stmt = conn.createStatement();
// ? ? ? ?4.執(zhí)行sql
// ? ? ? ? ? ? ? ?被注釋的代碼是插入數(shù)據(jù)
? ? ? ? ? ? String ?sql ="SELECT * from user_votes";
? ? ? ? ? ? //動(dòng)態(tài)操作
? ? ? ? ? ? ResultSet rows = stmt.executeQuery(sql);
// ? ? ? ?5.處理結(jié)果 rows.next() 用于遍歷rows對(duì)象集
? ? ? ? ? ? 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)閉語句對(duì)象,數(shù)據(jù)庫連接rows.close()關(guān)閉row對(duì)象集
? ? ? ? ? ? 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ù)的代碼。
//這個(gè)是增加票數(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ù),獲取要添加的用戶信
? ? ? ? // ? ? ? ?解析請(qǐng)求
? ? ? ? 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ū)動(dòng)程序
? ? ? ? ? ? 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)建語句對(duì)象
? ? ? ? ? ? //靜態(tài)的mysql操作語句
// ? ? ? ? ? ?Statement stmt = conn.createStatement();
// ? ? ? ?4.執(zhí)行sql
? ? ? ? ? ? String sql = "UPDATE user_votes SET votes = ? WHERE id = ?";
? ? ? ? ? ? PreparedStatement pstmt = conn.prepareStatement(sql);
? ? ? ? ? ? //動(dòng)態(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)閉語句對(duì)象,數(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ù),獲取要添加的用戶信
? ? ? ? // ? ? ? ?解析請(qǐng)求
? ? ? ? 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ū)動(dòng)程序
? ? ? ? ? ? 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)建語句對(duì)象
? ? ? ? ? ? //靜態(tài)的mysql操作語句
// ? ? ? ? ? ?Statement stmt = conn.createStatement();
// ? ? ? ?4.執(zhí)行sql
? ? ? ? ? ? String sql = "DELETE FROM user_votes WHERE id = ?";
? ? ? ? ? ? PreparedStatement pstmt = conn.prepareStatement(sql);
? ? ? ? ? ? //動(dòng)態(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)閉語句對(duì)象,數(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ù),獲取要添加的用戶信
? ? ? ? // ? ? ? ?解析請(qǐng)求
? ? ? ? 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ū)動(dòng)程序
? ? ? ? ? ? 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)建語句對(duì)象
? ? ? ? ? ? //靜態(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);
? ? ? ? ? ? //動(dòng)態(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)閉語句對(duì)象,數(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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在eclipse導(dǎo)入Java的jar包的方法JDBC(圖文說明)
這篇文章主要介紹了在eclipse導(dǎo)入Java 的jar包的方法 JDBC 圖文說明 ,需要的朋友可以參考下2015-09-09
Java線程池隊(duì)列LinkedBlockingDeque
這篇文章主要為大家介紹了Java線程池隊(duì)列LinkedBlockingDeque示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Java中生產(chǎn)者消費(fèi)者問題總結(jié)
這篇文章主要介紹了Java中生產(chǎn)者消費(fèi)者問題總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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
Spring使用三級(jí)緩存解決循環(huán)依賴的問題
本文給大家分享Spring使用三級(jí)緩存解決循環(huán)依賴的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-06-06

