自己做的一个简单的问卷调查系统
疫情期间,先来没事做,就简单的用ssm 写了一个问卷调查系统。用于我们学校得青协调查用。
这就是我做得一个首页的页面,首页做的比较简单嘻嘻。
因为刚接触ssm 框架,我首先的思路是先把整体的ssm框架都搭建好,再去写具体的代码。
所以我在这里也不多说了,直接上代码:
pom.xml也都是按着网上教程一点点走的,
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.huapei</groupId> <artifactId>queston_ssm</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>queston_ssm Maven Webapp</name> <!-- FIXME change it to the project\'s website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- spring版本号 --> <spring.version>4.2.5.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.8</mybatis.version> <!-- mysql驱动版本号 --> <mysql-driver.version>5.1.29</mysql-driver.version> <!-- log4j日志包版本号 --> <slf4j.version>1.7.18</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <!-- 添加jstl依赖 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <!-- 添加junit4依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <!-- 指定范围,在测试时才会加载 --> <scope>test</scope> </dependency> <!-- 添加spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!-- 添加mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- 添加mybatis/spring整合包依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- 添加mysql驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-driver.version}</version> </dependency> <!-- 添加数据库连接池依赖 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- 添加fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <!-- 添加日志相关jar包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- log end --> <!-- 映入JSON --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!-- gson 插入以来, 解决json--> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency> </dependencies> <build> <finalName>web-ssm</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>6</source> <target>6</target> </configuration> </plugin> </plugins> </build> </project>
resources 里的文件如下:
jdbc.properties:
driverClasss=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/yijian?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull username=root password=123456 #定义初始连接数 initialSize=0 #定义最大连接数 maxActive=20 #定义最大空闲 maxIdle=20 #定义最小空闲 minIdle=1 #定义最长等待时间 maxWait=60000
log4j.properties
添加log4j的日志文件
log4j.rootLogger=INFO,Console,File
#控制台日志
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
#普通文件日志
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=logs/ssm.log
log4j.appender.File.MaxFileSize=10MB
#输出日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 启用spring mvc 注解 --> <!-- 另一种方式两个标准配置使用这种方式在web.xml 中不需要配置 激活 Tomcat 的 defaultServlet 来处理静态资 --> <mvc:default-servlet-handler /> <mvc:annotation-driven /> <!-- 自动扫描 @Controller--> <context:component-scan base-package="cn.huapei.controller"/> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON转换器 --> </list> </property> </bean> <!-- 定义跳转的文件的前后缀 ,视图模式配置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp"/> </bean> <!-- 文件上传配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="UTF-8"/> <!-- 上传文件大小限制为31M,31*1024*1024 --> <property name="maxUploadSize" value="32505856"/> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="4096"/> </bean> <!--<!– 告诉muv 静态代码快js 怎么处理–>--> <!-- <mvc:resources location="/js/" mapping="/js/**"/>--> </beans>
spring-mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="cn.huapei"/> <!-- 第一种方式:加载一个properties文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <!-- 第二种方式:加载多个properties文件 <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> <value>classpath:common.properties</value> </list> </property> <property name="fileEncoding" value="UTF-8"/> </bean> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"> <property name="properties" ref="configProperties"/> </bean> --> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClasss}"/> <property name="url" value="${jdbcUrl}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mapper/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.huapei.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
这是利用mybatis 实现对数据库的操作。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.huapei.dao.QuestionDao"> <insert id="inserQuestion" parameterType="cn.huapei.model.question"> insert into question(question,a, b ,c,d,type) values ( #{questions.question},#{questions.a},#{questions.b} ,#{questions.c},#{questions.d},#{questions.type} ) </insert> <select id="getAllQuestions" resultType="cn.huapei.model.question"> select * from question; </select> <insert id="insertFeedback" parameterType="cn.huapei.model.feedback"> insert into feedback(qu_id, question, daan,q_type) select #{feedback.qu_id},#{feedback.question},#{feedback.daan},#{feedback.q_type} from dual where not exists ( select qu_id from feedback where daan = #{feedback.daan} ) </insert> <select id="getAllFeedback" resultType="cn.huapei.model.feedback"> select * from feedback; </select> <update id="updateNum" parameterType="String" > update feedback set num_daan=num_daan+1 where daan=#{daan} </update> <delete id="delQuestionByid" parameterType="int"> delete from question where q_id=#{id} </delete> <delete id="delFeedbackByid" parameterType="int"> delete from feedback where qu_id=#{id} </delete> </mapper>
这个是我的数据库 代码:
/* SQLyog Professional v12.08 (64 bit) MySQL - 5.5.19 : Database - yijian ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=\'\'*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=\'NO_AUTO_VALUE_ON_ZERO\' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`yijian` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `yijian`; /*Table structure for table `feedback` */ DROP TABLE IF EXISTS `feedback`; CREATE TABLE `feedback` ( `fb_id` int(10) NOT NULL AUTO_INCREMENT COMMENT \'反馈id\', `qu_id` int(10) DEFAULT NULL COMMENT \'问题id\', `question` varchar(100) DEFAULT NULL COMMENT \'问题题目\', `daan` varchar(100) DEFAULT NULL COMMENT \'问题答案\', `q_type` int(1) DEFAULT NULL COMMENT \'问题类型id\', `num_daan` int(100) DEFAULT \'1\' COMMENT \'回答问题数量\', PRIMARY KEY (`fb_id`), KEY `qu_id` (`qu_id`), KEY `q_type` (`q_type`), CONSTRAINT `feedback_ibfk_1` FOREIGN KEY (`qu_id`) REFERENCES `question` (`q_id`), CONSTRAINT `feedback_ibfk_2` FOREIGN KEY (`q_type`) REFERENCES `q_type` (`type_id`) ) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8; /*Data for the table `feedback` */ insert into `feedback`(`fb_id`,`qu_id`,`question`,`daan`,`q_type`,`num_daan`) values (54,1,\'请问您在校青协身\',\'副部长\',1,13),(55,1,\'请问您在校青协身份是\',\'部长\',1,17),(57,3,\'青协哪点让你欣赏?\',\'制度严明,职位职位清晰\',2,16),(59,3,\'青协哪点让你欣赏?\',\'职位职位清晰\',2,13),(61,34,\'你的留言\',\'你好这是留言\',3,1),(62,34,\'你的留言\',\'你好这是留言1\',3,1),(63,34,\'你的留言\',\'你好这是留言2\',3,1),(64,2,\'您进入青协至今多长时间\',\'2\',1,1),(65,3,\'青协哪点让你欣赏?\',\'制度严明,职位职位清晰,制度清晰,作事有意义\',2,1),(66,34,\'你的留言\',\'青协很不错,加油继续干\',3,0),(67,2,\'您进入青协至今多长时间\',\'4\',1,1),(68,34,\'你的留言\',\'这是我写的\',3,1); /*Table structure for table `q_type` */ DROP TABLE IF EXISTS `q_type`; CREATE TABLE `q_type` ( `type_id` int(4) NOT NULL AUTO_INCREMENT, `type_name` varchar(25) DEFAULT NULL, PRIMARY KEY (`type_id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; /*Data for the table `q_type` */ insert into `q_type`(`type_id`,`type_name`) values (1,\'单选\'),(2,\'多选\'),(3,\'填空 \'); /*Table structure for table `question` */ DROP TABLE IF EXISTS `question`; CREATE TABLE `question` ( `q_id` int(25) NOT NULL AUTO_INCREMENT COMMENT \'问题id\', `question` varchar(50) DEFAULT NULL COMMENT \'问题\', `a` varchar(50) DEFAULT NULL COMMENT \'a选项\', `b` varchar(50) DEFAULT NULL, `c` varchar(50) DEFAULT NULL, `d` varchar(50) DEFAULT NULL, `type` int(4) DEFAULT NULL, PRIMARY KEY (`q_id`), KEY `type` (`type`), CONSTRAINT `question_ibfk_1` FOREIGN KEY (`type`) REFERENCES `q_type` (`type_id`) ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8; /*Data for the table `question` */ insert into `question`(`q_id`,`question`,`a`,`b`,`c`,`d`,`type`) values (1,\'请问您在校青协身份是\',\'部长\',\'副部长\',\'干事\',\'会员\',1),(2,\'您进入青协至今多长时间\',\'1\',\'2\',\'3\',\'4\',1),(3,\'青协哪点让你欣赏?\',\'制度严明\',\'职位职位清晰\',\'制度清晰\',\'作事有意义\',2),(34,\'你的留言\',NULL,NULL,NULL,NULL,3); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
最后是我们的web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>web-ssm</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止spring内存溢出监听器,比如quartz --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- spring mvc servlet--> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处也可以配置成 *.do 形式 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <!-- session配置 --> <session-config> <session-timeout>15</session-timeout> </session-config> </web-app>
现在已经把 框架建立完成,万事具备,就差逻辑代码
首先我们先看实体类:
实体类我定义了两个,一个反馈, 一个问题实体。
如下:
反馈:
package cn.huapei.model; import java.util.List; public class feedback { private int fb_id; private int qu_id; private String question; private String daan; private int q_type; private int num_daan; private List<feedback> feedbacks; @Override public String toString() { return "feedback{" + "fb_id=" + fb_id + ", qu_id=" + qu_id + ", question=\'" + question + \'\\'\' + ", daan=\'" + daan + \'\\'\' + ", q_type=" + q_type + ", num_daan=" + num_daan + ", feedbacks=" + feedbacks + \'}\'; } public int getNum_daan() { return num_daan; } public void setNum_daan(int num_daan) { this.num_daan = num_daan; } public int getQ_type() { return q_type; } public void setQ_type(int q_type) { this.q_type = q_type; } public int getFb_id() { return fb_id; } public void setFb_id(int fb_id) { this.fb_id = fb_id; } public String getQuestion() { return question; } public void setQuestion(String question) { this.question = question; } public String getDaan() { return daan; } public void setDaan(String daan) { this.daan = daan; } public List<feedback> getFeedbacks() { return feedbacks; } public void setFeedbacks(List<feedback> feedbacks) { this.feedbacks = feedbacks; } public int getQu_id() { return qu_id; } public void setQu_id(int qu_id) { this.qu_id = qu_id; } }
问题:
package cn.huapei.model; import java.util.List; public class question { private Integer q_id; private String question; private String a; private String b; private String c; private String d; private Integer type; private List<question> questions ; @Override public String toString() { return "question{" + "q_id=" + q_id + ", question=\'" + question + \'\\'\' + ", a=\'" + a + \'\\'\' + ", b=\'" + b + \'\\'\' + ", c=\'" + c + \'\\'\' + ", d=\'" + d + \'\\'\' + ", type=" + type + \'}\'; } public int getQ_id() { return q_id; } public void setQ_id(int q_id) { this.q_id = q_id; } public String getQuestion() { return question; } public void setQuestion(String question) { this.question = question; } public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } public String getC() { return c; } public void setC(String c) { this.c = c; } public String getD() { return d; } public void setD(String d) { this.d = d; } public int getType() { return type; } public void setType(int type) { this.type = type; } public List<cn.huapei.model.question> getQuestions() { return questions; } public void setQuestions(List<cn.huapei.model.question> questions) { this.questions = questions; } }
接着我们创建我们dao和service
dao
package cn.huapei.dao; import cn.huapei.model.feedback; import cn.huapei.model.question; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @Repository("QuestionDao") public interface QuestionDao { // 创建问题列表 public int inserQuestion(@Param("questions") question questions); public List<question> getAllQuestions(); public int insertFeedback(@Param("feedback") feedback feedback); public List<feedback> getAllFeedback(); public int updateNum(@Param("daan") String daan); //通过id 删除问题 public int delQuestionByid(@Param("id") int id); //通过问题id 删除反馈 public int delFeedbackByid(@Param("id") int id); }
service
package cn.huapei.service; import cn.huapei.model.feedback; import cn.huapei.model.question; import java.util.List; public interface QuestionService { // 创建问题列表 public int inserQuestion( List<question> questions); public List<question> getAllQuestions(); public int insertFeedback(feedback feedback); // 输出问卷调查结果 public List<feedback> jieguoshuchu(); //通过id 删除问题 public int delQuestionByid( int id); }
service实现类
package cn.huapei.service.impl; import cn.huapei.dao.QuestionDao; import cn.huapei.model.feedback; import cn.huapei.model.question; import cn.huapei.service.QuestionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service("QuestionService") @Transactional public class QuestionServiceImpl implements QuestionService { @Autowired private QuestionDao questionDao ; public int inserQuestion(List<question> questions) { int i = 0; try{ for (question q:questions) { i+=questionDao.inserQuestion(q); } }catch (Exception ex){ System.out.println(ex); } System.out.println("Service"+i); return i; } public List<question> getAllQuestions() { return questionDao.getAllQuestions(); } public int insertFeedback(feedback feedback) { int i = 0; int s = 0; try{ if (feedback.getQ_type()==1||feedback.getQ_type()==2){ String daan = feedback.getDaan(); i += questionDao.updateNum(daan); System.out.println("更新》》》》"+i+"条数据"); } s = questionDao.insertFeedback(feedback); System.out.println("添加》》》》"+s+"条数据"); }catch (Exception ex){ System.err.println(ex); } if(s==0){ return i; }else { return s; } } @Override public List<feedback> jieguoshuchu() { return questionDao.getAllFeedback(); } @Override public int delQuestionByid(int id) { int i= 0; try{ List<feedback> allFeedback = questionDao.getAllFeedback(); for (feedback f : allFeedback){ if(f.getQu_id() == id){ questionDao.delFeedbackByid(id); break; } } i = questionDao.delQuestionByid(id); System.out.println("service"+i); }catch (Exception ex){ System.err.println(ex); } return i; } }
最后是我们的控制层 :
package cn.huapei.controller; import cn.huapei.model.feedback; import cn.huapei.model.question; import cn.huapei.service.QuestionService; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; @Controller public class QuestionController { // @Autowired @Resource private QuestionService questionService; @RequestMapping("/chuangjian") @ResponseBody public String inserQuestion(String jsons, HttpServletRequest request) { System.out.println(jsons); Gson gson = new GsonBuilder().create(); List<question> list = gson.fromJson(jsons, new TypeToken<ArrayList<question>>() { }.getType()); System.out.println("---->listJsonStr convert List " + list); int i = questionService.inserQuestion(list); System.out.println(i); if (i > 0) { return "true"; } else { return "false"; } } @RequestMapping("/getQuestion") public String getAllQuestions(Model model) { List<question> allQuestions = questionService.getAllQuestions(); System.out.println("所有的问题列表——---------》" + allQuestions); model.addAttribute("questions", allQuestions); return "wenjuan"; } @RequestMapping("/question_jg") @ResponseBody public String feedbacks(feedback feedback) { System.out.println("返回集合》》》》" + feedback); List<feedback> feedbacks = feedback.getFeedbacks(); System.out.println("反馈》》》》》》" + feedbacks); int i = 0; for (feedback f : feedbacks) { System.out.println(f); i = questionService.insertFeedback(f); } System.out.println(i); if (i > 0) { return "true"; } else { return "false"; } } @RequestMapping("/Results_page") public String Results(Model model) { List<feedback> feedbackList = questionService.jieguoshuchu(); List<question> allQuestions = questionService.getAllQuestions(); model.addAttribute("feedbackList", feedbackList); model.addAttribute("allQuestions", allQuestions); return "list"; } //跳转问题页面。。。。 @RequestMapping("createqu") public String create() { return "createqution"; } //跳转管理页面 @RequestMapping("/managementpage") public String managementPage(Model model) { List<question> allQuestions = questionService.getAllQuestions(); model.addAttribute("allQuestions", allQuestions); return "management"; } //管理问题 @RequestMapping("/management") @ResponseBody public String Wjmanagement(@RequestParam(value = "id",required = false) String id) { Integer del_Id = Integer.parseInt(id); System.out.println(del_Id); int i = questionService.delQuestionByid(del_Id); System.out.println(i); if (i > 0) { return "true"; } else { return "false"; } } }
最后是我们的前端页面这里jsp 我使用了简单的Bootstrap 前端框架进行美化。
我们首页的jsp
controller.jsp
<%-- Created by IntelliJ IDEA. User: 99573 Date: 2020/2/27 Time: 20:25 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <head> <title>中心控制页面</title> </head> <script src="js/jquery-1.12.4.js"></script> <!-- Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 --> <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 --> <!--[if lt IE 9]> <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script> <![endif]--> <body> <div class="page-header"> <h1>你好,世界! <small>欢迎来到我的调查问卷系统。</small></h1> </div> <div class="btn-group btn-group-justified" role="group" aria-label="..."> <div class="btn-group " role="group"> <button type="button" class="btn btn-default createqutions">创建</button> </div> <div class="btn-group" role="group"> <button type="button" class="btn btn-default wenjuan" >问卷</button> </div> <div class="btn-group" role="group"> <button type="button" class="btn btn-default jieguo">结果查询</button> </div> <div class="btn-group" role="group"> <button type="button" class="btn btn-default guanli">问卷管理</button> </div> </div> <%--<button class="chuangjian">创建</button>--%> <%--<button class="createqutions">创建2</button>--%> <%--<button class="wenjuan">问卷 </button>--%> <%--<button class="jieguo">结果查询</button>--%> </body> <script> $(function () { $(".wenjuan").click(function () { location.assign("getQuestion") }) $(".jieguo").click(function () { location.assign("Results_page") }) $(".chuangjian").click(function () { location.assign("createqu") }) $(".createqutions").click(function () { location.assign("createqu") }) $(".guanli").click(function () { location.assign("managementpage") }) }) </script> </html>
创建问题页面
createqution.jsp
<%-- Created by IntelliJ IDEA. User: 99573 Date: 2020/2/24 Time: 14:38 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <head> <title>调查问卷创建页面</title> </head> <!-- Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 --> <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 --> <!--[if lt IE 9]> <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script> <![endif]--> <script src="js/jquery-1.12.4.js"></script> <link rel="stylesheet" href="<%=basePath%>css/quesstionnair.css" type="text/css"> <body> <button class="danxuan">单选</button> <button class="duoxuan">多选</button> <button class="tiankong">填空</button> <div class="btn-group btn-group-justified" role="group" aria-label="..."> <div class="btn-group" role="group"> <button type="button" class="btn btn-default danxuan">单选</button> </div> <div class="btn-group" role="group"> <button type="button" class="btn btn-default duoxuan">多选</button> </div> <div class="btn-group" role="group"> <button type="button" class="btn btn-default tiankong">填空</button> </div> </div> <%-- 单选--%> <form class="danxuanF"> <p style="text-align: right; font-size: 35px;" class="guanbi">×</p> <div class="form-group"> <label >请填写你的问题</label> <input type="text" class="form-control " name="question"> </div> <div class="form-group"> <label>请填写你a答案</label> <input type="text" class="form-control" name="a"> </div> <div class="form-group"> <label >请填写你b答案</label> <input type="text" class="form-control" name="b" > </div> <div class="form-group"> <label>请填写你c答案</label> <input type="text" class="form-control" name="c"> </div> <div class="form-group"> <label>请填写你d答案</label> <input type="text" class="form-control" name="d"> </div> <a class="btn btn-default dan_finsh">完成</a> </form> <%-- 多选表--%> <form class="duoxuanF"> <p style="text-align: right; font-size: 35px;" class="guanbi">×</p> <div class="form-group"> <label >请填写你的问题</label> <input type="text" class="form-control " name="question"> </div> <div class="form-group"> <label>请填写你a答案</label> <input type="text" class="form-control" name="a"> </div> <div class="form-group"> <label >请填写你b答案</label> <input type="text" class="form-control" name="b" > </div> <div class="form-group"> <label>请填写你c答案</label> <input type="text" class="form-control" name="c"> </div> <div class="form-group"> <label>请填写你d答案</label> <input type="text" class="form-control" name="d"> </div> <a class="btn btn-default duo_finsh">完成</a> </form> <%-- 填空题--%> <form class="tiankongF"> <p style="text-align: right; font-size: 35px;" class="guanbi">×</p> <div class="form-group"> <label >请填写你的问题</label> <input type="text" class="form-control " required="required" name="question"> <a class="btn btn-default tian_finsh">完成</a> </div> </form> <%-- 预览列表--%> <form class="yulanbiao"> <button type="button" class="btn btn-primary btn-lg btn-block yl_finsh">完成</button> </form> </body> <script> $(function () { // type:1等于单选 2等于多选 3等于填空 //声明一个json数组 var jsonarr=[]; var json; //单选完成 $(".danxuan").click(function () { $(".danxuanF").show(); }) var yltimu = new Array(); //点击单选完成摁钮 $(".dan_finsh").click(function () { // 创建一个json 数据 json ={"question":$(".danxuanF input[name=\'question\']").val(), "a":$(".danxuanF input[name=\'a\']").val(), "b":$(".danxuanF input[name=\'b\']").val(), "c":$(".danxuanF input[name=\'c\']").val(), "d":$(".danxuanF input[name=\'d\']").val(), "type":"1" }; // 添加json 数组 jsonarr.push(json) console.log(jsonarr) $(".danxuanF input").each(function(){ yltimu.push($(this).val());//添加至数组 }); $(".danxuanF input").val(" ") $(".danxuanF").hide(); $(".yulanbiao").append( " <div class=\'list-group\'>" + "<a class=\'list-group-item active\' style=\'background: aqua\'>题目:"+yltimu[0]+"</a>" + "<a class=\'list-group-item\'>A:"+yltimu[1]+"</a>" + "<a class=\'list-group-item\'>B:"+yltimu[2]+"</a>" + "<a class=\'list-group-item\'>C:"+yltimu[3]+"</a>" + "<a class=\'list-group-item\'>D:"+yltimu[4]+"</a>" ) }) //多选摁钮 $(".duoxuan").click(function () { $(".duoxuanF").show(); }) $(".duo_finsh").click(function () { // 创建一个json 数据 json ={"question":$(".duoxuanF input[name=\'question\']").val(), "a":$(".duoxuanF input[name=\'a\']").val(), "b":$(".duoxuanF input[name=\'b\']").val(), "c":$(".duoxuanF input[name=\'c\']").val(), "d":$(".duoxuanF input[name=\'d\']").val(), "type":"2" }; // 添加json 数组 jsonarr.push(json) $(".duoxuanF input").each(function(){ yltimu.push($(this).val());//添加至数组 }); $(".duoxuanF input").val(" ") console.log(yltimu) $(".duoxuanF").hide(); $(".yulanbiao").append( " <div class=\'list-group\'>" + "<a class=\'list-group-item active\' style=\'background: aqua\'>题目:"+yltimu[0]+"</a>" + "<a class=\'list-group-item\'>A:"+yltimu[1]+"</a>" + "<a class=\'list-group-item\'>B:"+yltimu[2]+"</a>" + "<a class=\'list-group-item\'>C:"+yltimu[3]+"</a>" + "<a class=\'list-group-item\'>D:"+yltimu[4]+"</a>" ) console.log(jsonarr) }) // 填空 $(".tiankong").click(function () { $(".tiankongF").show(); }) $(".tian_finsh").click(function () { // 创建一个json 数据 json ={"question":$(".tiankongF input[name=\'question\']").val(), "type":"3" }; jsonarr.push(json) // timu = JSON.stringify(); $(".tiankongF input").each(function(){ yltimu.push($(this).val());//添加至数组 $(".yulanbiao").append("<p class=\'list-group-item active\' style=\'background: aqua\'>题目:"+$(this).val()+"</p>"); }); $(".tiankongF").hide(); // $(".yulanbiao").append( // "<p>题目:"+yltimu[0]+"</p>") $(".tiankongF input").val(" ") console.log(jsonarr) }) // 关闭摁钮 $(".guanbi").click(function () { $(this).parent("form").hide(); }) var aa = JSON.stringify(jsonarr) console.log(aa) $(".yl_finsh").click(function () { var aa = JSON.stringify(jsonarr) console.log(aa) console.log(aa) console.log(aa) // ajax 向后端传值 $.ajax({ "url":"chuangjian", "type":"post", "data":{"jsons":aa}, "dataType":"text", "success":function(re){ if(re){ alert("提交成功"); location.assign("<%=basePath%>controller.jsp"); } }, "error":function (er) { console.log(er) alert("提交失败") } }) }) }) </script> </html>
list.jsp
结果列表
<%-- Created by IntelliJ IDEA. User: 99573 Date: 2020/2/22 Time: 14:22 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <head> <title>Title</title> </head> <!-- Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 --> <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 --> <!--[if lt IE 9]> <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script> <![endif]--> <body> <c:forEach var="question" items="${allQuestions}" step="1"> <c:if test="${question.type==2}"> <br> <%-- <c:out value="${question.question}"/><br>--%> <p class="list-group-item active"> ${question.question} </p> <c:forEach var="feedbackList" items="${feedbackList}"> <c:if test="${feedbackList.qu_id == question.q_id}"> <ul class="list-group"> <li class="list-group-item"> <span class="badge">${feedbackList.num_daan}</span> ${feedbackList.daan} </li> </ul> <%-- <c:out value="${feedbackList.daan}"/>--%> <%-- <c:out value="${feedbackList.num_daan}"/> <br>--%> </c:if> </c:forEach> </c:if> <c:if test="${question.type==1}"> <br> <%-- <c:out value="${question.question}"/><br>--%> <p class="list-group-item active"> ${question.question} </p> <c:forEach var="feedbackList" items="${feedbackList}"> <c:if test="${feedbackList.qu_id == question.q_id}"> <%-- <c:out value="${feedbackList.daan}"/>--%> <%-- <c:out value="${feedbackList.num_daan}"/> <br>--%> <ul class="list-group"> <li class="list-group-item"> <span class="badge">${feedbackList.num_daan}</span> ${feedbackList.daan} </li> </ul> </c:if> </c:forEach> </c:if> <c:if test="${question.type==3}"> <br> <%-- <c:out value="${question.question}"/><br>--%> <p class="list-group-item active"> ${question.question} </p> <c:forEach var="feedbackList" items="${feedbackList}"> <c:if test="${feedbackList.qu_id == question.q_id}"> <ul class="list-group"> <li class="list-group-item"> ${feedbackList.daan} </li> </ul> </c:if> </c:forEach> </c:if> </c:forEach> <br> <button class="btn btn-primary btn-lg btn-block">返回</button> </body> <script> window.onload=function () { var btu = document.querySelector("button"); btu.addEventListener("click", function () { history.back(); }) } </script> </html>
management.jsp
问卷管理页面
<%-- Created by IntelliJ IDEA. User: 99573 Date: 2020/2/28 Time: 23:09 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <title>问卷管理页面</title> </head> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> <script src="<%=basePath%>js/jquery-1.12.4.js"></script> <script src="<%=basePath%>js/Web_json.js"></script> <body> <table class="table"> <thead class="thead-dark"> <tr> <th scope="col">编号</th> <th scope="col">问题</th> <th scope="col">删除</th> <th scope="col">修改</th> </tr> </thead> <%int i=0; %> <c:forEach var="q" items="${allQuestions}"> <%i++; %> <tr> <td scope="row" class="q_id">${q.q_id}</td> <td><span>${q.question}</span> </td> <td><button class="del btn btn-secondary" >删除</button></td> <td><button class="xiugai btn btn-info" >修改</button></td> </tr> </c:forEach> </table> <div style="text-align: center"> <button class="back_con btn btn-outline-dark" >返回</button> </div> </body> <script> $(function () { $(".del").click(function () { console.log($(this).parent()) // var ids = $("form input").serialize(); var del_q_id = $(this).parent().siblings(":first").text(); console.log(del_q_id) $.ajax({ "url":"management", "type":"get", "data":"id="+del_q_id, "dataType":"text", "success":function(re){ if(re=="true"){ alert("删除成功"); location.reload(); }else { alert("删除失败") } }, "error":function (er) { console.log(er) alert("删除失败") } }) }) $(".back_con").click(function () { history.back(); }) }) </script> </html>
wenjuan.jsp
问卷的页面
<%-- Created by IntelliJ IDEA. User: 99573 Date: 2020/2/26 Time: 14:25 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <head> <title>问卷页面</title> </head> <!-- Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 --> <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 --> <!--[if lt IE 9]> <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script> <![endif]--> <script src="<%=basePath%>js/jquery-1.12.4.js"></script> <body> <h1 style="text-align: center">许昌电气青年志愿者协会内部调查问卷</h1> <p style="text-align: center"> 亲爱的同学,你们好!此次问卷调查是基于了解青协的客观情况以及对相关方面进行改善的切实需求。<br> 您的见解和意见对于协会未来的发展至关重要,细心阅读各部分的提示语,认真填写问卷,真实地反映您的观点、看法。<br> 本问卷匿名填写,我们将对问卷严格保密。感谢您的积极参与和支持! <br> </p> <hr> <form class="panel panel-default questionF"> <%-- <div class="panel panel-default">--%> <%-- <div class="panel-heading">Panel heading without title</div>--%> <%-- <div class="panel-body">--%> <%-- Panel content--%> <%-- </div>--%> <%-- </div>--%> <% int i = -1; %> <c:forEach var="question" items="${questions}" step="1"> <% i ++; %> <c:if test="${question.type==2}"> <br> <div class="panel-heading" style="background: aquamarine">${question.question}</div> <%-- <c:out value="${question.question}"/><br>--%> <div class="panel-body"> <input type="hidden" name="feedbacks[<%=i%>].question" value="${question.question}"> <input type="hidden" name="feedbacks[<%=i%>].qu_id" value="${question.q_id}"> <input type="hidden" name="feedbacks[<%=i%>].q_type" value="${question.type}"> <input type="checkbox" name="feedbacks[<%=i%>].daan" value="${question.a}"> <c:out value="${question.a}"/> <br> <input type="checkbox" name="feedbacks[<%=i%>].daan" value="${question.b}"><c:out value="${question.b}"/><br> <input type="checkbox" name="feedbacks[<%=i%>].daan" value="${question.c}"><c:out value="${question.c}"/><br> <input type="checkbox" name="feedbacks[<%=i%>].daan" value="${question.d}"> <c:out value="${question.d}"/><br> </div> </c:if> <c:if test="${question.type==1}"><br> <div class="panel-heading" style="background: aquamarine">${question.question}</div> <%-- <c:out value="${question.question}"/> <br>--%> <div class="panel-body"> <input type="hidden" name="feedbacks[<%=i%>].question" value="${question.question}"> <input type="hidden" name="feedbacks[<%=i%>].qu_id" value="${question.q_id}"> <input type="hidden" name="feedbacks[<%=i%>].q_type" value="${question.type}"> <input type="radio" name="feedbacks[<%=i%>].daan"value="${question.a}"><c:out value="${question.a}"/><br> <input type="radio" name="feedbacks[<%=i%>].daan"value="${question.b}"><c:out value="${question.b}"/><br> <input type="radio" name="feedbacks[<%=i%>].daan"value="${question.c}"><c:out value="${question.c}"/><br> <input type="radio" name="feedbacks[<%=i%>].daan"value="${question.d}"><c:out value="${question.d}"/><br> </div> </c:if> <c:if test="${question.type==3}"><br> <%-- <c:out value="${question.question}"/><br>--%> <div class="panel-heading" style="background: aquamarine">${question.question}</div> <input type="hidden" name="feedbacks[<%=i%>].question" value="${question.question}"> <input type="hidden" name="feedbacks[<%=i%>].qu_id" value="${question.q_id}"> <input type="hidden" name="feedbacks[<%=i%>].q_type" value="${question.type}"> <div class="panel-body"> <input type="text" name="feedbacks[<%=i%>].daan"><br> </div> </c:if> </c:forEach> </form> <div style="text-align: center"> <button class="dt_finsh btn btn-primary">提交</button> <button class="back_con btn btn-info">返回</button> </div> </body> <script > $(function () { $(".dt_finsh").click(function () { var jg = $(".questionF :input").serialize(); // var jg1 = $(".questionF").parseForm(); // var jg = $(".questionF").serializeObject(); console.log(jg); // console.log(jg1); $.ajax({ "url":"question_jg", "type":"post", // {"feedbacks":JSON.stringify(jg)} "data":jg, "dataType":"text", "success":function(re){ if(re=="true"){ alert("提交成功"); }else { alert("提交失败"); } }, "error":function (er) { console.log(er) alert("提交失败") } }) }) $(".back_con").click(function () { location.assign("<%=basePath%>controller.jsp") }) }) </script> </html>