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

這次給大家?guī)?lái)一個(gè)課堂基礎(chǔ)作業(yè),簡(jiǎn)單的javaweb投票系統(tǒng)。
當(dāng)然也設(shè)計(jì)了添加投票人的接口,只是list頁(yè)面沒(méi)有直接導(dǎo)航過(guò)去。
如頁(yè)面顯示,可以增加和減少相應(yīng)的票數(shù)。同時(shí)id是利用數(shù)據(jù)庫(kù)該字段作為主鍵自增的。 name 和頭像都是上傳的,由mysql數(shù)據(jù)庫(kù)存儲(chǔ)照片名然后再自動(dòng)尋找到。票數(shù)是直接由user_votes存儲(chǔ)使用。
接下來(lái)帶來(lái)關(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ù)庫(kù),獲取所有的用戶信息
? ? ? ? //創(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ù)庫(kù)連接
? ? ? ? ? ? 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)建語(yǔ)句對(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)閉語(yǔ)句對(duì)象,數(shù)據(jù)庫(kù)連接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("暫無(wú)用戶");
? ? ? ? }
? ? ? ? out.println();
? ? ? ? out.println("</body></html>
? ? }?
}這一段是用于list頁(yè)面的展示代碼。
同時(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ù)庫(kù)的操作
? ? ? ? try {
? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動(dòng)程序
? ? ? ? ? ? String driver = "com.mysql.cj.jdbc.Driver";
? ? ? ? ? ? Class.forName(driver).newInstance();
// ? ? ? ?2.創(chuàng)建數(shù)據(jù)庫(kù)連接
? ? ? ? ? ? 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)建語(yǔ)句對(duì)象
? ? ? ? ? ? //靜態(tài)的mysql操作語(yǔ)句
// ? ? ? ? ? ?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)閉語(yǔ)句對(duì)象,數(shù)據(jù)庫(kù)連接
? ? ? ? ? ? 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ù)庫(kù)的操作
? ? ? ? try {
? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動(dòng)程序
? ? ? ? ? ? String driver = "com.mysql.cj.jdbc.Driver";
? ? ? ? ? ? Class.forName(driver).newInstance();
// ? ? ? ?2.創(chuàng)建數(shù)據(jù)庫(kù)連接
? ? ? ? ? ? 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)建語(yǔ)句對(duì)象
? ? ? ? ? ? //靜態(tài)的mysql操作語(yǔ)句
// ? ? ? ? ? ?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)閉語(yǔ)句對(duì)象,數(shù)據(jù)庫(kù)連接
? ? ? ? ? ? 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ù)庫(kù)的操作
? ? ? ? try {
? ? ? ? ? ? // ? ? ? ?1.加載驅(qū)動(dòng)程序
? ? ? ? ? ? String driver = "com.mysql.cj.jdbc.Driver";
? ? ? ? ? ? Class.forName(driver).newInstance();
// ? ? ? ?2.創(chuàng)建數(shù)據(jù)庫(kù)連接
? ? ? ? ? ? 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)建語(yǔ)句對(duì)象
? ? ? ? ? ? //靜態(tài)的mysql操作語(yǔ)句
// ? ? ? ? ? ?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)閉語(yǔ)句對(duì)象,數(shù)據(jù)庫(kù)連接
? ? ? ? ? ? pstmt.clearBatch();
? ? ? ? ? ? conn.close();
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? System.out.println("添加用戶失敗"+e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? };
? ? ? ? //跳轉(zhuǎn)到用戶列表界面
? ? ? ? resp.sendRedirect("list");
? ? }
}該項(xiàng)目沒(méi)有使用mvc項(xiàng)目結(jié)構(gòu),就是因?yàn)楸容^簡(jiǎn)單,因此如果有剛剛學(xué)習(xí)到這里的可以來(lái)看看,參考學(xué)習(xí)

附上項(xiàng)目目錄圖,其他的就沒(méi)有過(guò)多的去介紹了,畢竟比較簡(jiǎn)單。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis plus 的動(dòng)態(tài)表名的配置詳解
這篇文章主要介紹了mybatis plus 的動(dòng)態(tài)表名的配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
SpringBoot?整合?Quartz?定時(shí)任務(wù)框架詳解
這篇文章主要介紹了SpringBoot整合Quartz定時(shí)任務(wù)框架詳解,Quartz是一個(gè)完全由Java編寫的開源作業(yè)調(diào)度框架,為在Java應(yīng)用程序中進(jìn)行作業(yè)調(diào)度提供了簡(jiǎn)單卻強(qiáng)大的機(jī)制2022-08-08
Java 下數(shù)據(jù)業(yè)務(wù)邏輯開發(fā)技術(shù) JOOQ 和 SPL
這篇文章主要為大家介紹了Java 下數(shù)據(jù)業(yè)務(wù)邏輯開發(fā)技術(shù) JOOQ 和 SPL詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Java多線程之ReentrantReadWriteLock源碼解析
這篇文章主要介紹了Java多線程之ReentrantReadWriteLock源碼解析,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-05-05
java中快速創(chuàng)建帶初始值的List和Map實(shí)例
下面小編就為大家?guī)?lái)一篇java中快速創(chuàng)建帶初始值的List和Map實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
SpringBoot整合JPA框架實(shí)現(xiàn)過(guò)程講解
在開發(fā)中,我們通常會(huì)對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行操作,Sprirng?Boot對(duì)關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)的訪問(wèn)操作都提供了非常好的整合支持2022-12-12
idea創(chuàng)建項(xiàng)目沒(méi)有webapp文件夾的解決方法
本文主要介紹了idea創(chuàng)建項(xiàng)目沒(méi)有webapp文件夾的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05

