SpringMVC+Mybatis写调查问卷管理系统

蔚落 2022-05-25 09:37 297阅读 0赞

最近一直想找点事情做,前几个星期马原老师说要做一份社会调查需要用到调查问卷,然后基本都是网上直接用现成的网站直接做的,我在想自己是不是也能做一个类似简单的管理系统呢。。然后一做就做了半个月,前几天总算是做好了,感觉要是自己勤快一点可能几天就能写好吧,下面是我在写这个调查系统的全部过程和遇到的问题解决方法。

首先是在脑海中构建整个系统的模型,我是喜欢根据这个模型先写好数据库的脚本,然后再写用到的POJO,和数据库相连接的sql类和mybatis的配置文件,最后将这些东西在jsp页面中拼接起来,SpringMVC算是一个粘合剂将这些东西很好的组合在一起。

我的构想:

首先和其他系统一样,应该先有一个账号以便起到多个人使用时使数据分开标识的作用,那么就应该有登录界面和注册账号页面。。这个很简单,随便搞搞就好了。

那么来到管理者的主界面,应该有创建问卷,查看/进行问卷调查,和查看问卷调查结果的功能,到这里,这个系统的大致模型已经有了。

再细想,数据库的数据表,首先应该有存放用户账号密码的表,叫user吧,其次应该有一张存放题目信息的表,叫inf吧,然后就是应该再有一张存放对应题目选项的表,叫det,然后每张表里面的数据就按照意思建就好了。

然后对应每张表,POJO类应该也有三个。。为了偷懒我直接都叫了表的名字。

下面是我mysql建表的脚本代码:

  1. create database users;
  2. use users;
  3. create table user(
  4. username varchar(10) primary key,
  5. pwd varchar(20)
  6. );
  7. create table inf(
  8. num int,
  9. username varchar(10),
  10. des varchar(200),
  11. foreign key(username) references user(username)
  12. );
  13. create table det(
  14. num int,
  15. id int,
  16. opt varchar(30),
  17. username varchar(10),
  18. value int default '0',
  19. foreign key(username) references user(username)
  20. );

我的num是存题目的编号,id是存选项的编号。

然后就可以开始写POJO的java代码了,还有相应的sql语句,由于整个工程涉及的代码太多,就不一一放上来了,就挑一些重要的放,然后整个工程代码附上github的网址:https://github.com/iunique/IdeaProject。

项目基本骨架:

20180511213614966

简介:

Dao放着和数据库相连接的代码,entity里放这POJO类,handles里面放的是页面控制器,用于处理页面映射以及起到servlet的作用,处理请求,跳转页面,config.xml放mybatis的基本配置文件,tab.xml放着sql语句,页面我用到的很多,登录界面login,注册界面register,还有相应的登录和注册判断跳转页面,然后index是用户主界面,对应着三个功能的界面,建调查问卷,进行问卷调查,查看调查文件结果。

先记录一下过程中遇到的几大问题:

1.中文乱码问题

2.WEB-INF目录下限制访问问题

3.算法问题,也就是如何用代码实现整个系统

解决方法:

1.中文乱码算是困扰我最久的问题,因为需要改的地方有很多,mysql数据库存储时的编码,解码设置,jsp页面编码解码的设置,以及mybatis配置文件中编码设置,在java代码处理数据时的编码解码设置。。只有全部搞好了才能实现中文在页面中的正常读取和呈现,少一步都不行,因为平时不用中文读取和呈现,基本没发现还有这么大的一个问题。。然后为此搞了一天最后写了博客:https://blog.csdn.net/qq_37497322/article/details/80034487

2.出于安全性考虑,jsp文件最好放在限制访问的WEB-INF目录下,

不用springMVC解决方法:https://blog.csdn.net/qq_37497322/article/details/80027464

一开始我是没用springMVC的,全部是用上面的方法+大量的web.xml配置映射+十几个servlet。。。代码量大大增加而且很复杂,最后我还是屈服了,花了一两天把代码改成了springMVC版的,映射文件和servlet全交给Controller处理。。才体会到了springMVC的强大,还有自带的表单自动填补POJO类的功能。。。简直不要太强

3.这个问题感觉是长期积累的代码感觉。。。想了一会实现方法,就写出来了,这东西感觉不好表达,或许是一年多的acm经验带来的加成吧,下面贴代码

首先是我的config.xml,也就是mybatis的配置文件,需要注意连接的时候加上字符集,url处最后加上

  1. useUnicode=true&characterEncoding=UTF-8

的字样可以解决写入数据库时的编码问题:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- 和Spring整合后environment配置都会被干掉 -->
  7. <environments default="development">
  8. <environment id="development">
  9. <!-- 使用jdbc事务管理,目前由mybatis来管理 -->
  10. <transactionManager type="JDBC" />
  11. <!-- 数据库连接池,目前由mybatis来管理 -->
  12. <dataSource type="POOLED"><!--有关于mysql数据库的各种信息-->
  13. <property name="driver" value="com.mysql.jdbc.Driver" />
  14. <property name="url" value="jdbc:mysql://localhost:3306/users?useUnicode=true&characterEncoding=UTF-8"/>
  15. <property name="username" value="root" />
  16. <property name="password" value="123456"/>
  17. </dataSource>
  18. </environment>
  19. </environments>
  20. <mappers>
  21. <!--将操作配置文件User.xml系添加进mapper-->
  22. <mapper resource="tab.xml" />
  23. </mappers>
  24. </configuration>

然后是tab.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="dom">
  6. <resultMap type="entity.det" id="det">
  7. <result column="num" property="num" javaType="int"/>
  8. <result column="id" property="id" javaType="int"/>
  9. <result column="opt" property="opt" javaType="string"/>
  10. <result column="value" property="value" javaType="int"/>
  11. <result column="username" property="username" javaType="string"/>
  12. </resultMap>
  13. <resultMap type="entity.user" id="user">
  14. <result column="username" property="username" javaType="string"/>
  15. <result column="pwd" property="pwd" javaType="string"/>
  16. </resultMap>
  17. <resultMap type="entity.inf" id="inf">
  18. <result column="num" property="num" javaType="int"/>
  19. <result column="username" property="username" javaType="string"/>
  20. <result column="des" property="des" javaType="string"/>
  21. </resultMap>
  22. <!--查询用户是否存在-->
  23. <select id="findUser" parameterType="java.lang.String" resultType="java.lang.Integer">
  24. select COUNT(*) from user where username = '${value}'
  25. </select>
  26. <!--返回用户密码-->
  27. <select id="findPwd" parameterType="java.lang.String" resultType="java.lang.String">
  28. select pwd from user where username = '${value}'
  29. </select>
  30. <!--插入一个用户-->
  31. <insert id="insertUser" parameterType="entity.user">
  32. insert into user values(#{username},#{pwd})
  33. </insert>
  34. <!-- 通过id查询题目描述 -->
  35. <select id="findDes" parameterType="java.lang.String" resultMap="inf">
  36. select * from inf where username = '${value}' order by num
  37. </select>
  38. <!--通过num查询响应题目-->
  39. <select id="findOneDes" parameterType="entity.inf" resultMap="inf">
  40. select * from inf where username = #{username} and num= #{num}
  41. </select>
  42. <!--通过num查询所有题目的选项-->
  43. <select id="findOptByNum" parameterType="entity.inf" resultMap="det">
  44. select * from det where num = #{num} and username = #{username} order by id
  45. </select>
  46. <!--查询一个调查表中num最大值-->
  47. <select id="findMaxNum" parameterType="java.lang.String" resultType="java.lang.Integer">
  48. select MAX(num) from inf where username = '${value}'
  49. </select>
  50. <!--查询一个题中选项id的最大值-->
  51. <select id="findMaxId" parameterType="entity.inf" resultType="java.lang.Integer">
  52. select MAX(id) from det where username = #{username} and num = #{num}
  53. </select>
  54. <!--插入题目-->
  55. <insert id="insertInf" parameterType="entity.inf">
  56. insert into inf values(#{num},#{username},#{des})
  57. </insert>
  58. <!--插入题目选项-->
  59. <insert id="insertOpt" parameterType="entity.det">
  60. insert into det values(#{num},#{id},#{opt},#{username},default)
  61. </insert>
  62. <!--更新选题描述-->
  63. <update id="updateDes" parameterType="entity.inf">
  64. update inf set des = #{des} where username = #{username} and num = #{num}
  65. </update>
  66. <!--更新选项描述-->
  67. <update id="updateOpt" parameterType="entity.det">
  68. update det set opt = #{opt} where username = #{username} and id = #{id} and num = #{num}
  69. </update>
  70. <!--选项选择情况-->
  71. <update id="updateRes" parameterType="entity.det">
  72. update det set value = value+1 where username = #{username} and id = #{id} and num = #{num}
  73. </update>
  74. <!--删除题目信息-->
  75. <delete id="deleteDes" parameterType="entity.inf">
  76. delete from inf where num = #{num} and username =#{username}
  77. </delete>
  78. <!--删除单个选项信息-->
  79. <delete id="deleteOneOpt" parameterType="entity.det">
  80. delete from det where id= #{id} and username =#{username} and num = #{num}
  81. </delete>
  82. <!--删除所有选项-->
  83. <delete id="deleteAllOpt" parameterType="entity.inf">
  84. delete from det where username =#{username} and num = #{num}
  85. </delete>
  86. </mapper>

因为有很多数据库处理的动作所以很长,至于POJO类代码就不贴了,直接按alt+insert可以直接调用getter and setter直接生成POJO类

用于获得SqlSession的工具类session.java:

  1. package Dao;
  2. import org.apache.ibatis.io.Resources;
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. public class session {
  9. private final static SqlSessionFactory sqlSessionFactory;
  10. static {
  11. String resource = "config.xml";
  12. InputStream inputStream=null;
  13. try {
  14. inputStream = Resources.getResourceAsStream(resource);
  15. } catch (IOException e) {
  16. e.printStackTrace();
  17. }
  18. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  19. }
  20. public static SqlSession getSession()
  21. {
  22. return sqlSessionFactory.openSession(true);//这里设置成true表示支持事务,就是会更新数据库的意思,mybatis默认不支持事务
  23. }
  24. }

与tab.xml相对于的java类sql.java:

  1. package Dao;
  2. import entity.det;
  3. import entity.inf;
  4. import entity.user;
  5. import org.apache.ibatis.session.SqlSession;
  6. import java.util.List;
  7. public class sql {
  8. private static SqlSession session;
  9. static {
  10. session= Dao.session.getSession();
  11. }
  12. public static int findUser(String name)
  13. {
  14. return session.selectOne("dom.findUser",name);
  15. }
  16. public static String findPwd(String name)
  17. {
  18. return session.selectOne("dom.findPwd",name);
  19. }
  20. public static void insertUser(user user)
  21. {
  22. session.insert("dom.insertUser",user);
  23. }
  24. public static List<inf> findDes(String username)
  25. {
  26. return session.selectList("dom.findDes",username);
  27. }
  28. public static List<det> findOptByNum(inf t)
  29. {
  30. return session.selectList("dom.findOptByNum",t);
  31. }
  32. public static inf findOneDes(inf t)
  33. {
  34. return session.selectOne("findOneDes",t);
  35. }
  36. public static void insertInf(inf t)
  37. {
  38. session.insert("dom.insertInf",t);
  39. }
  40. public static void insertOpt(det t)
  41. {
  42. session.insert("dom.insertOpt",t);
  43. }
  44. public static int findMaxNum(String username)
  45. {
  46. return session.selectOne("findMaxNum",username);
  47. }
  48. public static int findMaxId(inf t)
  49. {
  50. return session.selectOne("findMaxId",t);
  51. }
  52. public static void updateDes(inf t)
  53. {
  54. session.update("dom.updateDes",t);
  55. }
  56. public static void updateOpt(det t)
  57. {
  58. session.update("dom.updateOpt",t);
  59. }
  60. public static void updateRes(det t)
  61. {
  62. session.update("dom.updateRes",t);
  63. }
  64. public static void deleteDes(inf t)
  65. {
  66. session.delete("deleteDes",t);
  67. }
  68. public static void deleteOneOpt(det t)
  69. {
  70. session.delete("deleteOneOpt",t);
  71. }
  72. public static void deleteAllOpt(inf t)
  73. {
  74. session.delete("deleteAllOpt",t);
  75. }
  76. }

登录界面login.jsp代码,我这里用了cookies存储登录账号密码:

  1. <%@ page import="java.net.URLDecoder" %><%--
  2. Created by IntelliJ IDEA.
  3. User: hjy
  4. Date: 18-4-24
  5. Time: 下午8:10
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <%
  10. request.setCharacterEncoding("UTF-8");
  11. Cookie cookies[]=null;
  12. cookies=request.getCookies();
  13. String username="";
  14. String pwd="";
  15. if(cookies!=null)
  16. {
  17. for(Cookie c:cookies)
  18. {
  19. String s=c.getName();
  20. if("username".equals(s))
  21. {
  22. username= URLDecoder.decode((String)c.getValue(),"UTF-8");
  23. System.out.println(username);
  24. }
  25. if("pwd".equals(s))
  26. {
  27. pwd= URLDecoder.decode((String)c.getValue(),"UTF-8");
  28. System.out.println(pwd);
  29. }
  30. }
  31. }
  32. %>
  33. <html>
  34. <head>
  35. <title>login</title>
  36. </head>
  37. <body>
  38. <form action="/servlets/login" method="post">
  39. 账号:<input name="username" value="<%=username%>"/><br/>
  40. 密码:<input type="password" name="pwd" value="<%=pwd%>"/>
  41. <button type="submit">登录</button>
  42. </form>
  43. <a href="/registerPage">注册</a>
  44. </body>
  45. </html>

然后是创建调查问卷的create_tab.jsp,这段代码的实现完全出自于感觉。。然后注意一般用hidden属性来给要传的表加入一些用于数据处理又不想呈现出来的值,还有就是一个表格根据不同的按钮提交给不用的servlet的方法是onclick属性里面,this.form.action=’xxx’:

  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: hjy
  4. Date: 18-4-20
  5. Time: 下午3:26
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" import="Dao.*" language="java" pageEncoding="UTF-8"%>
  9. <%@ page import="java.util.List" %>
  10. <%@ page import="entity.det" %>
  11. <%@ page import="entity.inf" %>
  12. <%
  13. if(session.getAttribute("flag")!=null)
  14. {
  15. %>
  16. <script> alert("添加成功");</script>
  17. <%
  18. session.removeAttribute("flag");
  19. }
  20. %>
  21. <html>
  22. <head>
  23. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  24. <title>调查表建立</title>
  25. </head>
  26. <body>
  27. <div>
  28. <div>
  29. <a href="/">回到主界面</a>
  30. <a href="/research">查看问卷</a>
  31. <p>已添加的题目:</p>
  32. <%
  33. String username=(String)session.getAttribute("username");
  34. List<inf>l;
  35. l=sql.findDes(username);
  36. for(int i=0;i<l.size();i++)
  37. {
  38. String des=l.get(i).getDes();
  39. List<det>lz=sql.findOptByNum(l.get(i));
  40. %>
  41. <form method="post">
  42. <textarea hidden name="num"><%=(l.get(i)).getNum()%></textarea>
  43. <textarea hidden name="username"><%=username%></textarea>
  44. <div><%=i+1%>.题目描述:</div>
  45. <textarea style="width: 200px;height: 80px" name="des"><%=des%>
  46. </textarea>
  47. <input type="submit" οnclick="this.form.action='/servlets/adjdes'" value="修改描述"/>
  48. <input type="submit" οnclick="this.form.action='/servelts/deletedes'" value="删除题目"/>
  49. </form>
  50. <%
  51. for(int j=0;j<lz.size();j++)
  52. {
  53. char c=(char)(65+j);
  54. String tt=lz.get(j).getOpt();
  55. %>
  56. <form method="post">
  57. <textarea hidden name="username"><%=username%></textarea>
  58. <textarea hidden name="num"><%=(l.get(i)).getNum()%></textarea>
  59. <textarea hidden name="id"><%=(lz.get(j)).getId()%></textarea>
  60. <%=c%>.<textarea style="width: 120px;height: 25px" name="opt"><%=tt%></textarea>
  61. <input type="submit" οnclick="this.form.action='/servlets/adjopt'" value="修改选项"/>
  62. <input type="submit" οnclick="this.form.action='/servelts/deleteOneOpt'" value="删除选项"/>
  63. </form>
  64. <%
  65. }
  66. }
  67. %>
  68. </div>
  69. <hr>
  70. <p>添加题目</p>
  71. <%
  72. int tmp;
  73. tmp=sql.findMaxNum(username);
  74. inf a1=new inf();
  75. a1.setUsername(username);
  76. a1.setNum(tmp);
  77. %>
  78. 当前题号:<%=l.size()%><br/>
  79. <form method="post" action="/servlets/adjdes">
  80. <textarea hidden name="num"><%=tmp%></textarea>
  81. <textarea hidden name="username"><%=username%></textarea>
  82. <div><%=l.size()%>.题目描述:</div>
  83. <textarea style="width: 200px;height:80px" name="des"><%=sql.findOneDes(a1).getDes()%></textarea>
  84. <button type="submit">修改描述</button>
  85. </form>
  86. 已添加选项:<br/>
  87. <%
  88. List<det>l1=sql.findOptByNum(a1);
  89. for(int i=0;i<l1.size();i++)
  90. {
  91. char c=(char)(65+i);
  92. %>
  93. <form method="post">
  94. <textarea hidden name="username"><%=username%></textarea>
  95. <textarea hidden name="num"><%=tmp%></textarea>
  96. <textarea hidden name="id"><%=l1.get(i).getId()%></textarea>
  97. <p><%=c%>.<textarea style="width: 120px;height: 25px" name="opt"><%=(l1.get(i)).getOpt()%></textarea>
  98. <input type="submit" οnclick="this.form.action='/servlets/adjopt'" value="修改选项"/>
  99. <input type="submit" οnclick="this.form.action='/servelts/deleteOneOpt'" value="删除选项"/>
  100. </form>
  101. <%
  102. }
  103. %>
  104. <br/>
  105. 为当前题目添加选项:
  106. <form method="post" action="/servlets/addopt">
  107. <textarea hidden name="username"><%=username%></textarea>
  108. <textarea hidden name="num"><%=tmp%></textarea>
  109. <textarea hidden name="id"><%=l1.size()==0?1:((int)(sql.findMaxId(a1))+1)%></textarea>
  110. <textarea style="width: 200px;height: 80px" name="opt"></textarea><br/>
  111. <button type="submit">添加选项卡</button>
  112. </form>
  113. <a href="/servlets/addnum" style="display: block">进入下一题添加</a>
  114. </div>
  115. </body>
  116. </html>

问卷调查页面tab_research.jsp:

  1. <%@ page import="entity.inf" %>
  2. <%@ page import="java.util.List" %>
  3. <%@ page import="Dao.sql" %>
  4. <%@ page import="entity.det" %><%--
  5. Created by IntelliJ IDEA.
  6. User: hjy
  7. Date: 18-4-20
  8. Time: 下午3:27
  9. To change this template use File | Settings | File Templates.
  10. --%>
  11. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  12. <html>
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <title>问卷调查</title>
  16. </head>
  17. <body>
  18. <form action="/servlets/handle_submit" method="post">
  19. <%
  20. String username=(String)session.getAttribute("username");
  21. List<inf>l= sql.findDes(username);
  22. for(int i=0;i<l.size();i++)
  23. {
  24. %>
  25. <p><%=i+1%>.<%=l.get(i).getDes()%></p>
  26. <%
  27. List<det>lz=sql.findOptByNum(l.get(i));
  28. for(int j=0;j<lz.size();j++)
  29. {
  30. char c=(char)(65+j);
  31. %>
  32. <%=c%>.<input type="radio" name="opt<%=lz.get(j).getNum()%>" value="<%=lz.get(j).getId()%>"><%=lz.get(j).getOpt()%><br/>
  33. <%
  34. }
  35. }
  36. %>
  37. <button type="submit" >提交</button>
  38. </form>
  39. </body>
  40. </html>

然后是整个系统最重要的LoginController.java:

  1. package handles;
  2. import Dao.sql;
  3. import entity.det;
  4. import entity.det;
  5. import entity.inf;
  6. import entity.user;
  7. import org.springframework.http.HttpRequest;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import javax.servlet.http.Cookie;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import javax.servlet.http.HttpSession;
  14. import java.io.UnsupportedEncodingException;
  15. import java.net.URLEncoder;
  16. import java.util.List;
  17. @Controller
  18. public class LoginController {
  19. @RequestMapping("/")
  20. public String home(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException {
  21. req.setCharacterEncoding("UTF-8");
  22. resp.setContentType("text/html; charset=UTF-8");
  23. return "login";
  24. }
  25. @RequestMapping("/registerPage")
  26. public String registerPage(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException {
  27. req.setCharacterEncoding("UTF-8");
  28. resp.setContentType("text/html; charset=UTF-8");
  29. return "register";
  30. }
  31. @RequestMapping("/servlets/login")
  32. public String login(HttpServletRequest req, HttpServletResponse resp, HttpSession session, user t) throws UnsupportedEncodingException {
  33. req.setCharacterEncoding("UTF-8");
  34. resp.setContentType("text/html; charset=UTF-8");
  35. int tag=sql.findUser(t.getUsername());
  36. String confirm;
  37. if(tag==0)
  38. {
  39. session.setAttribute("confirm","none");
  40. }
  41. else
  42. {
  43. if((t.getPwd()).equals(sql.findPwd(t.getUsername()))) {
  44. session.setAttribute("confirm", "true");
  45. session.setAttribute("username", t.getUsername());
  46. String name= URLEncoder.encode(t.getUsername(),"UTF-8");
  47. String pwd= URLEncoder.encode(t.getPwd(),"UTF-8");
  48. Cookie c1=new Cookie("username",t.getUsername());
  49. c1.setMaxAge(30*24*3600);
  50. c1.setPath("/");
  51. resp.addCookie(c1);
  52. Cookie c2=new Cookie("pwd",t.getPwd());
  53. c2.setMaxAge(30*24*3600);
  54. c2.setPath("/");
  55. resp.addCookie(c2);
  56. }
  57. else
  58. {
  59. session.setAttribute("confirm", "false");
  60. }
  61. }
  62. return "judge";
  63. }
  64. @RequestMapping("/create_tab")
  65. public String create_tab(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException {
  66. req.setCharacterEncoding("UTF-8");
  67. resp.setContentType("text/html; charset=UTF-8");
  68. return "create_tab";
  69. }
  70. @RequestMapping("/research")
  71. public String research(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException {
  72. req.setCharacterEncoding("UTF-8");
  73. resp.setContentType("text/html; charset=UTF-8");
  74. return "/tab_research";
  75. }
  76. @RequestMapping("/result")
  77. public String result(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException {
  78. req.setCharacterEncoding("UTF-8");
  79. resp.setContentType("text/html; charset=UTF-8");
  80. return "result";
  81. }
  82. @RequestMapping("/servlets/register")
  83. public String register(HttpServletRequest req, HttpServletResponse resp, HttpSession session, user t) throws UnsupportedEncodingException {
  84. req.setCharacterEncoding("UTF-8");
  85. resp.setContentType("text/html; charset=UTF-8");
  86. int tag=sql.findUser(t.getUsername());
  87. System.out.println(tag);
  88. String comfirm;
  89. if(tag==0)
  90. {
  91. comfirm="true";
  92. sql.insertUser(t);
  93. inf tmp=new inf();
  94. tmp.setNum(1);
  95. tmp.setUsername(t.getUsername());
  96. tmp.setDes("此处添加描述");
  97. sql.insertInf(tmp);
  98. session.setAttribute("username",t.getUsername());
  99. }
  100. else
  101. {
  102. comfirm="false";
  103. }
  104. session.setAttribute("confirm",comfirm);
  105. return "reg_judge";
  106. }
  107. @RequestMapping("/servlets/adjdes")
  108. public String adjdes(HttpServletRequest req, HttpServletResponse resp, HttpSession session, inf t) throws UnsupportedEncodingException {
  109. req.setCharacterEncoding("UTF-8");
  110. resp.setContentType("text/html; charset=UTF-8");
  111. t.setDes(new String(t.getDes().getBytes("ISO-8859-1"),"UTF-8"));
  112. sql.updateDes(t);
  113. return "create_tab";
  114. }
  115. @RequestMapping("/servlets/adjopt")
  116. public String adjopt(HttpServletRequest req, HttpServletResponse resp, HttpSession session, det t) throws UnsupportedEncodingException {
  117. req.setCharacterEncoding("UTF-8");
  118. resp.setContentType("text/html; charset=UTF-8");
  119. t.setOpt(new String(t.getOpt().getBytes("ISO-8859-1"),"UTF-8"));
  120. sql.updateOpt(t);
  121. return "create_tab";
  122. }
  123. @RequestMapping("/servlets/addopt")
  124. public String addopt(HttpServletRequest req, HttpServletResponse resp,det t) throws UnsupportedEncodingException {
  125. req.setCharacterEncoding("UTF-8");
  126. resp.setContentType("text/html; charset=UTF-8");
  127. t.setOpt(new String(t.getOpt().getBytes("ISO-8859-1"),"UTF-8"));
  128. sql.insertOpt(t);
  129. return "create_tab";
  130. }
  131. @RequestMapping("/servlets/addnum")
  132. public String addnum(HttpServletRequest req, HttpServletResponse resp,HttpSession session) throws UnsupportedEncodingException {
  133. req.setCharacterEncoding("UTF-8");
  134. resp.setContentType("text/html; charset=UTF-8");
  135. String username=(String)session.getAttribute("username");
  136. inf t=new inf();
  137. t.setUsername(username);
  138. t.setNum(sql.findMaxNum(username)+1);
  139. t.setDes("此处添加描述");
  140. sql.insertInf(t);
  141. session.setAttribute("flag","true");
  142. return "create_tab";
  143. }
  144. @RequestMapping("/servlets/handle_submit")
  145. public String handle_submit(HttpServletRequest req, HttpServletResponse resp,HttpSession session) throws UnsupportedEncodingException {
  146. req.setCharacterEncoding("UTF-8");
  147. resp.setContentType("text/html; charset=UTF-8");
  148. String username=(String)session.getAttribute("username");
  149. List<inf>l=sql.findDes(username);
  150. for(int i=0;i<l.size();i++)
  151. {
  152. int num=l.get(i).getNum();
  153. String tmp=req.getParameter("opt"+num);
  154. if(tmp==null)
  155. continue;
  156. det t=new det();
  157. t.setUsername(username);
  158. t.setNum(num);
  159. int id=Integer.parseInt(tmp);
  160. t.setId(id);
  161. sql.updateRes(t);
  162. }
  163. return "success";
  164. }
  165. @RequestMapping("/servelts/deletedes")
  166. public String deletedes(HttpServletRequest req, HttpServletResponse resp,inf t) throws UnsupportedEncodingException {
  167. req.setCharacterEncoding("UTF-8");
  168. resp.setContentType("text/html; charset=UTF-8");
  169. sql.deleteAllOpt(t);
  170. sql.deleteDes(t);
  171. return "create_tab";
  172. }
  173. @RequestMapping("/servelts/deleteOneOpt")
  174. public String deleteopt(HttpServletRequest req, HttpServletResponse resp,det t) throws UnsupportedEncodingException {
  175. req.setCharacterEncoding("UTF-8");
  176. resp.setContentType("text/html; charset=UTF-8");
  177. sql.deleteOneOpt(t);
  178. return "create_tab";
  179. }
  180. }

然后附上一些项目的运行效果图。。由于还没写css和特技,所以很丑见谅owo

登录界面:

20180511221750660

主界面:

20180511221808369

创建调查问卷界面:

2018051122182158

20180511221836312

调查问卷界面:

20180511221851827

调查结果界面:

20180511221903453

就到这里了。。代码写的很丑请见谅qwq,这几天写css美化下~

-————————————————————————————————————————————————————————————————-

这是一条分界线,5月16号更新,这几天一直忙着前端部分,今天终于算是完成了。。体会到了包装的重要性,代码将同步更新到github(https://github.com/iunique/IdeaProject)下面是我用bootstarp写出的一些效果图:

登录界面:

20180516224250408

注册界面:

20180516224129677

结合bootstarp和jquery写的一个动态进度条界面:

2018051622411860

操作主界面:

20180516224408427

创建问卷界面:

20180516224040496

界面第二张图:

20180516224558765

生成的问卷页面:

20180516224616183

问卷调查结果界面:

20180516224633765

日常划水:

20180516224648798

划水就到这里了~溜了溜了

发表评论

表情:
评论列表 (有 0 条评论,297人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringMVC+Mybatis调查问卷管理系统

    最近一直想找点事情做,前几个星期马原老师说要做一份社会调查需要用到调查问卷,然后基本都是网上直接用现成的网站直接做的,我在想自己是不是也能做一个类似简单的管理系统呢。。然后一做

    相关 HDU6344 调查问卷

    状态压缩 + 模拟 把AB串压缩成二进制,A用1表示,B用0表示。 枚举所有问题的子集,选中的问题用1表示,其余的用0表示。对于每个子集,我们去和所有问题按位与,这样对