本篇用投票系统对前面的内容进行复习和整理。

一.需求分析

制作一个投票系统,让学生给自己喜欢的老师投票。该系统由一个界面组成,界面上有一个表格,表格有四列,分别为学号,姓名,得票数。得票数显示红色,并显示票数。表格的第四列是投票链接。点击链接,票数加1。

二.模块实现

设计两个JSP,一个JSP负责显示投票界面,一个JSP负责处理投票的请求,将对应的老师的得票数加1。工作完毕后,再跳转回第一个JSP页面。

页面 作用
display.jsp 1.连接数据库 2.查询教师编号,姓名,得票数 3.显示教师编号、姓名、得票数、投票链接
vote.jsp 1.连接数据库 2.获取投票链接传来的编号 3.将教师编号对应的得票数加1 3.跳回display.jsp

三.开发过程

3.1准备数据

数据库为MySql,数据库名为school,用户名为root,密码为123456。
创建表,如下图:

初始化一些数据,如下图:

3.2如何显示红色进度条

实际上红色进度条是一个红色的图片,显示时让高度不变,让宽度和得票数成正比就可以了。准备一个红色图片:bar.jpg

3.3编写display.jsp

new 一个Web项目:Prj06。将MySQL数据库驱动导入到项目中,将bar.jpg复制到WebRoot下的img目录(该目录事先创建)。代码如下:
display.jsp

<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
<html><head><title>display</title></head><body><table align = "center" ><!-- align是内容的位置 --><caption>欢迎给老师投票</caption><!-- 表格的标题,通常紧跟在table后面 --><tr bgcolor = "yellow"><td>编号</td><td>姓名</td><td>得票数</td><td>投票</td></tr><%Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:8080/school?useSSL=false&serverTimeZone=GMT", "root", "123456");Statement stat = conn.createStatement();String sql = "select * from t_vote";//查询数据库语句ResultSet rs = stat.executeQuery(sql);//执行查询while(rs.next()){String teacherno = rs.getString("teacherno");String teachername = rs.getString("teachername");int vote = rs.getInt("vote");%>   <tr bgcolor = "pink"><td><%= teacherno %></td><td><%= teachername %></td><td><img src = "img/bar.jpg" width = "<%= vote %>" height = "10"><%= vote %></td><td><a href = "vote.jsp?teacherno=<%= teacherno %>">投票</a></td></tr><%}stat.close();conn.close();%></table></body>
</html>

在上述代码中:

<img src = "img/bar.jpg" width = "<%= vote %>" height = "10">

显示进度条,固定高度为10,宽度和得票数相等。

3.4编写vote.jsp

vote.jsp

<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
<html><head><title>vote</title></head><body><%String teacherno = request.getParameter("teacherno");Class.forName("com.mysql.cj.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:8080/school?useSSL=false&serverTimezone=GMT", "root", "123456");String sql = "update t_vote set vote = vote + 1 where teacherno = ?";PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1,teacherno);ps.executeUpdate();ps.close();conn.close();%><jsp:forward page = "display.jsp"></jsp:forward></body>
</html>

将项目部署到服务器。 在浏览器输入http://localhost:8080/Prj06/display.jsp ,如下图:

3.5存在的问题

两个jsp文件都存在大量访问数据库的代码,

Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?useSSL=false&serverTimezone=GMT","root", "123456");

3.6如何封装数据库

对于代码重复,常见的解决方法是将重复的代码写入函数。而函数可以写在jsp声明里面,如下:
db.inc

<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
<%!public Connection getConnection() throws Exception{Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?useSSL=false&serverTimezone=GMT","root", "123456");return conn;}
%>

提醒: 如果不是直接访问页面,而是仅仅定义一些功能,文件扩展名可以任意。该函数一定要定义在jsp声明中。

3.7如何重用代码

经过处理的display.jsp的代码如下:


<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
<%@ include file = "db.inc" %>
<html><head><title>display</title></head><body><table align = "center" ><!-- align是内容的位置 --><caption>欢迎给老师投票</caption><!-- 表格的标题,通常紧跟在table后面 --><tr bgcolor = "yellow"><td>编号</td><td>姓名</td><td>得票数</td><td>投票</td></tr><%Connection conn =getConnection();Statement stat = conn.createStatement();String sql = "select * from t_vote";//查询数据库语句ResultSet rs = stat.executeQuery(sql);//执行查询while(rs.next()){String teacherno = rs.getString("teacherno");String teachername = rs.getString("teachername");int vote = rs.getInt("vote");%>   <tr bgcolor = "pink"><td><%= teacherno %></td><td><%= teachername %></td><td><img src = "img/bar.jpg" width = "<%= vote %>" height = "10"><%= vote %></td><td><a href = "vote.jsp?teacherno=<%= teacherno %>">投票</a></td></tr><%}stat.close();conn.close();%></table></body>
</html>

上述代码中的

Connection conn = getConnection();

表示调用导入的getConnection()方法

摘自《Java Web开发与应用》,主编郭克华,副主编宋虹,清华大学出版社。

欢迎小伙伴来评论啊~~

重新学习JSP之五——投票系统相关推荐

  1. 用JSP在线投票系统代码分享

    用JSP在线投票系统代码分享,样式写的不是太好,具体根据需求来设计,希望大家不要太介意. 以下是html/css部分 <style type="text/css">bo ...

  2. 基于Jsp、Java、数据库、HTML实现网上投票系统(含文档和代码)Jsp课程设计

    目录 摘要 第1章 课程设计内容及要求 第2章 系统分析 2.1 系统简介 2.2 系统功能 第3章 系统设计 3.1 开发工具简介 3.2 总体功能模块设计 第4章 系统实现 4.1 数据库实现 4 ...

  3. java vote_vote投票系统java jsp mysql

    [实例简介] 投票系统,用Java,jsp,数据库是mysql [实例截图] [核心代码] vote └── vote ├── log │   ├── Logfile.1 │   ├── Snapsh ...

  4. JSP实现在线投票系统

    系统介绍 一个网站的发展壮大靠的就是众多用户的支持,一个好的网站一定要注意与用户之间信息的交流,及时得到用户反馈信息,并及时改进,这也是一个网站持续发展的基础.也正是由于该原因,网络上各式各样的投票系 ...

  5. jsp实现一个简单的投票系统

    投票系统 实现结果图 (1)JDBC数据库连接工具类conn.java package com.gx.bean;import java.sql.*;public class conn {public ...

  6. java毕业设计——基于java+J2EE+jsp的企业电子投票系统设计与实现(毕业论文+程序源码)——电子投票系统

    基于java+J2EE+jsp的企业电子投票系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2EE+jsp的企业电子投票系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  7. JSP+Servlet java在线投票系统

    JSP+Servlet 在线投票系统关于开发环境 1. jdk1.6 2. myeclipse10 3. tomcat6 4. mysql utf-8 使用技术 1. ssh 框架 2. log使用的 ...

  8. 基于Java+JSP+MySQL基于SSM的在线投票系统-计算机毕业设计

    项目介绍 随着社会的发展,人们在处理一些问题的时候不同意见越来越多,这源于人们对思想的解放和对社会的认识.所以在处理同一问题上,为了征求不同人的意见在线投票系统诞生了. 基于SSM的在线投票系统以钦州 ...

  9. JSP+JDBC+XML+mysql实现企业电子投票系统

    导读:企业电子投票系统主要用来统计网站用户对某个主题或热门话题的意见.决策者通过这些统计数据做出相应的决策.企业电子投票系统是一般网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议.他可 ...

最新文章

  1. 每个公司都会用的短 URL 服务,怎么设计与实现?
  2. EBS常用表_Dictionary
  3. jQuery on()方法绑定动态元素的点击事件无效
  4. 几位无人驾驶领域的杰出科学家
  5. Qt学习笔记-服务器端获取UDP封包源IP地址
  6. 信息学奥赛C++语言:优惠购物
  7. Github简单使用
  8. 问题:get_params() missing 1 required positional argument: 'self' 之解决
  9. Typora一次编辑,知乎、CSDN等多平台快速发布:Typora + PicGo + 图床
  10. [C#] 動的にアセンブリをロードする
  11. 计算机广告制作专业老师,计算机广告制作专业专业院校诚信服务_招生梁老师...
  12. 服务器是怎么工作的?(二)——arp工作原理详细解析
  13. [转载] Python版简易计算器的实现
  14. expect免互交 常用编辑文本
  15. 三个数比大小c语言_C语言必学知识点【结构体】用法很多,坑也很多!
  16. mmap内存映射用法总结
  17. C51单片机学习笔记——秒表
  18. Matlab高尔顿板仿真模拟实验
  19. C语言程序设计摘抄笔记1
  20. 如何打造团队的代码风格统一以及开发效率的提升

热门文章

  1. pyinstaller打包使用
  2. RestTemplateConfig
  3. 如何看懂k线图:K线详细分析图解
  4. 使用计算机能佩戴老花镜,近视镜?远视镜?还是老花镜?——揭秘渐变多焦点眼镜的奥秘...
  5. Electron中主进程和渲染进程之间的通信
  6. shawl.qiu Javascript 前景色背景色调色类 / BgColorScheme v1.0
  7. Java多态 父类引用指向子类对象
  8. 【论文阅读】SISR综述:From Beginner to Master: A Survey for Deep Learning-based Single-Image Super-Resolution
  9. 如何制作动态PPT,像播放电影一样,同时怎么插入音乐
  10. 洛谷-运输(P2094)