jsp+servlet搭建在线投票问卷系统

点赞再看,养成习惯
程序帮QQ:1022287044

开发环境准备

  1. jdk1.8
  2. tomcat8
  3. mysql5.7
  4. intellij IDEA

系统采用技术

  1. jsp+ servlet mvc三层架构模式
  2. jdbc
  3. jQuery+ajax
  4. ECharts 4.3.0

项目介绍

用户端

  1. 用户端可以查看问卷列表并参与问卷调查

  2. 查看个人参与的调查报告以及整个问卷情况

管理端

  1. 问卷的新增和维护

  2. 用户信息维护

项目设计

运行效果

  1. 注册

  2. 登录

  3. 添加问卷

  4. 问卷投票列表

  5. 投票详情

  6. 用户列表

  7. 数据库表

  8. 代码结构截图,

关键代码:

  1. 添加问卷:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws  IOException {String questionTitle = request.getParameter("questionTitle"); //问卷标题String qId = request.getParameter("qId"); //问卷idInteger ops =Integer.valueOf(request.getParameter("ops"));//具体几组String doType=request.getParameter("doType"); //操作类型User user=(User)request.getSession().getAttribute(User.SESSIONNAME);SubjectService subjectService=new SubjectServiceImpl();List<Subject> subjects=new ArrayList<>(); //问题列表Question question=new Question();question.setTitle(questionTitle);if("add".equalsIgnoreCase(doType)){ //如果修改添加idif(null!=user){//用户对象不为空,保存值question.setUserId(user.getId());}}else{question.setId(Integer.valueOf(qId));}String title="";for(int i=0;i<ops;i++){int number = Integer.parseInt(request.getParameter("number"+i));String[] os = request.getParameterValues("options"+i);String[] osIds = request.getParameterValues("optionsIds"+i);//选项idtitle=request.getParameter("title"+i);//问题标题String titleId=request.getParameter("titleId"+i);//问题idSubject subject = new Subject();subject.setOrderId(i);subject.setTitle(title);subject.setNumber(number);if(null!=titleId&&!"".equalsIgnoreCase(titleId)){//设置问题idsubject.setId(Integer.valueOf(titleId));}for(int i1=0;i1<os.length;i1++){Option op = new Option();op.setContent(os[i1]);if("modify".equalsIgnoreCase(doType)){ //如果修改添加idop.setId(Integer.valueOf(osIds[i1]));}subject.getOptions().add(op);}try {long startTime=new Date().getTime();subject.setStartTime(startTime);subject.setEndTime(startTime+1*24*60*60*1000);subject.setMaster(user);subjects.add(subject);} catch (ReTryException e) {HttpSession session = request.getSession();session.setAttribute("subject", subject);session.setAttribute("message", e.getMessage());response.sendRedirect(request.getContextPath() + "/m/add");} catch (Exception ex) {throw new RuntimeException(ex);}}try{if("add".equalsIgnoreCase(doType)){//添加subjectService.add(question,subjects);}else{//修改subjectService.modify(question,subjects);}}catch (Exception e){e.printStackTrace();}if(null!=user&&user.getRole().equalsIgnoreCase("user")){response.sendRedirect(request.getContextPath() + "/list?action=myRelease");//用户查看自己的发布}else{response.sendRedirect(request.getContextPath() + "/list?action=index");}}
  1. 修改问卷信息
public void doGet(HttpServletRequest request, HttpServletResponse response) {int id = Integer.parseInt(request.getParameter("id"));try {SubjectService subjectService = new SubjectServiceImpl();QuestionService questionService = new QuestionServiceImpl();SubjectQueryModel subjectQueryModel=new SubjectQueryModel();subjectQueryModel.setQuestionId(id);List<Subject> subject = subjectService.getSubjects(subjectQueryModel);//问题列表subjectQueryModel.setQuestionId(id);Question question=questionService.getQuestion(id);request.setAttribute("subjects", subject);request.setAttribute("ops", subject.size());//多少组request.setAttribute("question", question);request.getRequestDispatcher("/WEB-INF/pages/modify.jsp").forward(request, response);} catch (Exception e) {          throw new RuntimeException(e);}}
  1. 问卷投票
    public void doGet(HttpServletRequest request, HttpServletResponse response)  {try{PrintWriter printWriter = response.getWriter();int subjectId=Integer.parseInt(request.getParameter("subjectId"));String id = request.getParameter("options");String[] ids = id.split(",");if(null==ids){ //未选中任何一项答案printWriter.println(0);return;}else{User user= (User)request.getSession().getAttribute(User.SESSIONNAME);//如果登录用户,判断是否已经投过票if(null!=user){RecordQueryModel recordQueryModel=new RecordQueryModel();recordQueryModel.getUser().setId(user.getId());recordQueryModel.getSubject().setId(subjectId);List<Record> list=recordService.getVotes(recordQueryModel);if(list.size()>0){         //当前用户已经投过票printWriter.println(2);return;}}List<Record> records = new ArrayList<>();for(int i=0;i<ids.length;i++){Record record = new Record();record.getSubject().setId(subjectId);record.getOption().setId(Integer.parseInt(ids[i]));if(null!=user){record.getUser().setId(user.getId());}records.add(record);}try {recordService.vote(records); //保存问卷信息printWriter.println(1);//参与成功return;} catch (ReTryException e) {e.printStackTrace();printWriter.println(3);//参与成功return;}catch(Exception ex){ex.printStackTrace();throw new RuntimeException(ex);}}}    catch (Exception e){e.printStackTrace();}}

根据jdbc直连技术,编写数据库操作工具类,方便存储数据,代码如下:

public class DBUtils {String url = null;        //连接地址String username = null;      //数据库名String password = null;      //数据库密码String driverClass = null;  //连接驱动private static DBUtils db = new DBUtils();/**构建数据库连接参数*/private DBUtils() {try {url = "jdbc:mysql://localhost:3306/shopCartDb?useUnicode=true&characterEncoding=utf8";username = "root";password = "root123";driverClass = "com.mysql.jdbc.Driver";Class.forName(driverClass);} catch (Exception e) {e.printStackTrace();}}/**构建数据库连接对象*/public Connection getConnection(){Connection conn = null;try {conn = DriverManager.getConnection(url, username, password);} catch (Exception e) {e.printStackTrace();}return conn;}public static DBUtils getInstance(){return db;}
}
  1. 投票可视化代码
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();try {int subjectId=Integer.parseInt(request.getParameter("subjectId")); //题目RecordService recordService=new RecordServiceImpl();List<Record> list=recordService.geyVotes(subjectId);if(list.size()>0){session.setAttribute("list", list);session.setAttribute("stitle", list.get(0).getSubject().getTitle());List<String> opDatas=new ArrayList<>();Map<String,Integer> map=new HashMap<>();for(Record r:list){if(null!=r.getOption()){if(!opDatas.contains(r.getOption().getContent())){opDatas.add(r.getOption().getContent());map.put(r.getOption().getContent(),0);}map.put(r.getOption().getContent(),map.get(r.getOption().getContent())+1);}}String opData="";for(String o:opDatas){opData=opData+"'"+o+"',";}if(opData.length()>0){opData=opData.substring(0,opData.length()-1);}session.setAttribute("opData", opData);  //选项String datavn="";for (String key : map.keySet()) {datavn=datavn+"{ value: "+map.get(key)+", name: '"+key+"' },";}if(datavn.length()>0){datavn=datavn.substring(0,datavn.length()-1);}session.setAttribute("datavn", datavn);request.getRequestDispatcher("/WEB-INF/pages/view.jsp").forward(request, response);return;}else{request.setAttribute("exception","暂无问卷结果!");request.getRequestDispatcher("/WEB-INF/pages/500.jsp").forward(request, response);return;}} catch (ReTryException e) {request.getSession().setAttribute("message", e.getMessage());response.sendRedirect(request.getContextPath()+"/m/view");}catch(Exception ex){ex.printStackTrace();}}

时序图

  • mvc流程图
  • 问卷操作时序图
  • 用户注册登录时序图

    原地址认准程序帮:https://blog.csdn.net/code_200/article/details/111478690
    项目源代码:https://download.csdn.net/download/code_200/14040567

jsp+servlet搭建在线投票问卷系统相关推荐

  1. 在线答疑系统源码java_java+jsp+servlet+mysql在线教学答疑系统

    需求分析 基于java+jsp+servlet+mysql技术, 实现一个在线教学答疑系统, 学生可以通过该网站提出问题留言,教师登录后可以进行答疑, 系统管理员可以对答疑系统进行管理 运行环境 ja ...

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

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

  3. JSP实现在线调查问卷系统

    项目编号:BS-PT-014 开发技术: jsp/servlet   前端技术:jquery+layui 开发工具:IDEA/Eclipse 数据库:MYSQL5 功能介绍: 在线调查问卷系统:实现了 ...

  4. 使用Javaweb实现在线调查问卷系统

    作者主页:编程指南针 简介:Java领域优质创作者.CSDN博客专家  Java项目.简历模板.学习资料.面试题库.技术互助 文末获取源码 项目编号:BS-PT-014 开发技术: jsp/servl ...

  5. 基于JSP的在线调查问卷系统

    <基于JSP的在线调查问卷系统>该项目采用技术:jsp +servlet +mysql+jdbc+css+js等相关技术,项目含有源码.课设报告.配套开发软件.软件安装教程.项目发布教程等 ...

  6. 计算机毕业设计、实战项目之 [课设文档]基于JSP的在线调查问卷系统[包运行成功]

    <基于JSP的在线调查问卷系统>该项目采用技术:jsp +servlet +mysql+jdbc+css+js等相关技术,项目含有源码.课设报告.配套开发软件.软件安装教程.项目发布教程等 ...

  7. 基于javaweb+JSP+Servlet学生在线选课系统(管理员、教师、学生)

    基于javaweb+JSP+Servlet学生在线选课系统(管理员.教师.学生) 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练 ...

  8. javaweb基于JSP+Servlet开发在线个人理财系统+论文 课程设计 大作业源码

    基于JSP+Servlet开发在线个人理财系统+论文(大作业/毕业设计) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+SQLServer数据库 运行效果图 ...

  9. java在线商城系统源码jsp+servlet+mysql实现的在线商城系统源码

    今天给大家演示一款由jsp servlet MySQL实现的在线商城系统,本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...

最新文章

  1. Udacity机器人软件工程师课程笔记(四)-样本搜索和找回-基于漫游者号模拟器-决策树
  2. Python中将两个列表(list)数据zip起来
  3. 智源社区AI周刊·第二期:过去一周AI领域的新鲜事
  4. STL常用的排序算法
  5. 【F12一下,看看页面里的第一行】——说说浏览器兼容性模式
  6. maven错误解决:编码GBK的不可映射字符
  7. [Vue warn]: Unknown custom element: <Top> - did you register the component correctly?
  8. 排序算法(四)--谢尔排序(缩小增量排序)
  9. Android TextView设置多样式文本,跑马灯以及霓虹灯效果
  10. OpenCV waitKey 无法正常捕捉方向键(上下左右),总结和解决方案,可以用waitKeyEx...
  11. 一个人学习3D视觉太痛苦了怎么办?
  12. 经济学家德鲁克的三个故事
  13. 三阶魔方还原简单七步公式
  14. 你距离哈佛学霸到底有多远?实力证明,真正的学霸精神不是智商,而是。。。
  15. 快速重命名文件夹,教你怎样在每个文件夹名中添加符号
  16. Python爬虫实例(2)-用BeautifulSoup爬取一个网页上的多张照片(以百度贴吧为例)
  17. SCI论文从入门到精通
  18. IntelliJ IDEA 快捷键及模板Templates设置
  19. 蓝桥杯嵌入式-第九届省赛-电子定时器
  20. Thinkphp 操作提示 ThinkPHP 3.2.0 { Fast Simple OOP PHP Framework } -- [ WE CAN DO IT JUST THINK ]

热门文章

  1. ningx突然403权限拒绝解决方案
  2. 面试准备:逻辑智力题
  3. 图片怎么转文字?掌握这个实用方法,一键搞定
  4. bzoj2298 Problem a
  5. ES32中OTA空中升级
  6. 图表说话之解析excel商务饼图做法
  7. Python 获取文件后缀详解
  8. 【php图片上传在网页显示】
  9. 数据库delete语句菜鸟_MySQL视图
  10. 一步步解密微商城系统开发流程