目的

帮她完成JavaWeb课程设计,也做为练手的小项目;

功能

1、可以实现在个人登陆,在线投票,票数统计的功能;
2、规定每个投票者每天只能投一票,并要求登录成功后才可以投票;
####分块
1、Login类:实现登录
2、Vote类:实现投票
3、Vote_Filter类:过滤器类,控制登录和刷票
4、UserService类:Service类用来调用UserDao操作数据库
5、UserDao类:操作数据库类
6、Voter类:投票者模型类
7、User类: 被投者模型类
8、DBUtils类:Jdbc连接MySQL工具类

数据库(表)

投票者信息表
字段 数据类型 说明
id int 序号,主键
username varchar 用户名
password varchar 密码
record varchar 最后一天投票时间
被投者信息表
字段 数据类型 说明
id int 序号,主键
name varchar 用户名
count int 票数

Login类

package cn.sy.servlet;
import java.io.IOException;
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 cn.sy.domain.Voter;
import cn.sy.service.UserService;@WebServlet(name = "LoginServlet", urlPatterns = { "/login" })
public class Login extends HttpServlet {@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1、得到登录名和密码String username = request.getParameter("username");// 得到用户输入的登录名String password = request.getParameter("password");// 得到用户输入的密码// 2、将信息封装Voter voter = new Voter();voter.setUsername(username);voter.setPassword(password);UserService service = new UserService();try {Voter existVoter = service.login(voter);// 3、调用service中登录方法if (existVoter == null) {// 代表用户名或密码错误,存储错误信息在request域中,请求转发到login.jsprequest.setAttribute("message", "登录失败:用户名或密码错误!");// 登录失败,请求转发到登录页面显示错误信息messagerequest.getRequestDispatcher("/login.jsp").forward(request,response);return;} else {// 登录成功// 存到session里request.getSession().setAttribute("user",existVoter.getUsername());// 重定向到成功页面response.sendRedirect(request.getContextPath() + "/success.jsp");return;}} catch (Exception e) {e.printStackTrace();}}
}

login.jsp登录页面

<%@ page language="java" import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><meta name="description" content=""><meta name="author" content=""><title>登录</title><link href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css" rel="stylesheet"><script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script><link rel="stylesheet" type="text/css" href="login.css"></head><body><div class="container"><div class="blog-post form-signin">${message}<br><form action ="${pageContext.request.contextPath}/login" method="post"><h2 class="form-signin-heading">请登录</h2><label for="username" class="sr-only">user</label><input type="input" id="inputEmail" class="form-control" name="username" placeholder="用户名" required autofocus><label for="password" class="sr-only">密码</label><input type="password" id="inputPassword" class="form-control" name="password" placeholder="密码" required><div class="checkbox"><label><input type="checkbox" value="remember-me"> 记住密码?</label></div><button class="btn btn-lg btn-primary btn-block" type="submit">登 录</button></form></div></div><footer class="blog-footer"><p>sy的投票系统 </p></footer></body>
</html>

success.jsp登录成功页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>登录成功!</title><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><meta name="description" content=""><meta name="author" content=""><link href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css" rel="stylesheet"><script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script><link rel="stylesheet" type="text/css" href="success.css"></head><body><div class="site-wrapper"><div class="site-wrapper-inner"><div class="cover-container"><div class="masthead clearfix"><div class="inner"><h3 class="masthead-brand">${user}</h3><nav><ul class="nav masthead-nav"><li class="active"><a href="#">首页</a></li><li><a href="#">关于</a></li><li><a href="/Voting_System/login.jsp">退出</a></li></ul></nav></div></div><div class="inner cover"><!--用EL语句调用出存到session里的usename  --><h1 class="cover-heading">欢迎${user}来投票</h1><p class="lead"></p><p class="lead"><a href="vote.jsp" class="btn btn-lg btn-default">点击投票</a></p></div><div class="mastfoot"><div class="inner"><p>sy的投票系统 </p></div></div></div></div></div></body>
</html>

Vote类

package cn.sy.servlet;import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;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 cn.sy.domain.User;
import cn.sy.service.UserService;@WebServlet(name = "VoteServlet", urlPatterns = { "/vote" })
public class Vote extends HttpServlet {Date currentTime;SimpleDateFormat formatter;String dateString = null;@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {User exsitUser = new User();String name = request.getParameter("username");// System.out.println(name);User user = new User();user.setName(name);UserService service = new UserService();currentTime = new Date();formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化当前时间dateString = formatter.format(currentTime);// 转成字符串//从session域中得到当前投票者String username = (String) request.getSession().getAttribute("user");//System.out.println(username);try {//调用修改记录方法,修改数据库最后投票时间service.changeRecord(username,dateString);} catch (SQLException e2) {e2.printStackTrace();}// 调用Service中的查询方法try {//查询当前票数exsitUser = service.findCount(user);// System.out.println(exsitUser.getCount());} catch (SQLException e) {e.printStackTrace();}if (exsitUser != null && name.equals("zhaoliu")) {int count = exsitUser.getCount();// 得到被投人当前票数count += 1;// 票数加1try {service.addCount(name, count);} catch (SQLException e) {e.printStackTrace();}request.setAttribute("count", "投票成功:" + name + "当前票数为" + count);//投票成功请求转发到投票页面显示投票成功信息request.getRequestDispatcher("/vote.jsp").forward(request, response);return;} else if (exsitUser != null && name.equals("wangwu")) {int count = exsitUser.getCount();// 得到被投人当前票数count += 1;// 票数加1try {service.addCount(name, count);} catch (SQLException e) {e.printStackTrace();}request.setAttribute("count", "投票成功:" + name + "当前票数为" + count);request.getRequestDispatcher("/vote.jsp").forward(request, response);return;} else {request.setAttribute("message", "请选中你要投的人!");request.getRequestDispatcher("/vote.jsp").forward(request, response);return;}}}

vote.jsp投票页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<meta name="description" content="">
<meta name="author" content="">
<title>投票</title>
<linkhref="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css"rel="stylesheet">
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<scriptsrc="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="login.css">
</head>
<body><!-- 主体 --><div class="container"><div class="blog-post form-signin">${message}<br><form action="${pageContext.request.contextPath}/vote" method="get"><h2 class="form-signin-heading">欢迎来投票</h2>${count} <label for="username" class="sr-only">user</label><div class="radio"><label> <input type="radio" name="username"id="optionsRadios1" value="wangwu" checked> 王五</label></div><div class="radio"><label> <input type="radio" name="username"id="optionsRadios2" value="zhaoliu"> 赵六</label></div><p><input type="submit" value="投ta一票" class="btn btn-success"></p><label for="password" class="sr-only">密码</label></form></div></div><!-- 页脚 --><footer class="blog-footer"><p>sy的投票系统</p></footer>
</body>
</html>

Vote_Filter类

package cn.sy.filter;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.sy.service.UserService;
import cn.sy.domain.Voter;@WebFilter(filterName = "VoteFilter", urlPatterns = { "/*" })
public class Vote_Filter implements Filter {Date currentTime;SimpleDateFormat formatter;String dateString = null;@Overridepublic void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {// 1.强制转换HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;// 2.操作// 判断当前资源是否需要权限控制.String uri = request.getRequestURI();String contextPath = request.getContextPath();String path = uri.substring(contextPath.length());if (path.equals("/vote") || path.equals("/success")) {String recordTime = null;// 判断用户是否登录了.String voter = (String) request.getSession().getAttribute("user");UserService service = new UserService();if (voter == null) {request.setAttribute("message", "对不起,你还没用登录,请先登录!");request.getRequestDispatcher("/login.jsp").forward(request,response);}try {              // 调用查看当前数据库记录的投票者最后一次投票时间Voter voter2 = service.findRecord(voter);recordTime = voter2.getRecord();// 得到时间currentTime = new Date();formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化当前时间dateString = formatter.format(currentTime);// 将服务器当前时间转成字符串try {Date one = formatter.parse(dateString);Date two = formatter.parse(recordTime);long time1 = one.getTime();long time2 = two.getTime();long c = time1 - time2;if(c<24*60*60){request.setAttribute("message", "对不起,您已经投过票了,明天再来吧!");request.getRequestDispatcher("/vote.jsp").forward(request,response);}//System.out.println(c);} catch (ParseException e1) {//e1.printStackTrace();System.out.println(voter+"想重复投票!");}// System.out.println("最后一次投票时间为:"+recordTime);} catch (SQLException e) {e.printStackTrace();}}// 3.放行chain.doFilter(request, response);}@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}

UserService类

package cn.sy.service;import java.sql.SQLException;import cn.sy.dao.UserDao;
import cn.sy.domain.User;
import cn.sy.domain.Voter;public class UserService {public Voter login(Voter voter) throws SQLException {return new UserDao().login(voter);}public User findCount(User user) throws SQLException {return new UserDao().findCount(user);}public void addCount(String name,int count) throws SQLException {new UserDao().addCount(name,count);}public void changeRecord(String username, String dateString) throws SQLException {new UserDao().changeRecord(username, dateString);}public Voter findRecord(String voter) throws SQLException {return new UserDao().findRecord(voter);}}

UserDao类

package cn.sy.dao;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;import cn.sy.domain.User;
import cn.sy.domain.Voter;
import cn.sy.utils.DBUtils;public class UserDao {// 登录public Voter login(Voter voter) throws SQLException {String sql = "select * from voter_info where username=? and password=?";// 使用c3p0数据库连接池,使用封装好的DBUtils获取数据库连接QueryRunner runner = new QueryRunner(DBUtils.getDataSource());// BeanHandler<User>(User.class)将结果集中的第一行数据封装到一个对应的JavaBean实例中// 执行上面写好的sql语句return runner.query(sql, new BeanHandler<Voter>(Voter.class),voter.getUsername(), voter.getPassword());}public User findCount(User user) throws SQLException {String sql = "select count from person_info where name=?";// 使用c3p0数据库连接池,使用封装好的DBUtils获取数据库连接QueryRunner runner = new QueryRunner(DBUtils.getDataSource());// BeanHandler<User>(User.class)将结果集中的第一行数据封装到一个对应的JavaBean实例中// 执行上面写好的sql语句return runner.query(sql, new BeanHandler<User>(User.class),user.getName());}public void addCount(String name, int count) throws SQLException {String sql = "update person_info set count=" + count + " where name=?";// 使用c3p0数据库连接池,使用封装好的DBUtils获取数据库连接QueryRunner runner = new QueryRunner(DBUtils.getDataSource());// BeanHandler<User>(User.class)将结果集中的第一行数据封装到一个对应的JavaBean实例中// 执行上面写好的sql语句runner.update(sql, name);}public void changeRecord(String username, String dateString)throws SQLException {String sql = "update voter_info set record=? where username=?";// 使用c3p0数据库连接池,使用封装好的DBUtils获取数据库连接QueryRunner runner = new QueryRunner(DBUtils.getDataSource());// BeanHandler<User>(User.class)将结果集中的第一行数据封装到一个对应的JavaBean实例中// 执行上面写好的sql语句runner.update(sql, dateString,username);}public Voter findRecord(String voter) throws SQLException {String sql = "select * from voter_info where username=?";QueryRunner runner = new QueryRunner(DBUtils.getDataSource());return runner.query(sql, new BeanHandler<Voter>(Voter.class), voter);}
}

效果图

注意

欢迎加入Information Technology QQ群:567346857

JavaWeb投票系统相关推荐

  1. javaweb 投票系统

    最近做了一个简单的投票系统,来分享一下 1 先来看一下目录 2 效果图是这样的 首页,对一次演讲进行简单的评分 如果选项不完整,或者是没有选项,就会提示选项不完整,并且点击按钮进入选项页面 如果选项完 ...

  2. javaweb简单小项目-投票系统

    这次给大家带来一个课堂基础作业,简单的javaweb投票系统. 当然也设计了添加投票人的接口,只是list页面没有直接导航过去. 如页面显示,可以增加和减少相应的票数.同时id是利用数据库该字段作为主 ...

  3. 基于JavaWeb的简易投票系统

    基于JavaWeb的简易投票系统 项目文件 数据库文件 1.工具 IDEA JDK1.8 Tomcat8.5 MySQL 2.MySQL数据库 subjects表 /*Navicat Premium ...

  4. 简单实用的JavaWeb微投票系统

    简单实用的JavaWeb微投票系统 目的 帮她完成JavaWeb课程设计,也做为练手的小项目: 功能 1.可以实现在个人登陆,在线投票,票数统计的功能: 2.规定每个投票者每天只能投一票,并要求登录成 ...

  5. java 在线投票_基于javaweb的在线投票系统

    [实例简介] 基于javaweb的在线投票系统,使用SSH框架.用户注册登录后,可以发起投票,管理投票,参与投票,查看投票比例和结果等. [实例截图] [核心代码] Vote └── Vote ├── ...

  6. SSM框架基于JavaWeb在线投票系统的设计与实现源码

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 SSM框架基于JavaWeb在线投票系统的设计与实现源码 视频效果 SSM框架基 ...

  7. 投票器JAVA的具体框架是_java毕业设计_springboot框架的投票系统

    今天介绍一个java毕设题目, 题目内容为springboot框架的投票系统, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp+springb ...

  8. java-net-php-python-67ssm在线投票系统计算机毕业设计程序

    java-net-php-python-67ssm在线投票系统计算机毕业设计程序 java-net-php-python-67ssm在线投票系统计算机毕业设计程序 本源码技术栈: 项目架构:B/S架构 ...

  9. Django快速开发之投票系统

    参考官网文档,创建投票系统. ================ Windows  7/10 Python 2.7.10 Django 1.8.2 ================ 1.创建项目(mys ...

最新文章

  1. 最新数据:一图看清全球393家独角兽公司
  2. Python入门100题 | 第074题
  3. MaxCompute 多租户数据安全体系
  4. pycharm vim 插件IdeaVIM
  5. 以管理员权限运行程序需注意
  6. matlab 文件列表,如何從Matlab寫入多個列表到同一個excel文件?
  7. (转)Android调试运行时错误之Process XXX terminated by signal (11)
  8. 化学能推进永远无法实现外星旅行
  9. 课程设计C语言歌手,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  10. Java程序员开发软件(工具)清单
  11. Programer or Coder?
  12. web请求报出 “超过了最大请求长度”
  13. 《图解TCP/IP》——第一章 网络基础知识
  14. mqtt简介及在web端的应用(接入阿里iot)
  15. 小新吃上黑苹果13.1
  16. elementui级联选择器
  17. 微信小程序各错误码及原因自用表
  18. 关于.Net MAUI
  19. Arduino 超级省电之休眠模式用1节18650电池工作17年
  20. 剑三游戏总是显示服务器繁忙,剑网三缘起:终究低估了老玩家的热情,服务器被挤爆...

热门文章

  1. 快手__NS_sig3 sig3算法分析
  2. 南京大学与东南大学的计算机,南京大学和东南大学对比分析报告
  3. win7无法打开设备和打印机解决
  4. Win10下IIS配置
  5. 告诉你究竟DevOps是什么?
  6. 1500 孤立的诸地区 穆斯林 西方 儒家
  7. 解决 VSCode Ctrl Shift P 快捷键不可用
  8. 淘宝API开发系列---阿里.聚石塔.开放平台的使用5
  9. 为什么单个元素的元组要加上逗号?
  10. 【新书-赛博空间学与赛博学】-序言-元宇宙的理论根基