├── .classpath ├── .project ├── .settings ├── .jsdtscope ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.core.prefs ├── org.eclipse.m2e.core.prefs ├── org.eclipse.wst.common.component ├── org.eclipse.wst.common.project.facet.core.xml ├── org.eclipse.wst.jsdt.ui.superType.container ├── org.eclipse.wst.jsdt.ui.superType.name └── org.eclipse.wst.validation.prefs ├── .springBeans ├── README.md ├── db_project3.sql ├── pom.xml ├── project3.txt ├── result-image ├── 1.png ├── 10.png ├── 11.png ├── 12.png ├── 13.png ├── 14.png ├── 15.png ├── 16.png ├── 17.png ├── 18.png ├── 19.png ├── 2.png ├── 20.png ├── 21.png ├── 22.png ├── 23.png ├── 24.png ├── 25.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png ├── 7.png ├── 8.png └── 9.png ├── src ├── main │ ├── java │ │ └── com │ │ │ └── wantao │ │ │ ├── bean │ │ │ ├── Student.java │ │ │ ├── Subject.java │ │ │ └── Teacher.java │ │ │ ├── controller │ │ │ └── Project3Handler.java │ │ │ ├── dao │ │ │ ├── StudentMapper.java │ │ │ ├── SubjectMapper.java │ │ │ └── TeacherMapper.java │ │ │ └── daoImpl │ │ │ ├── StudentDaoImpl.java │ │ │ ├── SubjectDaoImpl.java │ │ │ └── TeacherDaoImpl.java │ ├── resources │ │ ├── mappers │ │ │ ├── StudentMapper.xml │ │ │ ├── SubjectMapper.xml │ │ │ └── TeacherMapper.xml │ │ ├── mybatis-config.xml │ │ └── spring │ │ │ ├── spring.xml │ │ │ └── springmvc.xml │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ ├── controlSubject.jsp │ │ ├── countdown-timer │ │ ├── css │ │ │ └── style.css │ │ └── js │ │ │ └── index.js │ │ ├── exam.jsp │ │ ├── findStudent.jsp │ │ ├── findSubject.jsp │ │ ├── findSubjectResult.jsp │ │ ├── images │ │ ├── 004.jpg │ │ └── 12.png │ │ ├── index.jsp │ │ ├── index │ │ ├── animations.css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap.css │ │ ├── cloud.png │ │ ├── font-awesome.css │ │ ├── jquery-1.8.3.min.js.下载 │ │ ├── logo.png │ │ └── style.css │ │ ├── login.jsp │ │ ├── loginError.jsp │ │ ├── register.jsp │ │ ├── score.jsp │ │ ├── showSubject.jsp │ │ ├── static │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.js │ │ └── jquery-3.2.1.min.js │ │ ├── studentIndex.jsp │ │ ├── success.jsp │ │ ├── teacherIndex.jsp │ │ ├── updateStudent.jsp │ │ └── updateSubject.jsp └── test │ └── java │ └── com │ └── wantao │ └── test │ ├── StudentDaoImplTest.java │ ├── SubjectDaoImplTest.java │ └── TeacherDaoImplTest.java └── target ├── classes ├── com │ └── wantao │ │ ├── bean │ │ ├── Student.class │ │ ├── Subject.class │ │ └── Teacher.class │ │ ├── controller │ │ └── Project3Handler.class │ │ ├── dao │ │ ├── StudentMapper.class │ │ ├── SubjectMapper.class │ │ └── TeacherMapper.class │ │ └── daoImpl │ │ ├── StudentDaoImpl.class │ │ ├── SubjectDaoImpl.class │ │ └── TeacherDaoImpl.class ├── mappers │ ├── StudentMapper.xml │ ├── SubjectMapper.xml │ └── TeacherMapper.xml ├── mybatis-config.xml └── spring │ ├── spring.xml │ └── springmvc.xml ├── m2e-wtp └── web-resources │ └── META-INF │ ├── MANIFEST.MF │ └── maven │ └── com.wantao │ └── project3 │ ├── pom.properties │ └── pom.xml └── test-classes └── com └── wantao └── test ├── StudentDaoImplTest.class ├── SubjectDaoImplTest.class └── TeacherDaoImplTest.class /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | project3 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.wst.common.project.facet.core.builder 15 | 16 | 17 | 18 | 19 | org.eclipse.m2e.core.maven2Builder 20 | 21 | 22 | 23 | 24 | org.eclipse.wst.validation.validationbuilder 25 | 26 | 27 | 28 | 29 | org.springframework.ide.eclipse.core.springbuilder 30 | 31 | 32 | 33 | 34 | org.springframework.ide.eclipse.boot.validation.springbootbuilder 35 | 36 | 37 | 38 | 39 | 40 | org.springframework.ide.eclipse.core.springnature 41 | org.eclipse.jem.workbench.JavaEMFNature 42 | org.eclipse.wst.common.modulecore.ModuleCoreNature 43 | org.eclipse.jdt.core.javanature 44 | org.eclipse.m2e.core.maven2Nature 45 | org.eclipse.wst.common.project.facet.core.nature 46 | org.eclipse.wst.jsdt.core.jsNature 47 | 48 | 49 | -------------------------------------------------------------------------------- /.settings/.jsdtscope: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/webapp/exam.jsp=UTF-8 3 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 4 | org.eclipse.jdt.core.compiler.compliance=1.5 5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 7 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 8 | org.eclipse.jdt.core.compiler.source=1.5 9 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.project.facet.core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.container: -------------------------------------------------------------------------------- 1 | org.eclipse.wst.jsdt.launching.baseBrowserLibrary -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.name: -------------------------------------------------------------------------------- 1 | Window -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.validation.prefs: -------------------------------------------------------------------------------- 1 | disabled=06target 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /.springBeans: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 6 | 7 | 8 | 9 | 10 | src/main/resources/spring/springmvc.xml 11 | src/main/resources/spring/spring.xml 12 | src/main/resources/mybatis-config.xml 13 | src/main/resources/mappers/StudentMapper.xml 14 | src/main/resources/mappers/TeacherMapper.xml 15 | src/main/resources/mappers/SubjectMapper.xml 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # java-project3 2 | ---------------------------------- 3 | ### 用到的技术: 4 | spring+springmvc+mybatis+jquery
5 | 数据库: 6 | mysql
7 | 分页: 8 | pagehelper 9 | 10 | ### 简单的介绍: 11 | 这是一个在线考试系统,老师能登录后台进行相关操作,学生进行考试,页面做的不是特别好看,主要是熟悉crud的一些操作和框架的整合. 12 | 13 | ### 遇到的一些问题:
14 | 1.在配置好ssm环境后启动报错:```org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactoryBean' defined in class path resource [spring/spring.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [spring/mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: The setting is not known. Make sure you spelled it correctly (case sensitive). 15 | ```
答:原因是因为mybatis-config中有setting写错了,我多写了一个``````(不知道什么时候手抽了) 16 |

2.StudentDaoImpl单元测试时,student这个bean在xml中配置了但在单元测试时一直为空: 17 |
答:https://stackoverflow.com/questions/50626457/i-defined-a-bean-in-spring-xml-and-i-want-to-use-the-bean-in-the-java-code-by-us 18 |

3.判断单选框是否被选中以及获得其中的值: 19 |
答:http://www.jb51.net/article/64141.htm 20 |

4.mybatis报错:```org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='subjectTitle', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 21 | ```
答:报错是说参数有错误,我的select语句是这么写的``````,但是这么写在mybatis中是不对的,http://w6513017.iteye.com/blog/1512761 22 |

5.从数据库中随机的查数据: 23 | http://www.jb51.net/article/42229.htm 24 |

6.试卷页面我本来是想分页做的,但是我查询的时候就是用的limit,它分页时也是用的limit,就变成了```select * from tb_subject limit 20 limt 10```这样就报错了,不知道怎么办
25 | ### 能够改进的地方: 26 | 1.学生注册时忘记做验证了,你不填也能够注册进去。(最后检验的时候才发现,那为什么不改呢???因为我懒,嘤嘤嘤)
27 | 2.所有的验证都只是前端验证,其实应该要前后端都要验证,最少也要后端验证。(那为什么不进行后端验证呢???...嘤嘤嘤)
28 | 3.拓展性不够好,很多地方都写死了,就比如老师不能修改考试时间
29 | 4.没有过滤特殊字符,没有限制输入的格式长度.
30 | 能够改进的地方太多了,就不一一列举了...
31 | ### 做的比较好的地方: 32 | 1.架构分成了四层:①表现层②业务逻辑层③持久层④数据库层,写代码时思路就比较清晰.
33 | 2.修改试题 增加试题 删除试题 都是用的同一个success.jsp通过``````实现. 34 | 3.这次不像java-project2那样自己写的分页,而是用的刘增辉大神写的pagehelper,真的简单多了. 35 | 36 | 37 | 38 | ### 项目截图 39 | 40 | #### 0.项目目录 41 | 42 | 43 | #### 1.首页 44 | 45 | 46 | #### 2.注册页面 47 | 48 | 49 | 50 | #### 3.管理员登录 51 | 52 | 53 | #### 4.管理员登录首页 54 | 55 | 56 | #### 5.导入试题 57 | 58 | 59 | 60 | #### 6.管理试题 61 | 62 | 63 | 64 | 65 | 66 | #### 7.查看试题 67 | 68 | 69 | #### 8.查看试题 70 | 71 | 72 | 73 | #### 9.管理学生 74 | 75 | 76 | 77 | 78 | 79 | #### 10.学生登录 80 | 81 | 82 | #### 11.学生首页 83 | 84 | 85 | #### 12.学生考试界面 86 | 87 | 88 | #### 13.自动得出分数界面 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /db_project3.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Navicat MySQL Data Transfer 3 | 4 | Source Server : mysql 5 | Source Server Version : 50717 6 | Source Host : localhost:3306 7 | Source Database : db_project3 8 | 9 | Target Server Type : MYSQL 10 | Target Server Version : 50717 11 | File Encoding : 65001 12 | 13 | Date: 2018-06-10 21:14:18 14 | */ 15 | 16 | SET FOREIGN_KEY_CHECKS=0; 17 | 18 | -- ---------------------------- 19 | -- Table structure for tb_student 20 | -- ---------------------------- 21 | DROP TABLE IF EXISTS `tb_student`; 22 | CREATE TABLE `tb_student` ( 23 | `studentId` varchar(255) NOT NULL COMMENT '学生编号', 24 | `studentName` varchar(255) DEFAULT NULL COMMENT '学生姓名', 25 | `password` varchar(255) DEFAULT NULL COMMENT '学生密码', 26 | `score` int(11) DEFAULT NULL COMMENT '学生成绩', 27 | `sclass` varchar(255) DEFAULT NULL COMMENT '班级,与关键字class重名,所以叫sclass', 28 | PRIMARY KEY (`studentId`) 29 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 30 | 31 | -- ---------------------------- 32 | -- Records of tb_student 33 | -- ---------------------------- 34 | INSERT INTO `tb_student` VALUES ('161003530106', '万涛999', '123', null, '德泰1613'); 35 | INSERT INTO `tb_student` VALUES ('161003530107', '万涛', '1234', null, '德泰1613'); 36 | INSERT INTO `tb_student` VALUES ('161003530108', '万涛', '1234', null, '德泰1613'); 37 | INSERT INTO `tb_student` VALUES ('161003530109', '万涛', '1234', null, '德泰1613'); 38 | INSERT INTO `tb_student` VALUES ('161003530110', '万涛', '1234', null, '德泰1613'); 39 | INSERT INTO `tb_student` VALUES ('161003530111', '万涛', '1234', null, '德泰1613'); 40 | INSERT INTO `tb_student` VALUES ('161003530113', '万涛', '1234', null, '德泰1613'); 41 | INSERT INTO `tb_student` VALUES ('161003530114', '万涛', '1234', null, '德泰1613'); 42 | INSERT INTO `tb_student` VALUES ('161003530115', '万涛', '1234', null, '德泰1613'); 43 | INSERT INTO `tb_student` VALUES ('161003530116', '万涛', '1234', null, '德泰1613'); 44 | INSERT INTO `tb_student` VALUES ('161003530117', '万涛', '1234', null, '德泰1613'); 45 | INSERT INTO `tb_student` VALUES ('161003530118', '万涛', '1234', null, '德泰1613'); 46 | INSERT INTO `tb_student` VALUES ('161003530119', '万涛', '1234', null, '德泰1613'); 47 | INSERT INTO `tb_student` VALUES ('161003530120', '万涛', '1234', null, '德泰1613'); 48 | INSERT INTO `tb_student` VALUES ('161003530999', '张三', '123', null, '德泰1613'); 49 | 50 | -- ---------------------------- 51 | -- Table structure for tb_subject 52 | -- ---------------------------- 53 | DROP TABLE IF EXISTS `tb_subject`; 54 | CREATE TABLE `tb_subject` ( 55 | `subjectId` int(11) NOT NULL AUTO_INCREMENT COMMENT '试题编号', 56 | `subjectTitle` varchar(255) DEFAULT NULL COMMENT '试题题目', 57 | `subjectOptionA` varchar(255) DEFAULT NULL COMMENT '试题选项', 58 | `subjectOptionB` varchar(255) DEFAULT NULL, 59 | `subjectOptionC` varchar(255) DEFAULT NULL, 60 | `subjectOptionD` varchar(255) DEFAULT NULL, 61 | `subjectAnswer` varchar(255) DEFAULT NULL COMMENT '正确答案', 62 | `subjectParse` text COMMENT '试题解析', 63 | PRIMARY KEY (`subjectId`) 64 | ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8; 65 | 66 | -- ---------------------------- 67 | -- Records of tb_subject 68 | -- ---------------------------- 69 | INSERT INTO `tb_subject` VALUES ('2', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '好简单,嘤嘤嘤嘤'); 70 | INSERT INTO `tb_subject` VALUES ('3', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 71 | INSERT INTO `tb_subject` VALUES ('4', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '这是第四个啦,嘤嘤嘤嘤'); 72 | INSERT INTO `tb_subject` VALUES ('5', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 73 | INSERT INTO `tb_subject` VALUES ('6', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 74 | INSERT INTO `tb_subject` VALUES ('7', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 75 | INSERT INTO `tb_subject` VALUES ('8', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 76 | INSERT INTO `tb_subject` VALUES ('9', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 77 | INSERT INTO `tb_subject` VALUES ('10', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 78 | INSERT INTO `tb_subject` VALUES ('11', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 79 | INSERT INTO `tb_subject` VALUES ('12', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 80 | INSERT INTO `tb_subject` VALUES ('13', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 81 | INSERT INTO `tb_subject` VALUES ('14', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 82 | INSERT INTO `tb_subject` VALUES ('15', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 83 | INSERT INTO `tb_subject` VALUES ('16', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 84 | INSERT INTO `tb_subject` VALUES ('17', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 85 | INSERT INTO `tb_subject` VALUES ('18', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 86 | INSERT INTO `tb_subject` VALUES ('20', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 87 | INSERT INTO `tb_subject` VALUES ('21', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 88 | INSERT INTO `tb_subject` VALUES ('22', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 89 | INSERT INTO `tb_subject` VALUES ('23', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 90 | INSERT INTO `tb_subject` VALUES ('24', '十进制8转化为二进制是()', '1000', '1010', '1100', '1001', 'A', '嘤嘤嘤嘤嘤嘤嘤'); 91 | INSERT INTO `tb_subject` VALUES ('27', '谁是世界上最帅的人', '吴彦祖1', '吴彦祖2', '吴彦祖3', '万涛', 'D', '就是这样,嘤嘤嘤'); 92 | INSERT INTO `tb_subject` VALUES ('28', '十进制8转化为二进制是()', '01000', '1010', '11111', '1233', 'A', ''); 93 | INSERT INTO `tb_subject` VALUES ('29', '十进制8转化为二进制是()', '01000', '11000', '11111', '10111', 'A', '嘤嘤嘤'); 94 | 95 | -- ---------------------------- 96 | -- Table structure for tb_teacher 97 | -- ---------------------------- 98 | DROP TABLE IF EXISTS `tb_teacher`; 99 | CREATE TABLE `tb_teacher` ( 100 | `teacherId` varchar(255) NOT NULL COMMENT '老师编号', 101 | `password` varchar(255) DEFAULT NULL COMMENT '密码', 102 | PRIMARY KEY (`teacherId`) 103 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 104 | 105 | -- ---------------------------- 106 | -- Records of tb_teacher 107 | -- ---------------------------- 108 | INSERT INTO `tb_teacher` VALUES ('1', '123'); 109 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.wantao 5 | project3 6 | war 7 | 0.0.1-SNAPSHOT 8 | project3 Maven Webapp 9 | http://maven.apache.org 10 | 11 | 12 | junit 13 | junit 14 | 3.8.1 15 | test 16 | 17 | 18 | 19 | 20 | 21 | org.springframework 22 | spring-context 23 | 4.1.7.RELEASE 24 | 25 | 26 | 27 | org.springframework 28 | spring-core 29 | 4.1.7.RELEASE 30 | 31 | 32 | 33 | org.springframework 34 | spring-beans 35 | 4.1.7.RELEASE 36 | 37 | 38 | 39 | org.springframework 40 | spring-test 41 | 4.1.7.RELEASE 42 | 43 | 44 | 45 | 46 | 47 | org.springframework 48 | spring-jdbc 49 | 4.1.7.RELEASE 50 | 51 | 52 | 53 | 54 | 55 | org.springframework 56 | spring-tx 57 | 4.1.7.RELEASE 58 | 59 | 60 | 61 | 62 | 63 | org.springframework 64 | spring-aop 65 | 4.1.7.RELEASE 66 | 67 | 68 | 69 | 70 | 71 | 72 | org.springframework 73 | spring-web 74 | 4.1.7.RELEASE 75 | 76 | 77 | 78 | org.springframework 79 | spring-webmvc 80 | 4.1.7.RELEASE 81 | 82 | 83 | 84 | 85 | 86 | org.mybatis 87 | mybatis 88 | 3.3.0 89 | 90 | 91 | 92 | org.mybatis 93 | mybatis-spring 94 | 1.2.3 95 | 96 | 97 | 98 | 99 | 100 | mysql 101 | mysql-connector-java 102 | 5.1.37 103 | 104 | 105 | 106 | com.alibaba 107 | druid 108 | 1.1.0 109 | 110 | 111 | 112 | 113 | 114 | jstl 115 | jstl 116 | 1.2 117 | 118 | 119 | 120 | taglibs 121 | standard 122 | 1.1.2 123 | 124 | 125 | 126 | 127 | com.github.pagehelper 128 | pagehelper 129 | 5.0.0 130 | 131 | 132 | 133 | 134 | project3 135 | 136 | 137 | -------------------------------------------------------------------------------- /project3.txt: -------------------------------------------------------------------------------- 1 | 1.在配置好ssm环境后启动报错:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactoryBean' defined in class path resource [spring/spring.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [spring/mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: The setting is not known. Make sure you spelled it correctly (case sensitive). 2 | 答:原因是因为mybatis-config中有setting写错了,我多写了一个(不知道什么时候手抽了) 3 | 2.StudentDaoImpl单元测试时,student这个bean在xml中配置了但在单元测试时一直为空: 4 | 答:https://stackoverflow.com/questions/50626457/i-defined-a-bean-in-spring-xml-and-i-want-to-use-the-bean-in-the-java-code-by-us 5 | 3.判断单选框是否被选中以及获得其中的值: 6 | 答:http://www.jb51.net/article/64141.htm 7 | 4.mybatis报错:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='subjectTitle', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 8 | 答:报错是说参数有错误,我的select语句是这么写的:,但是这么写在mybatis中是不对的,http://w6513017.iteye.com/blog/1512761 9 | 5.从数据库中随机的查数据: 10 | http://www.jb51.net/article/42229.htm 11 | 6.试卷页面我本来是想分页做的,但是我查询的时候就是用的limit,它分页时也是用的limit,这样就报错了,不知道怎么办 -------------------------------------------------------------------------------- /result-image/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/1.png -------------------------------------------------------------------------------- /result-image/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/10.png -------------------------------------------------------------------------------- /result-image/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/11.png -------------------------------------------------------------------------------- /result-image/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/12.png -------------------------------------------------------------------------------- /result-image/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/13.png -------------------------------------------------------------------------------- /result-image/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/14.png -------------------------------------------------------------------------------- /result-image/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/15.png -------------------------------------------------------------------------------- /result-image/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/16.png -------------------------------------------------------------------------------- /result-image/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/17.png -------------------------------------------------------------------------------- /result-image/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/18.png -------------------------------------------------------------------------------- /result-image/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/19.png -------------------------------------------------------------------------------- /result-image/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/2.png -------------------------------------------------------------------------------- /result-image/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/20.png -------------------------------------------------------------------------------- /result-image/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/21.png -------------------------------------------------------------------------------- /result-image/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/22.png -------------------------------------------------------------------------------- /result-image/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/23.png -------------------------------------------------------------------------------- /result-image/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/24.png -------------------------------------------------------------------------------- /result-image/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/25.png -------------------------------------------------------------------------------- /result-image/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/3.png -------------------------------------------------------------------------------- /result-image/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/4.png -------------------------------------------------------------------------------- /result-image/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/5.png -------------------------------------------------------------------------------- /result-image/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/6.png -------------------------------------------------------------------------------- /result-image/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/7.png -------------------------------------------------------------------------------- /result-image/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/8.png -------------------------------------------------------------------------------- /result-image/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/result-image/9.png -------------------------------------------------------------------------------- /src/main/java/com/wantao/bean/Student.java: -------------------------------------------------------------------------------- 1 | package com.wantao.bean; 2 | 3 | public class Student { 4 | private String studentId; 5 | private String studentName; 6 | private String password; 7 | private Integer score; 8 | private String sclass;//class 9 | public String getStudentId() { 10 | return studentId; 11 | } 12 | public void setStudentId(String studentId) { 13 | this.studentId = studentId; 14 | } 15 | public String getStudentName() { 16 | return studentName; 17 | } 18 | public void setStudentName(String studentName) { 19 | this.studentName = studentName; 20 | } 21 | public String getPassword() { 22 | return password; 23 | } 24 | public void setPassword(String password) { 25 | this.password = password; 26 | } 27 | public Integer getScore() { 28 | return score; 29 | } 30 | public void setScore(Integer score) { 31 | this.score = score; 32 | } 33 | public String getSclass() { 34 | return sclass; 35 | } 36 | public void setSclass(String sclass) { 37 | this.sclass = sclass; 38 | } 39 | @Override 40 | public String toString() { 41 | return "Student [studentId=" + studentId + ", studentName=" + studentName + ", password=" + password + ", score=" 42 | + score + ", sclass=" + sclass + "]"; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/bean/Subject.java: -------------------------------------------------------------------------------- 1 | package com.wantao.bean; 2 | 3 | public class Subject { 4 | private Integer subjectId; 5 | private String subjectTitle; 6 | private String subjectOptionA; 7 | private String subjectOptionB; 8 | private String subjectOptionC; 9 | private String subjectOptionD; 10 | private String subjectAnswer; 11 | private String subjectParse; 12 | 13 | public Integer getSubjectId() { 14 | return subjectId; 15 | } 16 | public void setSubjectId(Integer subjectId) { 17 | this.subjectId = subjectId; 18 | } 19 | public String getSubjectTitle() { 20 | return subjectTitle; 21 | } 22 | public void setSubjectTitle(String subjectTitle) { 23 | this.subjectTitle = subjectTitle; 24 | } 25 | public String getSubjectOptionA() { 26 | return subjectOptionA; 27 | } 28 | public void setSubjectOptionA(String subjectOptionA) { 29 | this.subjectOptionA = subjectOptionA; 30 | } 31 | public String getSubjectOptionB() { 32 | return subjectOptionB; 33 | } 34 | public void setSubjectOptionB(String subjectOptionB) { 35 | this.subjectOptionB = subjectOptionB; 36 | } 37 | public String getSubjectOptionC() { 38 | return subjectOptionC; 39 | } 40 | public void setSubjectOptionC(String subjectOptionC) { 41 | this.subjectOptionC = subjectOptionC; 42 | } 43 | public String getSubjectOptionD() { 44 | return subjectOptionD; 45 | } 46 | public void setSubjectOptionD(String subjectOptionD) { 47 | this.subjectOptionD = subjectOptionD; 48 | } 49 | public String getSubjectAnswer() { 50 | return subjectAnswer; 51 | } 52 | public void setSubjectAnswer(String subjectAnswer) { 53 | this.subjectAnswer = subjectAnswer; 54 | } 55 | public String getSubjectParse() { 56 | return subjectParse; 57 | } 58 | public void setSubjectParse(String subjectParse) { 59 | this.subjectParse = subjectParse; 60 | } 61 | @Override 62 | public String toString() { 63 | return "Subject [subjectId=" + subjectId + ", subjectTitle=" + subjectTitle + ", subjectOptionA=" 64 | + subjectOptionA + ", subjectOptionB=" + subjectOptionB + ", subjectOptionC=" + subjectOptionC 65 | + ", subjectOptionD=" + subjectOptionD + ", subjectAnswer=" + subjectAnswer + ", subjectParse=" 66 | + subjectParse + "]"; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/bean/Teacher.java: -------------------------------------------------------------------------------- 1 | package com.wantao.bean; 2 | 3 | public class Teacher { 4 | private String teacherId; 5 | private String password; 6 | public String getTeacherId() { 7 | return teacherId; 8 | } 9 | public void setTeacherId(String teacherId) { 10 | this.teacherId = teacherId; 11 | } 12 | public String getPassword() { 13 | return password; 14 | } 15 | public void setPassword(String password) { 16 | this.password = password; 17 | } 18 | @Override 19 | public String toString() { 20 | return "Teacher [teacherId=" + teacherId + ", password=" + password + "]"; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/controller/Project3Handler.java: -------------------------------------------------------------------------------- 1 | package com.wantao.controller; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpSession; 8 | 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.http.HttpMethod; 11 | import org.springframework.http.HttpRequest; 12 | import org.springframework.stereotype.Controller; 13 | import org.springframework.ui.Model; 14 | import org.springframework.web.bind.annotation.RequestMapping; 15 | import org.springframework.web.bind.annotation.RequestMethod; 16 | import org.springframework.web.bind.annotation.RequestParam; 17 | 18 | import com.github.pagehelper.Page; 19 | import com.github.pagehelper.PageHelper; 20 | import com.github.pagehelper.PageInfo; 21 | import com.wantao.bean.Student; 22 | import com.wantao.bean.Subject; 23 | import com.wantao.bean.Teacher; 24 | import com.wantao.daoImpl.StudentDaoImpl; 25 | import com.wantao.daoImpl.SubjectDaoImpl; 26 | import com.wantao.daoImpl.TeacherDaoImpl; 27 | 28 | @Controller 29 | public class Project3Handler { 30 | @Autowired 31 | StudentDaoImpl studentDaoImpl; 32 | @Autowired 33 | TeacherDaoImpl teacherDaoImpl; 34 | @Autowired 35 | SubjectDaoImpl subjectDaoImpl; 36 | @Autowired 37 | PageHelper pageHelper; 38 | 39 | /* 40 | * 1.登录注册逻辑 41 | * */ 42 | 43 | @RequestMapping(value="/register",method=RequestMethod.POST) 44 | public String register(Student student) {// 可以直接通过javaBean对象传递 45 | studentDaoImpl.addStudent(student); 46 | return "index"; 47 | } 48 | 49 | @RequestMapping(value="/login",method=RequestMethod.POST) 50 | public String login(String userId, String password, String role) { 51 | if (role.equals("student")) {//学生登录 52 | Student student = studentDaoImpl.findStudentByStudentId(userId); 53 | if (student == null || !(student.getPassword().equals(password))) { 54 | return "loginError"; 55 | } 56 | return "redirect:studentIndex.jsp"; 57 | } 58 | if(role.equals("teacher")) {//老师登录 59 | Teacher teacher=teacherDaoImpl.findTeacherById(userId); 60 | if (teacher == null || !(teacher.getPassword().equals(password))) { 61 | return "loginError"; 62 | } 63 | return "teacherIndex"; 64 | } 65 | return "redirect:login.jsp"; 66 | } 67 | 68 | /* 69 | * 2.老师后台管理逻辑 70 | * */ 71 | 72 | @RequestMapping("/addSubject") 73 | public String addSubject(Subject subject,HttpSession session) { 74 | session.setAttribute("url","/addSubject"); 75 | subjectDaoImpl.addSubject(subject); 76 | return "redirect:success.jsp"; 77 | 78 | } 79 | @RequestMapping("/controlSubject") 80 | public String controlSubject(@RequestParam(value="pn",defaultValue="1") Integer pn,HttpSession session) { 81 | int pageSize=10; 82 | pageHelper.startPage(pn, pageSize); 83 | //只有startPage后面的第一条select才会被分页之后的需要再次startPage 84 | Listsubjects=subjectDaoImpl.findAllSubject(); 85 | Listids=subjectDaoImpl.findAllSubjectId(); 86 | PageInfo pageInfo=new PageInfo(subjects);//没想明白这个subjects怎么在spring.xml中得到,就直接new了 87 | session.setAttribute("PageInfo",pageInfo); 88 | session.setAttribute("ids",ids); 89 | return "redirect:controlSubject.jsp"; 90 | } 91 | @RequestMapping("/showSubject") 92 | public String showSubject(@RequestParam(value="num",defaultValue="1")int num,HttpSession session) { 93 | Subject subject=subjectDaoImpl.findSubjectById(num); 94 | if(subject==null) { 95 | return "controlSubject"; 96 | } 97 | session.setAttribute("subject", subject); 98 | return "redirect:showSubject.jsp"; 99 | } 100 | @RequestMapping(value="/beforeUpdateSubject") 101 | public String updateSubject(@RequestParam(value="num",defaultValue="1")int num,HttpSession session) { 102 | Subject subject=subjectDaoImpl.findSubjectById(num); 103 | if(subject==null) { 104 | return "controlSubject"; 105 | } 106 | session.setAttribute("subject", subject); 107 | return "redirect:updateSubject.jsp"; 108 | } 109 | @RequestMapping("/updateSubject") 110 | public String updateSubject(@RequestParam(value="num",defaultValue="1")int num,Subject subject,HttpSession session) { 111 | subject.setSubjectId(num); 112 | subjectDaoImpl.updateSubject(subject); 113 | session.setAttribute("url", "/updateSubject"); 114 | return "redirect:success.jsp"; 115 | } 116 | @RequestMapping("/deleteSubject") 117 | public String deleteSubject(@RequestParam(value="num",defaultValue="1")int num,HttpSession session) { 118 | subjectDaoImpl.deleteSubject(num); 119 | session.setAttribute("url","/deleteSubject"); 120 | return "redirect:success.jsp"; 121 | } 122 | @RequestMapping(value="/findSubject",method=RequestMethod.POST) 123 | public String findSubject(String subjectTitle,@RequestParam(value="pn",defaultValue="1")int pn,HttpSession session) { 124 | int pageSize=10; 125 | pageHelper.startPage(pn, pageSize); 126 | Listsubjects=subjectDaoImpl.findSubjectBySubjectTitle(subjectTitle); 127 | Listids=subjectDaoImpl.findAllSubjectId(); 128 | PageInfo pageInfo=new PageInfo(subjects); 129 | session.setAttribute("PageInfo",pageInfo); 130 | session.setAttribute("ids",ids); 131 | return "redirect:findSubjectResult.jsp"; 132 | } 133 | @RequestMapping(value="/findStudent") 134 | public String findStudent(@RequestParam(value="pn",defaultValue="1")int pn,HttpSession session) { 135 | int pageSize=10; 136 | pageHelper.startPage(pn, pageSize); 137 | Liststudents=studentDaoImpl.findAllStudent(); 138 | Listids=studentDaoImpl.findAllStudentId(); 139 | PageInfo pageInfo=new PageInfo(students); 140 | session.setAttribute("PageInfo",pageInfo); 141 | session.setAttribute("ids",ids); 142 | return "redirect:findStudent.jsp"; 143 | } 144 | @RequestMapping("/beforeUpdateStudent") 145 | public String beforeUpdateStudent(@RequestParam("num")String num,HttpSession session) { 146 | Student student=studentDaoImpl.findStudentByStudentId(num); 147 | session.setAttribute("student",student); 148 | return "redirect:updateStudent.jsp"; 149 | } 150 | @RequestMapping("/updateStudent") 151 | public String updateStudent(@RequestParam("num")String num,HttpSession session,Student student) { 152 | student.setStudentId(num); 153 | studentDaoImpl.updateStudent(student); 154 | session.setAttribute("url","/updateStudent"); 155 | return "redirect:success.jsp"; 156 | } 157 | @RequestMapping("/deleteStudent") 158 | public String deleteStudent(@RequestParam("num")String num,HttpSession session) { 159 | studentDaoImpl.deleteStudent(num); 160 | session.setAttribute("url","/deleteStudent"); 161 | return "redirect:success.jsp"; 162 | } 163 | 164 | /* 165 | * 3.学生后台管理逻辑 166 | * */ 167 | @RequestMapping("/exam") 168 | public String exam(@RequestParam(value="pn",defaultValue="1")int num ,HttpSession session) { 169 | int pageSize=10; 170 | Listsubjects=subjectDaoImpl.randomFindSubject(); 171 | ListsubjectIds=new ArrayList(); 172 | for(Subject subject:subjects) { 173 | subjectIds.add(subject.getSubjectId()); 174 | } 175 | session.setAttribute("subjects",subjects); 176 | session.setAttribute("subjectIds", subjectIds); 177 | return "redirect:exam.jsp"; 178 | } 179 | @RequestMapping(value="/getScore",method=RequestMethod.POST) 180 | public String getScore(HttpServletRequest request,HttpSession session) { 181 | int score=0; 182 | ListsubjectIds=(List) session.getAttribute("subjectIds"); 183 | List userAnswers=new ArrayList(); 184 | List subjectAnswers=new ArrayList(); 185 | for(int i=0;i<20;i++) {//获取用户选择 186 | userAnswers.add(request.getParameter("subjectOption-"+subjectIds.get(i))); 187 | } 188 | for(int i=0;i<20;i++) {//从数据库中获取答案 189 | subjectAnswers.add(subjectDaoImpl.findSubjectById(subjectIds.get(i)).getSubjectAnswer()); 190 | } 191 | for(int i=0;i<20;i++) { 192 | if((userAnswers.get(i)).equals(subjectAnswers.get(i))) { 193 | score+=5; 194 | } 195 | else { 196 | score+=0; 197 | } 198 | } 199 | session.setAttribute("score",score); 200 | return "redirect:score.jsp"; 201 | 202 | } 203 | 204 | } 205 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/dao/StudentMapper.java: -------------------------------------------------------------------------------- 1 | package com.wantao.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.wantao.bean.Student; 6 | 7 | public interface StudentMapper { 8 | void addStudent(Student studnet); 9 | Student findStudentByStudentId(String studentId); 10 | ListfindAllStudent(); 11 | ListfindAllStudentId(); 12 | void updateStudent(Student student); 13 | void deleteStudent(String studentId); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/dao/SubjectMapper.java: -------------------------------------------------------------------------------- 1 | package com.wantao.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.wantao.bean.Subject; 6 | 7 | public interface SubjectMapper { 8 | void addSubject(Subject subject); 9 | 10 | List findAllSubject(); 11 | 12 | Subject findSubjectById(int subjectId); 13 | 14 | List findAllSubjectId(); 15 | 16 | void updateSubject(Subject subject); 17 | 18 | void deleteSubject(int subjectId); 19 | 20 | ListfindSubjectBySubjectTitle(String subjectTitle); 21 | 22 | ListrandomFindSubject(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/dao/TeacherMapper.java: -------------------------------------------------------------------------------- 1 | package com.wantao.dao; 2 | 3 | import com.wantao.bean.Teacher; 4 | 5 | public interface TeacherMapper { 6 | Teacher findTeacherById(String teacherId); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/daoImpl/StudentDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.wantao.daoImpl; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.wantao.bean.Student; 9 | import com.wantao.dao.StudentMapper; 10 | @Service 11 | public class StudentDaoImpl implements StudentMapper { 12 | @Autowired 13 | StudentMapper studentMapper; 14 | public void addStudent(Student student) { 15 | studentMapper.addStudent(student); 16 | } 17 | public Student findStudentByStudentId(String studentId) { 18 | return studentMapper.findStudentByStudentId(studentId); 19 | } 20 | public List findAllStudent() { 21 | return studentMapper.findAllStudent(); 22 | } 23 | public List findAllStudentId() { 24 | return studentMapper.findAllStudentId(); 25 | } 26 | public void updateStudent(Student student) { 27 | studentMapper.updateStudent(student); 28 | } 29 | public void deleteStudent(String studentId) { 30 | studentMapper.deleteStudent(studentId); 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/daoImpl/SubjectDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.wantao.daoImpl; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.wantao.bean.Subject; 9 | import com.wantao.dao.SubjectMapper; 10 | 11 | @Service 12 | public class SubjectDaoImpl implements SubjectMapper { 13 | @Autowired 14 | SubjectMapper subjectMapper; 15 | 16 | public void addSubject(Subject subject) { 17 | subjectMapper.addSubject(subject); 18 | } 19 | 20 | public List findAllSubject() { 21 | return subjectMapper.findAllSubject(); 22 | } 23 | 24 | public Subject findSubjectById(int subjectId) { 25 | return subjectMapper.findSubjectById(subjectId); 26 | } 27 | 28 | public List findAllSubjectId() { 29 | return subjectMapper.findAllSubjectId(); 30 | } 31 | 32 | public void updateSubject(Subject subject) { 33 | subjectMapper.updateSubject(subject); 34 | } 35 | 36 | public void deleteSubject(int subjectId) { 37 | subjectMapper.deleteSubject(subjectId); 38 | } 39 | 40 | public List findSubjectBySubjectTitle(String subjectTitle) { 41 | return subjectMapper.findSubjectBySubjectTitle(subjectTitle); 42 | } 43 | 44 | public List randomFindSubject() { 45 | return subjectMapper.randomFindSubject(); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/wantao/daoImpl/TeacherDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.wantao.daoImpl; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.stereotype.Service; 5 | 6 | import com.wantao.bean.Teacher; 7 | import com.wantao.dao.TeacherMapper; 8 | @Service 9 | public class TeacherDaoImpl implements TeacherMapper { 10 | @Autowired 11 | TeacherMapper teacherMapper; 12 | public Teacher findTeacherById(String teacherId) { 13 | return teacherMapper.findTeacherById(teacherId); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/resources/mappers/StudentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | 16 | update tb_student set studentName=#{studentName},password=#{password},score=#{score},sclass=#{sclass} where studentId=#{studentId} 17 | 18 | 19 | delete from tb_student where studentId=#{studentId} 20 | 21 | -------------------------------------------------------------------------------- /src/main/resources/mappers/SubjectMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | insert into 5 | tb_subject(subjectTitle,subjectOptionA,subjectOptionB,subjectOptionC,subjectOptionD,subjectAnswer,subjectParse) 6 | values(#{subjectTitle},#{subjectOptionA},#{subjectOptionB},#{subjectOptionC},#{subjectOptionD},#{subjectAnswer},#{subjectParse}) 7 | 8 | 11 | 14 | 17 | 20 | 23 | 24 | update tb_subject set subjectTitle=#{subjectTitle},subjectOptionA=#{subjectOptionA},subjectOptionB=#{subjectOptionB},subjectOptionC=#{subjectOptionC},subjectOptionD=#{subjectOptionD},subjectAnswer=#{subjectAnswer},subjectParse=#{subjectParse} where subjectId=#{subjectId} 25 | 26 | 27 | delete from tb_subject where subjectId=#{subjectId} 28 | 29 | -------------------------------------------------------------------------------- /src/main/resources/mappers/TeacherMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/main/resources/spring/spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /src/main/resources/spring/springmvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | Archetype Created Web Application 7 | 8 | 9 | 10 | 11 | contextConfigLocation 12 | classpath:spring/spring.xml 13 | 14 | 15 | 16 | 17 | org.springframework.web.context.ContextLoaderListener 18 | 19 | 20 | 21 | 22 | 24 | 25 | springDispatcherServlet 26 | org.springframework.web.servlet.DispatcherServlet 27 | 28 | contextConfigLocation 29 | classpath:spring/springmvc.xml 30 | 31 | 1 32 | 33 | 34 | 35 | 36 | springDispatcherServlet 37 | / 38 | 39 | 40 | 41 | 42 | CharacterEncodingFilter 43 | org.springframework.web.filter.CharacterEncodingFilter 44 | 45 | encoding 46 | utf-8 47 | 48 | 49 | ForceEncoding 50 | true 51 | 52 | 53 | 54 | CharacterEncodingFilter 55 | /* 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/main/webapp/controlSubject.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | Control Subject 9 | 10 | 11 | 12 | 29 | 45 | 46 | 47 | 48 | 82 | 83 | 84 |
85 | 91 |
92 |
93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 |
试题编号试题标题正确答案查看试题更新试题删除试题
${subject.subjectId }${subject.subjectTitle}${subject.subjectAnswer }
117 |
总共有${PageInfo.pages}页${PageInfo.total}条记录,当前为第${PageInfo.pageNum}页
118 |
119 | 130 |
131 | 132 | -------------------------------------------------------------------------------- /src/main/webapp/countdown-timer/css/style.css: -------------------------------------------------------------------------------- 1 | body{ 2 | font: normal 13px/20px Arial, Helvetica, sans-serif; word-wrap:break-word; 3 | background: #fff; 4 | padding-top: 100px 5 | } 6 | 7 | .countdown-label { 8 | font: thin 15px Arial, sans-serif; 9 | color: #65584c; 10 | text-align: center; 11 | text-transform: uppercase; 12 | display: inline-block; 13 | letter-spacing: 2px; 14 | margin-top: 9px 15 | } 16 | #countdown{ 17 | box-shadow: 0 1px 2px 0 rgba(1, 1, 1, 0.4); 18 | width: 240px; 19 | height: 96px; 20 | text-align: center; 21 | background: #f1f1f1; 22 | 23 | border-radius: 5px; 24 | 25 | margin: auto; 26 | 27 | } 28 | 29 | 30 | 31 | #countdown #tiles{ 32 | color: #fff; 33 | position: relative; 34 | z-index: 1; 35 | text-shadow: 1px 1px 0px #ccc; 36 | display: inline-block; 37 | font-family: Arial, sans-serif; 38 | text-align: center; 39 | 40 | padding: 20px; 41 | border-radius: 5px 5px 0 0; 42 | font-size: 48px; 43 | font-weight: thin; 44 | display: block; 45 | 46 | } 47 | 48 | .color-full { 49 | background: #53bb74; 50 | } 51 | .color-half { 52 | background: #ebc85d; 53 | } 54 | .color-empty { 55 | background: #e5554e; 56 | } 57 | 58 | #countdown #tiles > span{ 59 | width: 70px; 60 | max-width: 70px; 61 | 62 | padding: 18px 0; 63 | position: relative; 64 | } 65 | 66 | 67 | 68 | 69 | 70 | #countdown .labels{ 71 | width: 100%; 72 | height: 25px; 73 | text-align: center; 74 | position: absolute; 75 | bottom: 8px; 76 | } 77 | 78 | #countdown .labels li{ 79 | width: 102px; 80 | font: bold 15px 'Droid Sans', Arial, sans-serif; 81 | color: #f47321; 82 | text-shadow: 1px 1px 0px #000; 83 | text-align: center; 84 | text-transform: uppercase; 85 | display: inline-block; 86 | } -------------------------------------------------------------------------------- /src/main/webapp/countdown-timer/js/index.js: -------------------------------------------------------------------------------- 1 | var minutes = $( '#set-time' ).val(); 2 | 3 | var target_date = new Date().getTime() + ((minutes * 60 ) * 1000); // set the countdown date 4 | var time_limit = ((minutes * 60 ) * 1000); 5 | //set actual timer 6 | setTimeout( 7 | function() 8 | { 9 | //这里写时间停止后的代码 10 | }, time_limit ); 11 | 12 | var days, hours, minutes, seconds; // variables for time units 13 | 14 | var countdown = document.getElementById("tiles"); // get tag element 15 | 16 | getCountdown(); 17 | 18 | setInterval(function () { getCountdown(); }, 1000); 19 | 20 | function getCountdown(){ 21 | 22 | // find the amount of "seconds" between now and target 23 | var current_date = new Date().getTime(); 24 | var seconds_left = (target_date - current_date) / 1000; 25 | 26 | if ( seconds_left >= 0 ) { 27 | console.log(time_limit); 28 | if ( (seconds_left * 1000 ) < ( time_limit / 2 ) ) { 29 | $( '#tiles' ).removeClass('color-full'); 30 | $( '#tiles' ).addClass('color-half'); 31 | 32 | } 33 | if ( (seconds_left * 1000 ) < ( time_limit / 4 ) ) { 34 | $( '#tiles' ).removeClass('color-half'); 35 | $( '#tiles' ).addClass('color-empty'); 36 | } 37 | 38 | days = pad( parseInt(seconds_left / 86400) ); 39 | seconds_left = seconds_left % 86400; 40 | 41 | hours = pad( parseInt(seconds_left / 3600) ); 42 | seconds_left = seconds_left % 3600; 43 | 44 | minutes = pad( parseInt(seconds_left / 60) ); 45 | seconds = pad( parseInt( seconds_left % 60 ) ); 46 | 47 | // format countdown string + set tag value 48 | countdown.innerHTML = "" + hours + ":" + minutes + ":" + seconds + ""; 49 | 50 | 51 | 52 | } 53 | 54 | 55 | 56 | } 57 | 58 | function pad(n) { 59 | return (n < 10 ? '0' : '') + n; 60 | } -------------------------------------------------------------------------------- /src/main/webapp/exam.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | Exam 9 | 10 | 11 | 12 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 87 | 88 | 89 |
90 |
91 | 端正考风,严肃考纪,振奋精神,考出水平 92 |
93 |
距离考试结束还有:
94 |
95 |
96 | 98 | 99 |
100 |
101 |
102 |
103 | 广 104 | 105 |
106 | 告 107 | 108 |
109 | 位 110 | 111 |
112 | 招 113 | 114 |
115 | 租 116 | 117 |
118 |
119 |
120 | 广 121 | 122 |
123 | 告 124 | 125 |
126 | 位 127 | 128 |
129 | 招 130 | 131 |
132 | 租 133 | 134 |
135 |
136 |
137 |
138 | 139 | ${subject.subjectTitle} 140 |
141 | 142 | ${subject.subjectOptionA}       145 | ${subject.subjectOptionB}       148 | ${subject.subjectOptionC}       151 | ${subject.subjectOptionD}       154 | 155 |
156 |
157 | 158 |
159 |
160 | 161 | 162 | -------------------------------------------------------------------------------- /src/main/webapp/findStudent.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | Control Subject 9 | 10 | 11 | 12 | 29 | 42 | 43 | 44 | 45 | 79 | 80 | 81 |
82 | 88 |
89 |
90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
学生编号学生姓名学生密码学生成绩学生班级更新学生删除学生
${student.studentId }${student.studentName}${student.password }${student.score }${student.sclass }
116 |
总共有${PageInfo.pages}页${PageInfo.total}条记录,当前为第${PageInfo.pageNum}页
117 |
118 | 129 |
130 | 131 | -------------------------------------------------------------------------------- /src/main/webapp/findSubject.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | Control Subject 9 | 10 | 11 | 12 | 22 | 23 | 24 | 25 | 47 | 48 | 49 |
50 | 56 |
57 |
58 |
请输入你要搜索的题目:
59 |
60 | 61 | -------------------------------------------------------------------------------- /src/main/webapp/findSubjectResult.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | Find Subject Result 9 | 10 | 11 | 12 | 29 | 45 | 46 | 47 | 48 | 82 | 83 | 84 |
85 | 91 |
92 |
93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 |
试题编号试题标题正确答案查看试题更新试题删除试题
${subject.subjectId }${subject.subjectTitle}${subject.subjectAnswer }
117 |
总共有${PageInfo.pages}页${PageInfo.total}条记录,当前为第${PageInfo.pageNum}页
118 |
119 | 130 |
131 | 132 | -------------------------------------------------------------------------------- /src/main/webapp/images/004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/src/main/webapp/images/004.jpg -------------------------------------------------------------------------------- /src/main/webapp/images/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/src/main/webapp/images/12.png -------------------------------------------------------------------------------- /src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | 8 | 10 | Index 11 | 12 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 36 | 37 | 38 | 39 | 40 |
41 | Scoop Themes 42 |
43 | 44 |
45 | Scoop Themes 46 |
47 | 48 |
49 | Scoop Themes 50 |
51 | 52 |
53 | Scoop Themes 54 |
55 | 56 | 57 |
58 |
59 |
60 |
61 | 等一等,马上加载出来

62 | 63 |    64 | 65 |
66 |
67 | 68 |
69 |
70 | 71 |
72 |
73 |
74 |
75 | 76 | -------------------------------------------------------------------------------- /src/main/webapp/index/animations.css: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================== 3 | CSS3 ANIMATION CHEAT SHEET 4 | ============================================== 5 | 6 | Made by Justin Aguilar 7 | 8 | www.justinaguilar.com/animations/ 9 | 10 | Questions, comments, concerns, love letters: 11 | justin@justinaguilar.com 12 | ============================================== 13 | */ 14 | 15 | /* 16 | ============================================== 17 | slideDown 18 | ============================================== 19 | */ 20 | 21 | 22 | .slideDown{ 23 | animation-name: slideDown; 24 | -webkit-animation-name: slideDown; 25 | 26 | animation-duration: 1s; 27 | -webkit-animation-duration: 1s; 28 | 29 | animation-timing-function: ease; 30 | -webkit-animation-timing-function: ease; 31 | 32 | visibility: visible !important; 33 | } 34 | 35 | @keyframes slideDown { 36 | 0% { 37 | transform: translateY(-100%); 38 | } 39 | 50%{ 40 | transform: translateY(8%); 41 | } 42 | 65%{ 43 | transform: translateY(-4%); 44 | } 45 | 80%{ 46 | transform: translateY(4%); 47 | } 48 | 95%{ 49 | transform: translateY(-2%); 50 | } 51 | 100% { 52 | transform: translateY(0%); 53 | } 54 | } 55 | 56 | @-webkit-keyframes slideDown { 57 | 0% { 58 | -webkit-transform: translateY(-100%); 59 | } 60 | 50%{ 61 | -webkit-transform: translateY(8%); 62 | } 63 | 65%{ 64 | -webkit-transform: translateY(-4%); 65 | } 66 | 80%{ 67 | -webkit-transform: translateY(4%); 68 | } 69 | 95%{ 70 | -webkit-transform: translateY(-2%); 71 | } 72 | 100% { 73 | -webkit-transform: translateY(0%); 74 | } 75 | } 76 | 77 | /* 78 | ============================================== 79 | slideUp 80 | ============================================== 81 | */ 82 | 83 | 84 | .slideUp{ 85 | animation-name: slideUp; 86 | -webkit-animation-name: slideUp; 87 | 88 | animation-duration: 1s; 89 | -webkit-animation-duration: 1s; 90 | 91 | animation-timing-function: ease; 92 | -webkit-animation-timing-function: ease; 93 | 94 | visibility: visible !important; 95 | } 96 | 97 | @keyframes slideUp { 98 | 0% { 99 | transform: translateY(100%); 100 | } 101 | 50%{ 102 | transform: translateY(-8%); 103 | } 104 | 65%{ 105 | transform: translateY(4%); 106 | } 107 | 80%{ 108 | transform: translateY(-4%); 109 | } 110 | 95%{ 111 | transform: translateY(2%); 112 | } 113 | 100% { 114 | transform: translateY(0%); 115 | } 116 | } 117 | 118 | @-webkit-keyframes slideUp { 119 | 0% { 120 | -webkit-transform: translateY(100%); 121 | } 122 | 50%{ 123 | -webkit-transform: translateY(-8%); 124 | } 125 | 65%{ 126 | -webkit-transform: translateY(4%); 127 | } 128 | 80%{ 129 | -webkit-transform: translateY(-4%); 130 | } 131 | 95%{ 132 | -webkit-transform: translateY(2%); 133 | } 134 | 100% { 135 | -webkit-transform: translateY(0%); 136 | } 137 | } 138 | 139 | /* 140 | ============================================== 141 | slideLeft 142 | ============================================== 143 | */ 144 | 145 | 146 | .slideLeft{ 147 | animation-name: slideLeft; 148 | -webkit-animation-name: slideLeft; 149 | 150 | animation-duration: 1s; 151 | -webkit-animation-duration: 1s; 152 | 153 | animation-timing-function: ease-in-out; 154 | -webkit-animation-timing-function: ease-in-out; 155 | 156 | visibility: visible !important; 157 | } 158 | 159 | @keyframes slideLeft { 160 | 0% { 161 | transform: translateX(150%); 162 | } 163 | 50%{ 164 | transform: translateX(-8%); 165 | } 166 | 65%{ 167 | transform: translateX(4%); 168 | } 169 | 80%{ 170 | transform: translateX(-4%); 171 | } 172 | 95%{ 173 | transform: translateX(2%); 174 | } 175 | 100% { 176 | transform: translateX(0%); 177 | } 178 | } 179 | 180 | @-webkit-keyframes slideLeft { 181 | 0% { 182 | -webkit-transform: translateX(150%); 183 | } 184 | 50%{ 185 | -webkit-transform: translateX(-8%); 186 | } 187 | 65%{ 188 | -webkit-transform: translateX(4%); 189 | } 190 | 80%{ 191 | -webkit-transform: translateX(-4%); 192 | } 193 | 95%{ 194 | -webkit-transform: translateX(2%); 195 | } 196 | 100% { 197 | -webkit-transform: translateX(0%); 198 | } 199 | } 200 | 201 | /* 202 | ============================================== 203 | slideRight 204 | ============================================== 205 | */ 206 | 207 | 208 | .slideRight{ 209 | animation-name: slideRight; 210 | -webkit-animation-name: slideRight; 211 | 212 | animation-duration: 1s; 213 | -webkit-animation-duration: 1s; 214 | 215 | animation-timing-function: ease-in-out; 216 | -webkit-animation-timing-function: ease-in-out; 217 | 218 | visibility: visible !important; 219 | } 220 | 221 | @keyframes slideRight { 222 | 0% { 223 | transform: translateX(-150%); 224 | } 225 | 50%{ 226 | transform: translateX(8%); 227 | } 228 | 65%{ 229 | transform: translateX(-4%); 230 | } 231 | 80%{ 232 | transform: translateX(4%); 233 | } 234 | 95%{ 235 | transform: translateX(-2%); 236 | } 237 | 100% { 238 | transform: translateX(0%); 239 | } 240 | } 241 | 242 | @-webkit-keyframes slideRight { 243 | 0% { 244 | -webkit-transform: translateX(-150%); 245 | } 246 | 50%{ 247 | -webkit-transform: translateX(8%); 248 | } 249 | 65%{ 250 | -webkit-transform: translateX(-4%); 251 | } 252 | 80%{ 253 | -webkit-transform: translateX(4%); 254 | } 255 | 95%{ 256 | -webkit-transform: translateX(-2%); 257 | } 258 | 100% { 259 | -webkit-transform: translateX(0%); 260 | } 261 | } 262 | 263 | /* 264 | ============================================== 265 | slideExpandUp 266 | ============================================== 267 | */ 268 | 269 | 270 | .slideExpandUp{ 271 | animation-name: slideExpandUp; 272 | -webkit-animation-name: slideExpandUp; 273 | 274 | animation-duration: 1.6s; 275 | -webkit-animation-duration: 1.6s; 276 | 277 | animation-timing-function: ease-out; 278 | -webkit-animation-timing-function: ease -out; 279 | 280 | visibility: visible !important; 281 | } 282 | 283 | @keyframes slideExpandUp { 284 | 0% { 285 | transform: translateY(100%) scaleX(0.5); 286 | } 287 | 30%{ 288 | transform: translateY(-8%) scaleX(0.5); 289 | } 290 | 40%{ 291 | transform: translateY(2%) scaleX(0.5); 292 | } 293 | 50%{ 294 | transform: translateY(0%) scaleX(1.1); 295 | } 296 | 60%{ 297 | transform: translateY(0%) scaleX(0.9); 298 | } 299 | 70% { 300 | transform: translateY(0%) scaleX(1.05); 301 | } 302 | 80%{ 303 | transform: translateY(0%) scaleX(0.95); 304 | } 305 | 90% { 306 | transform: translateY(0%) scaleX(1.02); 307 | } 308 | 100%{ 309 | transform: translateY(0%) scaleX(1); 310 | } 311 | } 312 | 313 | @-webkit-keyframes slideExpandUp { 314 | 0% { 315 | -webkit-transform: translateY(100%) scaleX(0.5); 316 | } 317 | 30%{ 318 | -webkit-transform: translateY(-8%) scaleX(0.5); 319 | } 320 | 40%{ 321 | -webkit-transform: translateY(2%) scaleX(0.5); 322 | } 323 | 50%{ 324 | -webkit-transform: translateY(0%) scaleX(1.1); 325 | } 326 | 60%{ 327 | -webkit-transform: translateY(0%) scaleX(0.9); 328 | } 329 | 70% { 330 | -webkit-transform: translateY(0%) scaleX(1.05); 331 | } 332 | 80%{ 333 | -webkit-transform: translateY(0%) scaleX(0.95); 334 | } 335 | 90% { 336 | -webkit-transform: translateY(0%) scaleX(1.02); 337 | } 338 | 100%{ 339 | -webkit-transform: translateY(0%) scaleX(1); 340 | } 341 | } 342 | 343 | /* 344 | ============================================== 345 | expandUp 346 | ============================================== 347 | */ 348 | 349 | 350 | .expandUp{ 351 | animation-name: expandUp; 352 | -webkit-animation-name: expandUp; 353 | 354 | animation-duration: 0.7s; 355 | -webkit-animation-duration: 0.7s; 356 | 357 | animation-timing-function: ease; 358 | -webkit-animation-timing-function: ease; 359 | 360 | visibility: visible !important; 361 | } 362 | 363 | @keyframes expandUp { 364 | 0% { 365 | transform: translateY(100%) scale(0.6) scaleY(0.5); 366 | } 367 | 60%{ 368 | transform: translateY(-7%) scaleY(1.12); 369 | } 370 | 75%{ 371 | transform: translateY(3%); 372 | } 373 | 100% { 374 | transform: translateY(0%) scale(1) scaleY(1); 375 | } 376 | } 377 | 378 | @-webkit-keyframes expandUp { 379 | 0% { 380 | -webkit-transform: translateY(100%) scale(0.6) scaleY(0.5); 381 | } 382 | 60%{ 383 | -webkit-transform: translateY(-7%) scaleY(1.12); 384 | } 385 | 75%{ 386 | -webkit-transform: translateY(3%); 387 | } 388 | 100% { 389 | -webkit-transform: translateY(0%) scale(1) scaleY(1); 390 | } 391 | } 392 | 393 | /* 394 | ============================================== 395 | fadeIn 396 | ============================================== 397 | */ 398 | 399 | .fadeIn{ 400 | animation-name: fadeIn; 401 | -webkit-animation-name: fadeIn; 402 | 403 | animation-duration: 1.5s; 404 | -webkit-animation-duration: 1.5s; 405 | 406 | animation-timing-function: ease-in-out; 407 | -webkit-animation-timing-function: ease-in-out; 408 | 409 | visibility: visible !important; 410 | } 411 | 412 | @keyframes fadeIn { 413 | 0% { 414 | transform: scale(0); 415 | opacity: 0.0; 416 | } 417 | 60% { 418 | transform: scale(1.1); 419 | } 420 | 80% { 421 | transform: scale(0.9); 422 | opacity: 1; 423 | } 424 | 100% { 425 | transform: scale(1); 426 | opacity: 1; 427 | } 428 | } 429 | 430 | @-webkit-keyframes fadeIn { 431 | 0% { 432 | -webkit-transform: scale(0); 433 | opacity: 0.0; 434 | } 435 | 60% { 436 | -webkit-transform: scale(1.1); 437 | } 438 | 80% { 439 | -webkit-transform: scale(0.9); 440 | opacity: 1; 441 | } 442 | 100% { 443 | -webkit-transform: scale(1); 444 | opacity: 1; 445 | } 446 | } 447 | 448 | /* 449 | ============================================== 450 | expandOpen 451 | ============================================== 452 | */ 453 | 454 | 455 | .expandOpen{ 456 | animation-name: expandOpen; 457 | -webkit-animation-name: expandOpen; 458 | 459 | animation-duration: 1.2s; 460 | -webkit-animation-duration: 1.2s; 461 | 462 | animation-timing-function: ease-out; 463 | -webkit-animation-timing-function: ease-out; 464 | 465 | visibility: visible !important; 466 | } 467 | 468 | @keyframes expandOpen { 469 | 0% { 470 | transform: scale(1.8); 471 | } 472 | 50% { 473 | transform: scale(0.95); 474 | } 475 | 80% { 476 | transform: scale(1.05); 477 | } 478 | 90% { 479 | transform: scale(0.98); 480 | } 481 | 100% { 482 | transform: scale(1); 483 | } 484 | } 485 | 486 | @-webkit-keyframes expandOpen { 487 | 0% { 488 | -webkit-transform: scale(1.8); 489 | } 490 | 50% { 491 | -webkit-transform: scale(0.95); 492 | } 493 | 80% { 494 | -webkit-transform: scale(1.05); 495 | } 496 | 90% { 497 | -webkit-transform: scale(0.98); 498 | } 499 | 100% { 500 | -webkit-transform: scale(1); 501 | } 502 | } 503 | 504 | /* 505 | ============================================== 506 | bigEntrance 507 | ============================================== 508 | */ 509 | 510 | 511 | .bigEntrance{ 512 | animation-name: bigEntrance; 513 | -webkit-animation-name: bigEntrance; 514 | 515 | animation-duration: 1.6s; 516 | -webkit-animation-duration: 1.6s; 517 | 518 | animation-timing-function: ease-out; 519 | -webkit-animation-timing-function: ease-out; 520 | 521 | visibility: visible !important; 522 | } 523 | 524 | @keyframes bigEntrance { 525 | 0% { 526 | transform: scale(0.3) rotate(6deg) translateX(-30%) translateY(30%); 527 | opacity: 0.2; 528 | } 529 | 30% { 530 | transform: scale(1.03) rotate(-2deg) translateX(2%) translateY(-2%); 531 | opacity: 1; 532 | } 533 | 45% { 534 | transform: scale(0.98) rotate(1deg) translateX(0%) translateY(0%); 535 | opacity: 1; 536 | } 537 | 60% { 538 | transform: scale(1.01) rotate(-1deg) translateX(0%) translateY(0%); 539 | opacity: 1; 540 | } 541 | 75% { 542 | transform: scale(0.99) rotate(1deg) translateX(0%) translateY(0%); 543 | opacity: 1; 544 | } 545 | 90% { 546 | transform: scale(1.01) rotate(0deg) translateX(0%) translateY(0%); 547 | opacity: 1; 548 | } 549 | 100% { 550 | transform: scale(1) rotate(0deg) translateX(0%) translateY(0%); 551 | opacity: 1; 552 | } 553 | } 554 | 555 | @-webkit-keyframes bigEntrance { 556 | 0% { 557 | -webkit-transform: scale(0.3) rotate(6deg) translateX(-30%) translateY(30%); 558 | opacity: 0.2; 559 | } 560 | 30% { 561 | -webkit-transform: scale(1.03) rotate(-2deg) translateX(2%) translateY(-2%); 562 | opacity: 1; 563 | } 564 | 45% { 565 | -webkit-transform: scale(0.98) rotate(1deg) translateX(0%) translateY(0%); 566 | opacity: 1; 567 | } 568 | 60% { 569 | -webkit-transform: scale(1.01) rotate(-1deg) translateX(0%) translateY(0%); 570 | opacity: 1; 571 | } 572 | 75% { 573 | -webkit-transform: scale(0.99) rotate(1deg) translateX(0%) translateY(0%); 574 | opacity: 1; 575 | } 576 | 90% { 577 | -webkit-transform: scale(1.01) rotate(0deg) translateX(0%) translateY(0%); 578 | opacity: 1; 579 | } 580 | 100% { 581 | -webkit-transform: scale(1) rotate(0deg) translateX(0%) translateY(0%); 582 | opacity: 1; 583 | } 584 | } 585 | 586 | /* 587 | ============================================== 588 | hatch 589 | ============================================== 590 | */ 591 | 592 | .hatch{ 593 | animation-name: hatch; 594 | -webkit-animation-name: hatch; 595 | 596 | animation-duration: 2s; 597 | -webkit-animation-duration: 2s; 598 | 599 | animation-timing-function: ease-in-out; 600 | -webkit-animation-timing-function: ease-in-out; 601 | 602 | transform-origin: 50% 100%; 603 | -ms-transform-origin: 50% 100%; 604 | -webkit-transform-origin: 50% 100%; 605 | 606 | visibility: visible !important; 607 | } 608 | 609 | @keyframes hatch { 610 | 0% { 611 | transform: rotate(0deg) scaleY(0.6); 612 | } 613 | 20% { 614 | transform: rotate(-2deg) scaleY(1.05); 615 | } 616 | 35% { 617 | transform: rotate(2deg) scaleY(1); 618 | } 619 | 50% { 620 | transform: rotate(-2deg); 621 | } 622 | 65% { 623 | transform: rotate(1deg); 624 | } 625 | 80% { 626 | transform: rotate(-1deg); 627 | } 628 | 100% { 629 | transform: rotate(0deg); 630 | } 631 | } 632 | 633 | @-webkit-keyframes hatch { 634 | 0% { 635 | -webkit-transform: rotate(0deg) scaleY(0.6); 636 | } 637 | 20% { 638 | -webkit-transform: rotate(-2deg) scaleY(1.05); 639 | } 640 | 35% { 641 | -webkit-transform: rotate(2deg) scaleY(1); 642 | } 643 | 50% { 644 | -webkit-transform: rotate(-2deg); 645 | } 646 | 65% { 647 | -webkit-transform: rotate(1deg); 648 | } 649 | 80% { 650 | -webkit-transform: rotate(-1deg); 651 | } 652 | 100% { 653 | -webkit-transform: rotate(0deg); 654 | } 655 | } 656 | 657 | 658 | /* 659 | ============================================== 660 | bounce 661 | ============================================== 662 | */ 663 | 664 | 665 | .bounce{ 666 | animation-name: bounce; 667 | -webkit-animation-name: bounce; 668 | 669 | animation-duration: 1.6s; 670 | -webkit-animation-duration: 1.6s; 671 | 672 | animation-timing-function: ease; 673 | -webkit-animation-timing-function: ease; 674 | 675 | transform-origin: 50% 100%; 676 | -ms-transform-origin: 50% 100%; 677 | -webkit-transform-origin: 50% 100%; 678 | } 679 | 680 | @keyframes bounce { 681 | 0% { 682 | transform: translateY(0%) scaleY(0.6); 683 | } 684 | 60%{ 685 | transform: translateY(-100%) scaleY(1.1); 686 | } 687 | 70%{ 688 | transform: translateY(0%) scaleY(0.95) scaleX(1.05); 689 | } 690 | 80%{ 691 | transform: translateY(0%) scaleY(1.05) scaleX(1); 692 | } 693 | 90%{ 694 | transform: translateY(0%) scaleY(0.95) scaleX(1); 695 | } 696 | 100%{ 697 | transform: translateY(0%) scaleY(1) scaleX(1); 698 | } 699 | } 700 | 701 | @-webkit-keyframes bounce { 702 | 0% { 703 | -webkit-transform: translateY(0%) scaleY(0.6); 704 | } 705 | 60%{ 706 | -webkit-transform: translateY(-100%) scaleY(1.1); 707 | } 708 | 70%{ 709 | -webkit-transform: translateY(0%) scaleY(0.95) scaleX(1.05); 710 | } 711 | 80%{ 712 | -webkit-transform: translateY(0%) scaleY(1.05) scaleX(1); 713 | } 714 | 90%{ 715 | -webkit-transform: translateY(0%) scaleY(0.95) scaleX(1); 716 | } 717 | 100%{ 718 | -webkit-transform: translateY(0%) scaleY(1) scaleX(1); 719 | } 720 | } 721 | 722 | 723 | /* 724 | ============================================== 725 | pulse 726 | ============================================== 727 | */ 728 | 729 | .pulse{ 730 | animation-name: pulse; 731 | -webkit-animation-name: pulse; 732 | 733 | animation-duration: 1.5s; 734 | -webkit-animation-duration: 1.5s; 735 | 736 | animation-iteration-count: infinite; 737 | -webkit-animation-iteration-count: infinite; 738 | } 739 | 740 | @keyframes pulse { 741 | 0% { 742 | transform: scale(0.9); 743 | opacity: 0.7; 744 | } 745 | 50% { 746 | transform: scale(1); 747 | opacity: 1; 748 | } 749 | 100% { 750 | transform: scale(0.9); 751 | opacity: 0.7; 752 | } 753 | } 754 | 755 | @-webkit-keyframes pulse { 756 | 0% { 757 | -webkit-transform: scale(0.95); 758 | opacity: 0.7; 759 | } 760 | 50% { 761 | -webkit-transform: scale(1); 762 | opacity: 1; 763 | } 764 | 100% { 765 | -webkit-transform: scale(0.95); 766 | opacity: 0.7; 767 | } 768 | } 769 | 770 | /* 771 | ============================================== 772 | floating 773 | ============================================== 774 | */ 775 | 776 | .floating{ 777 | animation-name: floating; 778 | -webkit-animation-name: floating; 779 | 780 | animation-duration: 1.5s; 781 | -webkit-animation-duration: 1.5s; 782 | 783 | animation-iteration-count: infinite; 784 | -webkit-animation-iteration-count: infinite; 785 | } 786 | 787 | @keyframes floating { 788 | 0% { 789 | transform: translateY(0%); 790 | } 791 | 50% { 792 | transform: translateY(8%); 793 | } 794 | 100% { 795 | transform: translateY(0%); 796 | } 797 | } 798 | 799 | @-webkit-keyframes floating { 800 | 0% { 801 | -webkit-transform: translateY(0%); 802 | } 803 | 50% { 804 | -webkit-transform: translateY(8%); 805 | } 806 | 100% { 807 | -webkit-transform: translateY(0%); 808 | } 809 | } 810 | 811 | /* 812 | ============================================== 813 | tossing 814 | ============================================== 815 | */ 816 | 817 | .tossing{ 818 | animation-name: tossing; 819 | -webkit-animation-name: tossing; 820 | 821 | animation-duration: 2.5s; 822 | -webkit-animation-duration: 2.5s; 823 | 824 | animation-iteration-count: infinite; 825 | -webkit-animation-iteration-count: infinite; 826 | } 827 | 828 | @keyframes tossing { 829 | 0% { 830 | transform: rotate(-4deg); 831 | } 832 | 50% { 833 | transform: rotate(4deg); 834 | } 835 | 100% { 836 | transform: rotate(-4deg); 837 | } 838 | } 839 | 840 | @-webkit-keyframes tossing { 841 | 0% { 842 | -webkit-transform: rotate(-4deg); 843 | } 844 | 50% { 845 | -webkit-transform: rotate(4deg); 846 | } 847 | 100% { 848 | -webkit-transform: rotate(-4deg); 849 | } 850 | } 851 | 852 | /* 853 | ============================================== 854 | pullUp 855 | ============================================== 856 | */ 857 | 858 | .pullUp{ 859 | animation-name: pullUp; 860 | -webkit-animation-name: pullUp; 861 | 862 | animation-duration: 1.1s; 863 | -webkit-animation-duration: 1.1s; 864 | 865 | animation-timing-function: ease-out; 866 | -webkit-animation-timing-function: ease-out; 867 | 868 | transform-origin: 50% 100%; 869 | -ms-transform-origin: 50% 100%; 870 | -webkit-transform-origin: 50% 100%; 871 | } 872 | 873 | @keyframes pullUp { 874 | 0% { 875 | transform: scaleY(0.1); 876 | } 877 | 40% { 878 | transform: scaleY(1.02); 879 | } 880 | 60% { 881 | transform: scaleY(0.98); 882 | } 883 | 80% { 884 | transform: scaleY(1.01); 885 | } 886 | 100% { 887 | transform: scaleY(0.98); 888 | } 889 | 80% { 890 | transform: scaleY(1.01); 891 | } 892 | 100% { 893 | transform: scaleY(1); 894 | } 895 | } 896 | 897 | @-webkit-keyframes pullUp { 898 | 0% { 899 | -webkit-transform: scaleY(0.1); 900 | } 901 | 40% { 902 | -webkit-transform: scaleY(1.02); 903 | } 904 | 60% { 905 | -webkit-transform: scaleY(0.98); 906 | } 907 | 80% { 908 | -webkit-transform: scaleY(1.01); 909 | } 910 | 100% { 911 | -webkit-transform: scaleY(0.98); 912 | } 913 | 80% { 914 | -webkit-transform: scaleY(1.01); 915 | } 916 | 100% { 917 | -webkit-transform: scaleY(1); 918 | } 919 | } 920 | 921 | /* 922 | ============================================== 923 | pullDown 924 | ============================================== 925 | */ 926 | 927 | .pullDown{ 928 | animation-name: pullDown; 929 | -webkit-animation-name: pullDown; 930 | 931 | animation-duration: 1.1s; 932 | -webkit-animation-duration: 1.1s; 933 | 934 | animation-timing-function: ease-out; 935 | -webkit-animation-timing-function: ease-out; 936 | 937 | transform-origin: 50% 0%; 938 | -ms-transform-origin: 50% 0%; 939 | -webkit-transform-origin: 50% 0%; 940 | } 941 | 942 | @keyframes pullDown { 943 | 0% { 944 | transform: scaleY(0.1); 945 | } 946 | 40% { 947 | transform: scaleY(1.02); 948 | } 949 | 60% { 950 | transform: scaleY(0.98); 951 | } 952 | 80% { 953 | transform: scaleY(1.01); 954 | } 955 | 100% { 956 | transform: scaleY(0.98); 957 | } 958 | 80% { 959 | transform: scaleY(1.01); 960 | } 961 | 100% { 962 | transform: scaleY(1); 963 | } 964 | } 965 | 966 | @-webkit-keyframes pullDown { 967 | 0% { 968 | -webkit-transform: scaleY(0.1); 969 | } 970 | 40% { 971 | -webkit-transform: scaleY(1.02); 972 | } 973 | 60% { 974 | -webkit-transform: scaleY(0.98); 975 | } 976 | 80% { 977 | -webkit-transform: scaleY(1.01); 978 | } 979 | 100% { 980 | -webkit-transform: scaleY(0.98); 981 | } 982 | 80% { 983 | -webkit-transform: scaleY(1.01); 984 | } 985 | 100% { 986 | -webkit-transform: scaleY(1); 987 | } 988 | } 989 | 990 | /* 991 | ============================================== 992 | stretchLeft 993 | ============================================== 994 | */ 995 | 996 | .stretchLeft{ 997 | animation-name: stretchLeft; 998 | -webkit-animation-name: stretchLeft; 999 | 1000 | animation-duration: 1.5s; 1001 | -webkit-animation-duration: 1.5s; 1002 | 1003 | animation-timing-function: ease-out; 1004 | -webkit-animation-timing-function: ease-out; 1005 | 1006 | transform-origin: 100% 0%; 1007 | -ms-transform-origin: 100% 0%; 1008 | -webkit-transform-origin: 100% 0%; 1009 | } 1010 | 1011 | @keyframes stretchLeft { 1012 | 0% { 1013 | transform: scaleX(0.3); 1014 | } 1015 | 40% { 1016 | transform: scaleX(1.02); 1017 | } 1018 | 60% { 1019 | transform: scaleX(0.98); 1020 | } 1021 | 80% { 1022 | transform: scaleX(1.01); 1023 | } 1024 | 100% { 1025 | transform: scaleX(0.98); 1026 | } 1027 | 80% { 1028 | transform: scaleX(1.01); 1029 | } 1030 | 100% { 1031 | transform: scaleX(1); 1032 | } 1033 | } 1034 | 1035 | @-webkit-keyframes stretchLeft { 1036 | 0% { 1037 | -webkit-transform: scaleX(0.3); 1038 | } 1039 | 40% { 1040 | -webkit-transform: scaleX(1.02); 1041 | } 1042 | 60% { 1043 | -webkit-transform: scaleX(0.98); 1044 | } 1045 | 80% { 1046 | -webkit-transform: scaleX(1.01); 1047 | } 1048 | 100% { 1049 | -webkit-transform: scaleX(0.98); 1050 | } 1051 | 80% { 1052 | -webkit-transform: scaleX(1.01); 1053 | } 1054 | 100% { 1055 | -webkit-transform: scaleX(1); 1056 | } 1057 | } 1058 | 1059 | /* 1060 | ============================================== 1061 | stretchRight 1062 | ============================================== 1063 | */ 1064 | 1065 | .stretchRight{ 1066 | animation-name: stretchRight; 1067 | -webkit-animation-name: stretchRight; 1068 | 1069 | animation-duration: 1.5s; 1070 | -webkit-animation-duration: 1.5s; 1071 | 1072 | animation-timing-function: ease-out; 1073 | -webkit-animation-timing-function: ease-out; 1074 | 1075 | transform-origin: 0% 0%; 1076 | -ms-transform-origin: 0% 0%; 1077 | -webkit-transform-origin: 0% 0%; 1078 | } 1079 | 1080 | @keyframes stretchRight { 1081 | 0% { 1082 | transform: scaleX(0.3); 1083 | } 1084 | 40% { 1085 | transform: scaleX(1.02); 1086 | } 1087 | 60% { 1088 | transform: scaleX(0.98); 1089 | } 1090 | 80% { 1091 | transform: scaleX(1.01); 1092 | } 1093 | 100% { 1094 | transform: scaleX(0.98); 1095 | } 1096 | 80% { 1097 | transform: scaleX(1.01); 1098 | } 1099 | 100% { 1100 | transform: scaleX(1); 1101 | } 1102 | } 1103 | 1104 | @-webkit-keyframes stretchRight { 1105 | 0% { 1106 | -webkit-transform: scaleX(0.3); 1107 | } 1108 | 40% { 1109 | -webkit-transform: scaleX(1.02); 1110 | } 1111 | 60% { 1112 | -webkit-transform: scaleX(0.98); 1113 | } 1114 | 80% { 1115 | -webkit-transform: scaleX(1.01); 1116 | } 1117 | 100% { 1118 | -webkit-transform: scaleX(0.98); 1119 | } 1120 | 80% { 1121 | -webkit-transform: scaleX(1.01); 1122 | } 1123 | 100% { 1124 | -webkit-transform: scaleX(1); 1125 | } 1126 | } 1127 | -------------------------------------------------------------------------------- /src/main/webapp/index/bootstrap-theme.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.1.0 (http://getbootstrap.com) 3 | * Copyright 2011-2014 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | /* ==== Google font ==== */ 7 | @import url('http://fonts.googleapis.com/css?family=Lato:400,300,700,900'); 8 | /* === fontawesome === */ 9 | @import url('font-awesome.css'); 10 | 11 | .btn-default, 12 | .btn-primary, 13 | .btn-success, 14 | .btn-info, 15 | .btn-warning, 16 | .btn-danger { 17 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); 18 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); 19 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); 20 | } 21 | .btn-default:active, 22 | .btn-primary:active, 23 | .btn-success:active, 24 | .btn-info:active, 25 | .btn-warning:active, 26 | .btn-danger:active, 27 | .btn-default.active, 28 | .btn-primary.active, 29 | .btn-success.active, 30 | .btn-info.active, 31 | .btn-warning.active, 32 | .btn-danger.active { 33 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 34 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 35 | } 36 | .btn:active, 37 | .btn.active { 38 | background-image: none; 39 | } 40 | .btn-default { 41 | text-shadow: 0 1px 0 #fff; 42 | background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); 43 | background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); 44 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); 45 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 46 | background-repeat: repeat-x; 47 | border-color: #dbdbdb; 48 | border-color: #ccc; 49 | } 50 | .btn-default:hover, 51 | .btn-default:focus { 52 | background-color: #e0e0e0; 53 | background-position: 0 -15px; 54 | } 55 | .btn-default:active, 56 | .btn-default.active { 57 | background-color: #e0e0e0; 58 | border-color: #dbdbdb; 59 | } 60 | .btn-primary { 61 | background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); 62 | background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); 63 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); 64 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 65 | background-repeat: repeat-x; 66 | border-color: #2b669a; 67 | } 68 | .btn-primary:hover, 69 | .btn-primary:focus { 70 | background-color: #2d6ca2; 71 | background-position: 0 -15px; 72 | } 73 | .btn-primary:active, 74 | .btn-primary.active { 75 | background-color: #2d6ca2; 76 | border-color: #2b669a; 77 | } 78 | .btn-success { 79 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); 80 | background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); 81 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); 82 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 83 | background-repeat: repeat-x; 84 | border-color: #3e8f3e; 85 | } 86 | .btn-success:hover, 87 | .btn-success:focus { 88 | background-color: #419641; 89 | background-position: 0 -15px; 90 | } 91 | .btn-success:active, 92 | .btn-success.active { 93 | background-color: #419641; 94 | border-color: #3e8f3e; 95 | } 96 | .btn-info { 97 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); 98 | background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); 99 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); 100 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 101 | background-repeat: repeat-x; 102 | border-color: #28a4c9; 103 | } 104 | .btn-info:hover, 105 | .btn-info:focus { 106 | background-color: #2aabd2; 107 | background-position: 0 -15px; 108 | } 109 | .btn-info:active, 110 | .btn-info.active { 111 | background-color: #2aabd2; 112 | border-color: #28a4c9; 113 | } 114 | .btn-warning { 115 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); 116 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); 117 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); 118 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 119 | background-repeat: repeat-x; 120 | border-color: #e38d13; 121 | } 122 | .btn-warning:hover, 123 | .btn-warning:focus { 124 | background-color: #eb9316; 125 | background-position: 0 -15px; 126 | } 127 | .btn-warning:active, 128 | .btn-warning.active { 129 | background-color: #eb9316; 130 | border-color: #e38d13; 131 | } 132 | .btn-danger { 133 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); 134 | background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); 135 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); 136 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 137 | background-repeat: repeat-x; 138 | border-color: #b92c28; 139 | } 140 | .btn-danger:hover, 141 | .btn-danger:focus { 142 | background-color: #c12e2a; 143 | background-position: 0 -15px; 144 | } 145 | .btn-danger:active, 146 | .btn-danger.active { 147 | background-color: #c12e2a; 148 | border-color: #b92c28; 149 | } 150 | .thumbnail, 151 | .img-thumbnail { 152 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 153 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 154 | } 155 | .dropdown-menu > li > a:hover, 156 | .dropdown-menu > li > a:focus { 157 | background-color: #e8e8e8; 158 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 159 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); 160 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); 161 | background-repeat: repeat-x; 162 | } 163 | .dropdown-menu > .active > a, 164 | .dropdown-menu > .active > a:hover, 165 | .dropdown-menu > .active > a:focus { 166 | background-color: #357ebd; 167 | background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); 168 | background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); 169 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); 170 | background-repeat: repeat-x; 171 | } 172 | .navbar-default { 173 | background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); 174 | background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); 175 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); 176 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 177 | background-repeat: repeat-x; 178 | border-radius: 4px; 179 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); 180 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); 181 | } 182 | .navbar-default .navbar-nav > .active > a { 183 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); 184 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%); 185 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0); 186 | background-repeat: repeat-x; 187 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); 188 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); 189 | } 190 | .navbar-brand, 191 | .navbar-nav > li > a { 192 | text-shadow: 0 1px 0 rgba(255, 255, 255, .25); 193 | } 194 | .navbar-inverse { 195 | background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); 196 | background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); 197 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); 198 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 199 | background-repeat: repeat-x; 200 | } 201 | .navbar-inverse .navbar-nav > .active > a { 202 | background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%); 203 | background-image: linear-gradient(to bottom, #222 0%, #282828 100%); 204 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0); 205 | background-repeat: repeat-x; 206 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); 207 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); 208 | } 209 | .navbar-inverse .navbar-brand, 210 | .navbar-inverse .navbar-nav > li > a { 211 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); 212 | } 213 | .navbar-static-top, 214 | .navbar-fixed-top, 215 | .navbar-fixed-bottom { 216 | border-radius: 0; 217 | } 218 | .alert { 219 | text-shadow: 0 1px 0 rgba(255, 255, 255, .2); 220 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); 221 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); 222 | } 223 | .alert-success { 224 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); 225 | background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); 226 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); 227 | background-repeat: repeat-x; 228 | border-color: #b2dba1; 229 | } 230 | .alert-info { 231 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); 232 | background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); 233 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); 234 | background-repeat: repeat-x; 235 | border-color: #9acfea; 236 | } 237 | .alert-warning { 238 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); 239 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); 240 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); 241 | background-repeat: repeat-x; 242 | border-color: #f5e79e; 243 | } 244 | .alert-danger { 245 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); 246 | background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); 247 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); 248 | background-repeat: repeat-x; 249 | border-color: #dca7a7; 250 | } 251 | .progress { 252 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); 253 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); 254 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); 255 | background-repeat: repeat-x; 256 | } 257 | .progress-bar { 258 | background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); 259 | background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); 260 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); 261 | background-repeat: repeat-x; 262 | } 263 | .progress-bar-success { 264 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); 265 | background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); 266 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); 267 | background-repeat: repeat-x; 268 | } 269 | .progress-bar-info { 270 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); 271 | background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); 272 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); 273 | background-repeat: repeat-x; 274 | } 275 | .progress-bar-warning { 276 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); 277 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); 278 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); 279 | background-repeat: repeat-x; 280 | } 281 | .progress-bar-danger { 282 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); 283 | background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); 284 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); 285 | background-repeat: repeat-x; 286 | } 287 | .list-group { 288 | border-radius: 4px; 289 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 290 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 291 | } 292 | .list-group-item.active, 293 | .list-group-item.active:hover, 294 | .list-group-item.active:focus { 295 | text-shadow: 0 -1px 0 #3071a9; 296 | background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); 297 | background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); 298 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); 299 | background-repeat: repeat-x; 300 | border-color: #3278b3; 301 | } 302 | .panel { 303 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); 304 | box-shadow: 0 1px 2px rgba(0, 0, 0, .05); 305 | } 306 | .panel-default > .panel-heading { 307 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 308 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); 309 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); 310 | background-repeat: repeat-x; 311 | } 312 | .panel-primary > .panel-heading { 313 | background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); 314 | background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); 315 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); 316 | background-repeat: repeat-x; 317 | } 318 | .panel-success > .panel-heading { 319 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); 320 | background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); 321 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); 322 | background-repeat: repeat-x; 323 | } 324 | .panel-info > .panel-heading { 325 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); 326 | background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); 327 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); 328 | background-repeat: repeat-x; 329 | } 330 | .panel-warning > .panel-heading { 331 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); 332 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); 333 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); 334 | background-repeat: repeat-x; 335 | } 336 | .panel-danger > .panel-heading { 337 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); 338 | background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); 339 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); 340 | background-repeat: repeat-x; 341 | } 342 | .well { 343 | background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); 344 | background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); 345 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); 346 | background-repeat: repeat-x; 347 | border-color: #dcdcdc; 348 | -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); 349 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); 350 | } 351 | /*# sourceMappingURL=bootstrap-theme.css.map */ 352 | 353 | /* social icons */ 354 | ul.social-network { 355 | list-style: none; 356 | display: inline; 357 | margin-left:0 !important; 358 | padding: 0; 359 | } 360 | ul.social-network li { 361 | display: inline; 362 | margin: 0 5px; 363 | } 364 | 365 | /* social icons */ 366 | .social-network a.icoRss:hover { 367 | background-color: #F56505; 368 | } 369 | .social-network a.icoFacebook:hover { 370 | background-color:#3B5998; 371 | } 372 | .social-network a.icoTwitter:hover { 373 | background-color:#33ccff; 374 | } 375 | .social-network a.icoGit:hover { 376 | background-color:#829aa8; 377 | } 378 | .social-network a.icoVimeo:hover { 379 | background-color:#0590B8; 380 | } 381 | .social-network a.icoLinkedin:hover { 382 | background-color:#007bb7; 383 | } 384 | .social-network a.icoRss:hover i, .social-network a.icoFacebook:hover i, .social-network a.icoTwitter:hover i, 385 | .social-network a.icoGit:hover i, .social-network a.icoVimeo:hover i, .social-network a.icoLinkedin:hover i { 386 | color:#fff; 387 | } 388 | a.socialIcon:hover, .socialHoverClass { 389 | color:#44BCDD; 390 | } 391 | 392 | .social-circle li a { 393 | display:inline-block; 394 | position:relative; 395 | margin:0 auto 0 auto; 396 | -moz-border-radius:50%; 397 | -webkit-border-radius:50%; 398 | border-radius:50%; 399 | text-align:center; 400 | width: 50px; 401 | height: 50px; 402 | font-size:20px; 403 | } 404 | .social-circle li i { 405 | margin:0; 406 | line-height:50px; 407 | text-align: center; 408 | } 409 | 410 | .social-circle li a:hover i, .triggeredHover { 411 | -moz-transform: rotate(360deg); 412 | -webkit-transform: rotate(360deg); 413 | -ms--transform: rotate(360deg); 414 | transform: rotate(360deg); 415 | -webkit-transition: all 0.2s; 416 | -moz-transition: all 0.2s; 417 | -o-transition: all 0.2s; 418 | -ms-transition: all 0.2s; 419 | transition: all 0.2s; 420 | } 421 | .social-circle i { 422 | color: #fff; 423 | -webkit-transition: all 0.8s; 424 | -moz-transition: all 0.8s; 425 | -o-transition: all 0.8s; 426 | -ms-transition: all 0.8s; 427 | transition: all 0.8s; 428 | } 429 | 430 | 431 | 432 | -------------------------------------------------------------------------------- /src/main/webapp/index/cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/src/main/webapp/index/cloud.png -------------------------------------------------------------------------------- /src/main/webapp/index/font-awesome.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | /* FONT PATH 6 | * -------------------------- */ 7 | @font-face { 8 | font-family: 'FontAwesome'; 9 | src: url('../fonts/fontawesome/fontawesome-webfont.eot?v=4.0.3'); 10 | src: url('../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg'); 11 | font-weight: normal; 12 | font-style: normal; 13 | } 14 | .fa { 15 | display: inline-block; 16 | font-family: FontAwesome; 17 | font-style: normal; 18 | font-weight: normal; 19 | line-height: 1; 20 | -webkit-font-smoothing: antialiased; 21 | -moz-osx-font-smoothing: grayscale; 22 | } 23 | /* makes the font 33% larger relative to the icon container */ 24 | .fa-lg { 25 | font-size: 1.3333333333333333em; 26 | line-height: 0.75em; 27 | vertical-align: -15%; 28 | } 29 | .fa-2x { 30 | font-size: 2em; 31 | } 32 | .fa-3x { 33 | font-size: 3em; 34 | } 35 | .fa-4x { 36 | font-size: 4em; 37 | } 38 | .fa-5x { 39 | font-size: 5em; 40 | } 41 | .fa-fw { 42 | width: 1.2857142857142858em; 43 | text-align: center; 44 | } 45 | .fa-ul { 46 | padding-left: 0; 47 | margin-left: 2.142857142857143em; 48 | list-style-type: none; 49 | } 50 | .fa-ul > li { 51 | position: relative; 52 | } 53 | .fa-li { 54 | position: absolute; 55 | left: -2.142857142857143em; 56 | width: 2.142857142857143em; 57 | top: 0.14285714285714285em; 58 | text-align: center; 59 | } 60 | .fa-li.fa-lg { 61 | left: -1.8571428571428572em; 62 | } 63 | .fa-border { 64 | padding: .2em .25em .15em; 65 | border: solid 0.08em #eeeeee; 66 | border-radius: .1em; 67 | } 68 | .pull-right { 69 | float: right; 70 | } 71 | .pull-left { 72 | float: left; 73 | } 74 | .fa.pull-left { 75 | margin-right: .3em; 76 | } 77 | .fa.pull-right { 78 | margin-left: .3em; 79 | } 80 | .fa-spin { 81 | -webkit-animation: spin 2s infinite linear; 82 | -moz-animation: spin 2s infinite linear; 83 | -o-animation: spin 2s infinite linear; 84 | animation: spin 2s infinite linear; 85 | } 86 | @-moz-keyframes spin { 87 | 0% { 88 | -moz-transform: rotate(0deg); 89 | } 90 | 100% { 91 | -moz-transform: rotate(359deg); 92 | } 93 | } 94 | @-webkit-keyframes spin { 95 | 0% { 96 | -webkit-transform: rotate(0deg); 97 | } 98 | 100% { 99 | -webkit-transform: rotate(359deg); 100 | } 101 | } 102 | @-o-keyframes spin { 103 | 0% { 104 | -o-transform: rotate(0deg); 105 | } 106 | 100% { 107 | -o-transform: rotate(359deg); 108 | } 109 | } 110 | @-ms-keyframes spin { 111 | 0% { 112 | -ms-transform: rotate(0deg); 113 | } 114 | 100% { 115 | -ms-transform: rotate(359deg); 116 | } 117 | } 118 | @keyframes spin { 119 | 0% { 120 | transform: rotate(0deg); 121 | } 122 | 100% { 123 | transform: rotate(359deg); 124 | } 125 | } 126 | .fa-rotate-90 { 127 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 128 | -webkit-transform: rotate(90deg); 129 | -moz-transform: rotate(90deg); 130 | -ms-transform: rotate(90deg); 131 | -o-transform: rotate(90deg); 132 | transform: rotate(90deg); 133 | } 134 | .fa-rotate-180 { 135 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); 136 | -webkit-transform: rotate(180deg); 137 | -moz-transform: rotate(180deg); 138 | -ms-transform: rotate(180deg); 139 | -o-transform: rotate(180deg); 140 | transform: rotate(180deg); 141 | } 142 | .fa-rotate-270 { 143 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 144 | -webkit-transform: rotate(270deg); 145 | -moz-transform: rotate(270deg); 146 | -ms-transform: rotate(270deg); 147 | -o-transform: rotate(270deg); 148 | transform: rotate(270deg); 149 | } 150 | .fa-flip-horizontal { 151 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); 152 | -webkit-transform: scale(-1, 1); 153 | -moz-transform: scale(-1, 1); 154 | -ms-transform: scale(-1, 1); 155 | -o-transform: scale(-1, 1); 156 | transform: scale(-1, 1); 157 | } 158 | .fa-flip-vertical { 159 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); 160 | -webkit-transform: scale(1, -1); 161 | -moz-transform: scale(1, -1); 162 | -ms-transform: scale(1, -1); 163 | -o-transform: scale(1, -1); 164 | transform: scale(1, -1); 165 | } 166 | .fa-stack { 167 | position: relative; 168 | display: inline-block; 169 | width: 2em; 170 | height: 2em; 171 | line-height: 2em; 172 | vertical-align: middle; 173 | } 174 | .fa-stack-1x, 175 | .fa-stack-2x { 176 | position: absolute; 177 | left: 0; 178 | width: 100%; 179 | text-align: center; 180 | } 181 | .fa-stack-1x { 182 | line-height: inherit; 183 | } 184 | .fa-stack-2x { 185 | font-size: 2em; 186 | } 187 | .fa-inverse { 188 | color: #ffffff; 189 | } 190 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen 191 | readers do not read off random characters that represent icons */ 192 | .fa-glass:before { 193 | content: "\f000"; 194 | } 195 | .fa-music:before { 196 | content: "\f001"; 197 | } 198 | .fa-search:before { 199 | content: "\f002"; 200 | } 201 | .fa-envelope-o:before { 202 | content: "\f003"; 203 | } 204 | .fa-heart:before { 205 | content: "\f004"; 206 | } 207 | .fa-star:before { 208 | content: "\f005"; 209 | } 210 | .fa-star-o:before { 211 | content: "\f006"; 212 | } 213 | .fa-user:before { 214 | content: "\f007"; 215 | } 216 | .fa-film:before { 217 | content: "\f008"; 218 | } 219 | .fa-th-large:before { 220 | content: "\f009"; 221 | } 222 | .fa-th:before { 223 | content: "\f00a"; 224 | } 225 | .fa-th-list:before { 226 | content: "\f00b"; 227 | } 228 | .fa-check:before { 229 | content: "\f00c"; 230 | } 231 | .fa-times:before { 232 | content: "\f00d"; 233 | } 234 | .fa-search-plus:before { 235 | content: "\f00e"; 236 | } 237 | .fa-search-minus:before { 238 | content: "\f010"; 239 | } 240 | .fa-power-off:before { 241 | content: "\f011"; 242 | } 243 | .fa-signal:before { 244 | content: "\f012"; 245 | } 246 | .fa-gear:before, 247 | .fa-cog:before { 248 | content: "\f013"; 249 | } 250 | .fa-trash-o:before { 251 | content: "\f014"; 252 | } 253 | .fa-home:before { 254 | content: "\f015"; 255 | } 256 | .fa-file-o:before { 257 | content: "\f016"; 258 | } 259 | .fa-clock-o:before { 260 | content: "\f017"; 261 | } 262 | .fa-road:before { 263 | content: "\f018"; 264 | } 265 | .fa-download:before { 266 | content: "\f019"; 267 | } 268 | .fa-arrow-circle-o-down:before { 269 | content: "\f01a"; 270 | } 271 | .fa-arrow-circle-o-up:before { 272 | content: "\f01b"; 273 | } 274 | .fa-inbox:before { 275 | content: "\f01c"; 276 | } 277 | .fa-play-circle-o:before { 278 | content: "\f01d"; 279 | } 280 | .fa-rotate-right:before, 281 | .fa-repeat:before { 282 | content: "\f01e"; 283 | } 284 | .fa-refresh:before { 285 | content: "\f021"; 286 | } 287 | .fa-list-alt:before { 288 | content: "\f022"; 289 | } 290 | .fa-lock:before { 291 | content: "\f023"; 292 | } 293 | .fa-flag:before { 294 | content: "\f024"; 295 | } 296 | .fa-headphones:before { 297 | content: "\f025"; 298 | } 299 | .fa-volume-off:before { 300 | content: "\f026"; 301 | } 302 | .fa-volume-down:before { 303 | content: "\f027"; 304 | } 305 | .fa-volume-up:before { 306 | content: "\f028"; 307 | } 308 | .fa-qrcode:before { 309 | content: "\f029"; 310 | } 311 | .fa-barcode:before { 312 | content: "\f02a"; 313 | } 314 | .fa-tag:before { 315 | content: "\f02b"; 316 | } 317 | .fa-tags:before { 318 | content: "\f02c"; 319 | } 320 | .fa-book:before { 321 | content: "\f02d"; 322 | } 323 | .fa-bookmark:before { 324 | content: "\f02e"; 325 | } 326 | .fa-print:before { 327 | content: "\f02f"; 328 | } 329 | .fa-camera:before { 330 | content: "\f030"; 331 | } 332 | .fa-font:before { 333 | content: "\f031"; 334 | } 335 | .fa-bold:before { 336 | content: "\f032"; 337 | } 338 | .fa-italic:before { 339 | content: "\f033"; 340 | } 341 | .fa-text-height:before { 342 | content: "\f034"; 343 | } 344 | .fa-text-width:before { 345 | content: "\f035"; 346 | } 347 | .fa-align-left:before { 348 | content: "\f036"; 349 | } 350 | .fa-align-center:before { 351 | content: "\f037"; 352 | } 353 | .fa-align-right:before { 354 | content: "\f038"; 355 | } 356 | .fa-align-justify:before { 357 | content: "\f039"; 358 | } 359 | .fa-list:before { 360 | content: "\f03a"; 361 | } 362 | .fa-dedent:before, 363 | .fa-outdent:before { 364 | content: "\f03b"; 365 | } 366 | .fa-indent:before { 367 | content: "\f03c"; 368 | } 369 | .fa-video-camera:before { 370 | content: "\f03d"; 371 | } 372 | .fa-picture-o:before { 373 | content: "\f03e"; 374 | } 375 | .fa-pencil:before { 376 | content: "\f040"; 377 | } 378 | .fa-map-marker:before { 379 | content: "\f041"; 380 | } 381 | .fa-adjust:before { 382 | content: "\f042"; 383 | } 384 | .fa-tint:before { 385 | content: "\f043"; 386 | } 387 | .fa-edit:before, 388 | .fa-pencil-square-o:before { 389 | content: "\f044"; 390 | } 391 | .fa-share-square-o:before { 392 | content: "\f045"; 393 | } 394 | .fa-check-square-o:before { 395 | content: "\f046"; 396 | } 397 | .fa-arrows:before { 398 | content: "\f047"; 399 | } 400 | .fa-step-backward:before { 401 | content: "\f048"; 402 | } 403 | .fa-fast-backward:before { 404 | content: "\f049"; 405 | } 406 | .fa-backward:before { 407 | content: "\f04a"; 408 | } 409 | .fa-play:before { 410 | content: "\f04b"; 411 | } 412 | .fa-pause:before { 413 | content: "\f04c"; 414 | } 415 | .fa-stop:before { 416 | content: "\f04d"; 417 | } 418 | .fa-forward:before { 419 | content: "\f04e"; 420 | } 421 | .fa-fast-forward:before { 422 | content: "\f050"; 423 | } 424 | .fa-step-forward:before { 425 | content: "\f051"; 426 | } 427 | .fa-eject:before { 428 | content: "\f052"; 429 | } 430 | .fa-chevron-left:before { 431 | content: "\f053"; 432 | } 433 | .fa-chevron-right:before { 434 | content: "\f054"; 435 | } 436 | .fa-plus-circle:before { 437 | content: "\f055"; 438 | } 439 | .fa-minus-circle:before { 440 | content: "\f056"; 441 | } 442 | .fa-times-circle:before { 443 | content: "\f057"; 444 | } 445 | .fa-check-circle:before { 446 | content: "\f058"; 447 | } 448 | .fa-question-circle:before { 449 | content: "\f059"; 450 | } 451 | .fa-info-circle:before { 452 | content: "\f05a"; 453 | } 454 | .fa-crosshairs:before { 455 | content: "\f05b"; 456 | } 457 | .fa-times-circle-o:before { 458 | content: "\f05c"; 459 | } 460 | .fa-check-circle-o:before { 461 | content: "\f05d"; 462 | } 463 | .fa-ban:before { 464 | content: "\f05e"; 465 | } 466 | .fa-arrow-left:before { 467 | content: "\f060"; 468 | } 469 | .fa-arrow-right:before { 470 | content: "\f061"; 471 | } 472 | .fa-arrow-up:before { 473 | content: "\f062"; 474 | } 475 | .fa-arrow-down:before { 476 | content: "\f063"; 477 | } 478 | .fa-mail-forward:before, 479 | .fa-share:before { 480 | content: "\f064"; 481 | } 482 | .fa-expand:before { 483 | content: "\f065"; 484 | } 485 | .fa-compress:before { 486 | content: "\f066"; 487 | } 488 | .fa-plus:before { 489 | content: "\f067"; 490 | } 491 | .fa-minus:before { 492 | content: "\f068"; 493 | } 494 | .fa-asterisk:before { 495 | content: "\f069"; 496 | } 497 | .fa-exclamation-circle:before { 498 | content: "\f06a"; 499 | } 500 | .fa-gift:before { 501 | content: "\f06b"; 502 | } 503 | .fa-leaf:before { 504 | content: "\f06c"; 505 | } 506 | .fa-fire:before { 507 | content: "\f06d"; 508 | } 509 | .fa-eye:before { 510 | content: "\f06e"; 511 | } 512 | .fa-eye-slash:before { 513 | content: "\f070"; 514 | } 515 | .fa-warning:before, 516 | .fa-exclamation-triangle:before { 517 | content: "\f071"; 518 | } 519 | .fa-plane:before { 520 | content: "\f072"; 521 | } 522 | .fa-calendar:before { 523 | content: "\f073"; 524 | } 525 | .fa-random:before { 526 | content: "\f074"; 527 | } 528 | .fa-comment:before { 529 | content: "\f075"; 530 | } 531 | .fa-magnet:before { 532 | content: "\f076"; 533 | } 534 | .fa-chevron-up:before { 535 | content: "\f077"; 536 | } 537 | .fa-chevron-down:before { 538 | content: "\f078"; 539 | } 540 | .fa-retweet:before { 541 | content: "\f079"; 542 | } 543 | .fa-shopping-cart:before { 544 | content: "\f07a"; 545 | } 546 | .fa-folder:before { 547 | content: "\f07b"; 548 | } 549 | .fa-folder-open:before { 550 | content: "\f07c"; 551 | } 552 | .fa-arrows-v:before { 553 | content: "\f07d"; 554 | } 555 | .fa-arrows-h:before { 556 | content: "\f07e"; 557 | } 558 | .fa-bar-chart-o:before { 559 | content: "\f080"; 560 | } 561 | .fa-twitter-square:before { 562 | content: "\f081"; 563 | } 564 | .fa-facebook-square:before { 565 | content: "\f082"; 566 | } 567 | .fa-camera-retro:before { 568 | content: "\f083"; 569 | } 570 | .fa-key:before { 571 | content: "\f084"; 572 | } 573 | .fa-gears:before, 574 | .fa-cogs:before { 575 | content: "\f085"; 576 | } 577 | .fa-comments:before { 578 | content: "\f086"; 579 | } 580 | .fa-thumbs-o-up:before { 581 | content: "\f087"; 582 | } 583 | .fa-thumbs-o-down:before { 584 | content: "\f088"; 585 | } 586 | .fa-star-half:before { 587 | content: "\f089"; 588 | } 589 | .fa-heart-o:before { 590 | content: "\f08a"; 591 | } 592 | .fa-sign-out:before { 593 | content: "\f08b"; 594 | } 595 | .fa-linkedin-square:before { 596 | content: "\f08c"; 597 | } 598 | .fa-thumb-tack:before { 599 | content: "\f08d"; 600 | } 601 | .fa-external-link:before { 602 | content: "\f08e"; 603 | } 604 | .fa-sign-in:before { 605 | content: "\f090"; 606 | } 607 | .fa-trophy:before { 608 | content: "\f091"; 609 | } 610 | .fa-github-square:before { 611 | content: "\f092"; 612 | } 613 | .fa-upload:before { 614 | content: "\f093"; 615 | } 616 | .fa-lemon-o:before { 617 | content: "\f094"; 618 | } 619 | .fa-phone:before { 620 | content: "\f095"; 621 | } 622 | .fa-square-o:before { 623 | content: "\f096"; 624 | } 625 | .fa-bookmark-o:before { 626 | content: "\f097"; 627 | } 628 | .fa-phone-square:before { 629 | content: "\f098"; 630 | } 631 | .fa-twitter:before { 632 | content: "\f099"; 633 | } 634 | .fa-facebook:before { 635 | content: "\f09a"; 636 | } 637 | .fa-github:before { 638 | content: "\f09b"; 639 | } 640 | .fa-unlock:before { 641 | content: "\f09c"; 642 | } 643 | .fa-credit-card:before { 644 | content: "\f09d"; 645 | } 646 | .fa-rss:before { 647 | content: "\f09e"; 648 | } 649 | .fa-hdd-o:before { 650 | content: "\f0a0"; 651 | } 652 | .fa-bullhorn:before { 653 | content: "\f0a1"; 654 | } 655 | .fa-bell:before { 656 | content: "\f0f3"; 657 | } 658 | .fa-certificate:before { 659 | content: "\f0a3"; 660 | } 661 | .fa-hand-o-right:before { 662 | content: "\f0a4"; 663 | } 664 | .fa-hand-o-left:before { 665 | content: "\f0a5"; 666 | } 667 | .fa-hand-o-up:before { 668 | content: "\f0a6"; 669 | } 670 | .fa-hand-o-down:before { 671 | content: "\f0a7"; 672 | } 673 | .fa-arrow-circle-left:before { 674 | content: "\f0a8"; 675 | } 676 | .fa-arrow-circle-right:before { 677 | content: "\f0a9"; 678 | } 679 | .fa-arrow-circle-up:before { 680 | content: "\f0aa"; 681 | } 682 | .fa-arrow-circle-down:before { 683 | content: "\f0ab"; 684 | } 685 | .fa-globe:before { 686 | content: "\f0ac"; 687 | } 688 | .fa-wrench:before { 689 | content: "\f0ad"; 690 | } 691 | .fa-tasks:before { 692 | content: "\f0ae"; 693 | } 694 | .fa-filter:before { 695 | content: "\f0b0"; 696 | } 697 | .fa-briefcase:before { 698 | content: "\f0b1"; 699 | } 700 | .fa-arrows-alt:before { 701 | content: "\f0b2"; 702 | } 703 | .fa-group:before, 704 | .fa-users:before { 705 | content: "\f0c0"; 706 | } 707 | .fa-chain:before, 708 | .fa-link:before { 709 | content: "\f0c1"; 710 | } 711 | .fa-cloud:before { 712 | content: "\f0c2"; 713 | } 714 | .fa-flask:before { 715 | content: "\f0c3"; 716 | } 717 | .fa-cut:before, 718 | .fa-scissors:before { 719 | content: "\f0c4"; 720 | } 721 | .fa-copy:before, 722 | .fa-files-o:before { 723 | content: "\f0c5"; 724 | } 725 | .fa-paperclip:before { 726 | content: "\f0c6"; 727 | } 728 | .fa-save:before, 729 | .fa-floppy-o:before { 730 | content: "\f0c7"; 731 | } 732 | .fa-square:before { 733 | content: "\f0c8"; 734 | } 735 | .fa-bars:before { 736 | content: "\f0c9"; 737 | } 738 | .fa-list-ul:before { 739 | content: "\f0ca"; 740 | } 741 | .fa-list-ol:before { 742 | content: "\f0cb"; 743 | } 744 | .fa-strikethrough:before { 745 | content: "\f0cc"; 746 | } 747 | .fa-underline:before { 748 | content: "\f0cd"; 749 | } 750 | .fa-table:before { 751 | content: "\f0ce"; 752 | } 753 | .fa-magic:before { 754 | content: "\f0d0"; 755 | } 756 | .fa-truck:before { 757 | content: "\f0d1"; 758 | } 759 | .fa-pinterest:before { 760 | content: "\f0d2"; 761 | } 762 | .fa-pinterest-square:before { 763 | content: "\f0d3"; 764 | } 765 | .fa-google-plus-square:before { 766 | content: "\f0d4"; 767 | } 768 | .fa-google-plus:before { 769 | content: "\f0d5"; 770 | } 771 | .fa-money:before { 772 | content: "\f0d6"; 773 | } 774 | .fa-caret-down:before { 775 | content: "\f0d7"; 776 | } 777 | .fa-caret-up:before { 778 | content: "\f0d8"; 779 | } 780 | .fa-caret-left:before { 781 | content: "\f0d9"; 782 | } 783 | .fa-caret-right:before { 784 | content: "\f0da"; 785 | } 786 | .fa-columns:before { 787 | content: "\f0db"; 788 | } 789 | .fa-unsorted:before, 790 | .fa-sort:before { 791 | content: "\f0dc"; 792 | } 793 | .fa-sort-down:before, 794 | .fa-sort-asc:before { 795 | content: "\f0dd"; 796 | } 797 | .fa-sort-up:before, 798 | .fa-sort-desc:before { 799 | content: "\f0de"; 800 | } 801 | .fa-envelope:before { 802 | content: "\f0e0"; 803 | } 804 | .fa-linkedin:before { 805 | content: "\f0e1"; 806 | } 807 | .fa-rotate-left:before, 808 | .fa-undo:before { 809 | content: "\f0e2"; 810 | } 811 | .fa-legal:before, 812 | .fa-gavel:before { 813 | content: "\f0e3"; 814 | } 815 | .fa-dashboard:before, 816 | .fa-tachometer:before { 817 | content: "\f0e4"; 818 | } 819 | .fa-comment-o:before { 820 | content: "\f0e5"; 821 | } 822 | .fa-comments-o:before { 823 | content: "\f0e6"; 824 | } 825 | .fa-flash:before, 826 | .fa-bolt:before { 827 | content: "\f0e7"; 828 | } 829 | .fa-sitemap:before { 830 | content: "\f0e8"; 831 | } 832 | .fa-umbrella:before { 833 | content: "\f0e9"; 834 | } 835 | .fa-paste:before, 836 | .fa-clipboard:before { 837 | content: "\f0ea"; 838 | } 839 | .fa-lightbulb-o:before { 840 | content: "\f0eb"; 841 | } 842 | .fa-exchange:before { 843 | content: "\f0ec"; 844 | } 845 | .fa-cloud-download:before { 846 | content: "\f0ed"; 847 | } 848 | .fa-cloud-upload:before { 849 | content: "\f0ee"; 850 | } 851 | .fa-user-md:before { 852 | content: "\f0f0"; 853 | } 854 | .fa-stethoscope:before { 855 | content: "\f0f1"; 856 | } 857 | .fa-suitcase:before { 858 | content: "\f0f2"; 859 | } 860 | .fa-bell-o:before { 861 | content: "\f0a2"; 862 | } 863 | .fa-coffee:before { 864 | content: "\f0f4"; 865 | } 866 | .fa-cutlery:before { 867 | content: "\f0f5"; 868 | } 869 | .fa-file-text-o:before { 870 | content: "\f0f6"; 871 | } 872 | .fa-building-o:before { 873 | content: "\f0f7"; 874 | } 875 | .fa-hospital-o:before { 876 | content: "\f0f8"; 877 | } 878 | .fa-ambulance:before { 879 | content: "\f0f9"; 880 | } 881 | .fa-medkit:before { 882 | content: "\f0fa"; 883 | } 884 | .fa-fighter-jet:before { 885 | content: "\f0fb"; 886 | } 887 | .fa-beer:before { 888 | content: "\f0fc"; 889 | } 890 | .fa-h-square:before { 891 | content: "\f0fd"; 892 | } 893 | .fa-plus-square:before { 894 | content: "\f0fe"; 895 | } 896 | .fa-angle-double-left:before { 897 | content: "\f100"; 898 | } 899 | .fa-angle-double-right:before { 900 | content: "\f101"; 901 | } 902 | .fa-angle-double-up:before { 903 | content: "\f102"; 904 | } 905 | .fa-angle-double-down:before { 906 | content: "\f103"; 907 | } 908 | .fa-angle-left:before { 909 | content: "\f104"; 910 | } 911 | .fa-angle-right:before { 912 | content: "\f105"; 913 | } 914 | .fa-angle-up:before { 915 | content: "\f106"; 916 | } 917 | .fa-angle-down:before { 918 | content: "\f107"; 919 | } 920 | .fa-desktop:before { 921 | content: "\f108"; 922 | } 923 | .fa-laptop:before { 924 | content: "\f109"; 925 | } 926 | .fa-tablet:before { 927 | content: "\f10a"; 928 | } 929 | .fa-mobile-phone:before, 930 | .fa-mobile:before { 931 | content: "\f10b"; 932 | } 933 | .fa-circle-o:before { 934 | content: "\f10c"; 935 | } 936 | .fa-quote-left:before { 937 | content: "\f10d"; 938 | } 939 | .fa-quote-right:before { 940 | content: "\f10e"; 941 | } 942 | .fa-spinner:before { 943 | content: "\f110"; 944 | } 945 | .fa-circle:before { 946 | content: "\f111"; 947 | } 948 | .fa-mail-reply:before, 949 | .fa-reply:before { 950 | content: "\f112"; 951 | } 952 | .fa-github-alt:before { 953 | content: "\f113"; 954 | } 955 | .fa-folder-o:before { 956 | content: "\f114"; 957 | } 958 | .fa-folder-open-o:before { 959 | content: "\f115"; 960 | } 961 | .fa-smile-o:before { 962 | content: "\f118"; 963 | } 964 | .fa-frown-o:before { 965 | content: "\f119"; 966 | } 967 | .fa-meh-o:before { 968 | content: "\f11a"; 969 | } 970 | .fa-gamepad:before { 971 | content: "\f11b"; 972 | } 973 | .fa-keyboard-o:before { 974 | content: "\f11c"; 975 | } 976 | .fa-flag-o:before { 977 | content: "\f11d"; 978 | } 979 | .fa-flag-checkered:before { 980 | content: "\f11e"; 981 | } 982 | .fa-terminal:before { 983 | content: "\f120"; 984 | } 985 | .fa-code:before { 986 | content: "\f121"; 987 | } 988 | .fa-reply-all:before { 989 | content: "\f122"; 990 | } 991 | .fa-mail-reply-all:before { 992 | content: "\f122"; 993 | } 994 | .fa-star-half-empty:before, 995 | .fa-star-half-full:before, 996 | .fa-star-half-o:before { 997 | content: "\f123"; 998 | } 999 | .fa-location-arrow:before { 1000 | content: "\f124"; 1001 | } 1002 | .fa-crop:before { 1003 | content: "\f125"; 1004 | } 1005 | .fa-code-fork:before { 1006 | content: "\f126"; 1007 | } 1008 | .fa-unlink:before, 1009 | .fa-chain-broken:before { 1010 | content: "\f127"; 1011 | } 1012 | .fa-question:before { 1013 | content: "\f128"; 1014 | } 1015 | .fa-info:before { 1016 | content: "\f129"; 1017 | } 1018 | .fa-exclamation:before { 1019 | content: "\f12a"; 1020 | } 1021 | .fa-superscript:before { 1022 | content: "\f12b"; 1023 | } 1024 | .fa-subscript:before { 1025 | content: "\f12c"; 1026 | } 1027 | .fa-eraser:before { 1028 | content: "\f12d"; 1029 | } 1030 | .fa-puzzle-piece:before { 1031 | content: "\f12e"; 1032 | } 1033 | .fa-microphone:before { 1034 | content: "\f130"; 1035 | } 1036 | .fa-microphone-slash:before { 1037 | content: "\f131"; 1038 | } 1039 | .fa-shield:before { 1040 | content: "\f132"; 1041 | } 1042 | .fa-calendar-o:before { 1043 | content: "\f133"; 1044 | } 1045 | .fa-fire-extinguisher:before { 1046 | content: "\f134"; 1047 | } 1048 | .fa-rocket:before { 1049 | content: "\f135"; 1050 | } 1051 | .fa-maxcdn:before { 1052 | content: "\f136"; 1053 | } 1054 | .fa-chevron-circle-left:before { 1055 | content: "\f137"; 1056 | } 1057 | .fa-chevron-circle-right:before { 1058 | content: "\f138"; 1059 | } 1060 | .fa-chevron-circle-up:before { 1061 | content: "\f139"; 1062 | } 1063 | .fa-chevron-circle-down:before { 1064 | content: "\f13a"; 1065 | } 1066 | .fa-html5:before { 1067 | content: "\f13b"; 1068 | } 1069 | .fa-css3:before { 1070 | content: "\f13c"; 1071 | } 1072 | .fa-anchor:before { 1073 | content: "\f13d"; 1074 | } 1075 | .fa-unlock-alt:before { 1076 | content: "\f13e"; 1077 | } 1078 | .fa-bullseye:before { 1079 | content: "\f140"; 1080 | } 1081 | .fa-ellipsis-h:before { 1082 | content: "\f141"; 1083 | } 1084 | .fa-ellipsis-v:before { 1085 | content: "\f142"; 1086 | } 1087 | .fa-rss-square:before { 1088 | content: "\f143"; 1089 | } 1090 | .fa-play-circle:before { 1091 | content: "\f144"; 1092 | } 1093 | .fa-ticket:before { 1094 | content: "\f145"; 1095 | } 1096 | .fa-minus-square:before { 1097 | content: "\f146"; 1098 | } 1099 | .fa-minus-square-o:before { 1100 | content: "\f147"; 1101 | } 1102 | .fa-level-up:before { 1103 | content: "\f148"; 1104 | } 1105 | .fa-level-down:before { 1106 | content: "\f149"; 1107 | } 1108 | .fa-check-square:before { 1109 | content: "\f14a"; 1110 | } 1111 | .fa-pencil-square:before { 1112 | content: "\f14b"; 1113 | } 1114 | .fa-external-link-square:before { 1115 | content: "\f14c"; 1116 | } 1117 | .fa-share-square:before { 1118 | content: "\f14d"; 1119 | } 1120 | .fa-compass:before { 1121 | content: "\f14e"; 1122 | } 1123 | .fa-toggle-down:before, 1124 | .fa-caret-square-o-down:before { 1125 | content: "\f150"; 1126 | } 1127 | .fa-toggle-up:before, 1128 | .fa-caret-square-o-up:before { 1129 | content: "\f151"; 1130 | } 1131 | .fa-toggle-right:before, 1132 | .fa-caret-square-o-right:before { 1133 | content: "\f152"; 1134 | } 1135 | .fa-euro:before, 1136 | .fa-eur:before { 1137 | content: "\f153"; 1138 | } 1139 | .fa-gbp:before { 1140 | content: "\f154"; 1141 | } 1142 | .fa-dollar:before, 1143 | .fa-usd:before { 1144 | content: "\f155"; 1145 | } 1146 | .fa-rupee:before, 1147 | .fa-inr:before { 1148 | content: "\f156"; 1149 | } 1150 | .fa-cny:before, 1151 | .fa-rmb:before, 1152 | .fa-yen:before, 1153 | .fa-jpy:before { 1154 | content: "\f157"; 1155 | } 1156 | .fa-ruble:before, 1157 | .fa-rouble:before, 1158 | .fa-rub:before { 1159 | content: "\f158"; 1160 | } 1161 | .fa-won:before, 1162 | .fa-krw:before { 1163 | content: "\f159"; 1164 | } 1165 | .fa-bitcoin:before, 1166 | .fa-btc:before { 1167 | content: "\f15a"; 1168 | } 1169 | .fa-file:before { 1170 | content: "\f15b"; 1171 | } 1172 | .fa-file-text:before { 1173 | content: "\f15c"; 1174 | } 1175 | .fa-sort-alpha-asc:before { 1176 | content: "\f15d"; 1177 | } 1178 | .fa-sort-alpha-desc:before { 1179 | content: "\f15e"; 1180 | } 1181 | .fa-sort-amount-asc:before { 1182 | content: "\f160"; 1183 | } 1184 | .fa-sort-amount-desc:before { 1185 | content: "\f161"; 1186 | } 1187 | .fa-sort-numeric-asc:before { 1188 | content: "\f162"; 1189 | } 1190 | .fa-sort-numeric-desc:before { 1191 | content: "\f163"; 1192 | } 1193 | .fa-thumbs-up:before { 1194 | content: "\f164"; 1195 | } 1196 | .fa-thumbs-down:before { 1197 | content: "\f165"; 1198 | } 1199 | .fa-youtube-square:before { 1200 | content: "\f166"; 1201 | } 1202 | .fa-youtube:before { 1203 | content: "\f167"; 1204 | } 1205 | .fa-xing:before { 1206 | content: "\f168"; 1207 | } 1208 | .fa-xing-square:before { 1209 | content: "\f169"; 1210 | } 1211 | .fa-youtube-play:before { 1212 | content: "\f16a"; 1213 | } 1214 | .fa-dropbox:before { 1215 | content: "\f16b"; 1216 | } 1217 | .fa-stack-overflow:before { 1218 | content: "\f16c"; 1219 | } 1220 | .fa-instagram:before { 1221 | content: "\f16d"; 1222 | } 1223 | .fa-flickr:before { 1224 | content: "\f16e"; 1225 | } 1226 | .fa-adn:before { 1227 | content: "\f170"; 1228 | } 1229 | .fa-bitbucket:before { 1230 | content: "\f171"; 1231 | } 1232 | .fa-bitbucket-square:before { 1233 | content: "\f172"; 1234 | } 1235 | .fa-tumblr:before { 1236 | content: "\f173"; 1237 | } 1238 | .fa-tumblr-square:before { 1239 | content: "\f174"; 1240 | } 1241 | .fa-long-arrow-down:before { 1242 | content: "\f175"; 1243 | } 1244 | .fa-long-arrow-up:before { 1245 | content: "\f176"; 1246 | } 1247 | .fa-long-arrow-left:before { 1248 | content: "\f177"; 1249 | } 1250 | .fa-long-arrow-right:before { 1251 | content: "\f178"; 1252 | } 1253 | .fa-apple:before { 1254 | content: "\f179"; 1255 | } 1256 | .fa-windows:before { 1257 | content: "\f17a"; 1258 | } 1259 | .fa-android:before { 1260 | content: "\f17b"; 1261 | } 1262 | .fa-linux:before { 1263 | content: "\f17c"; 1264 | } 1265 | .fa-dribbble:before { 1266 | content: "\f17d"; 1267 | } 1268 | .fa-skype:before { 1269 | content: "\f17e"; 1270 | } 1271 | .fa-foursquare:before { 1272 | content: "\f180"; 1273 | } 1274 | .fa-trello:before { 1275 | content: "\f181"; 1276 | } 1277 | .fa-female:before { 1278 | content: "\f182"; 1279 | } 1280 | .fa-male:before { 1281 | content: "\f183"; 1282 | } 1283 | .fa-gittip:before { 1284 | content: "\f184"; 1285 | } 1286 | .fa-sun-o:before { 1287 | content: "\f185"; 1288 | } 1289 | .fa-moon-o:before { 1290 | content: "\f186"; 1291 | } 1292 | .fa-archive:before { 1293 | content: "\f187"; 1294 | } 1295 | .fa-bug:before { 1296 | content: "\f188"; 1297 | } 1298 | .fa-vk:before { 1299 | content: "\f189"; 1300 | } 1301 | .fa-weibo:before { 1302 | content: "\f18a"; 1303 | } 1304 | .fa-renren:before { 1305 | content: "\f18b"; 1306 | } 1307 | .fa-pagelines:before { 1308 | content: "\f18c"; 1309 | } 1310 | .fa-stack-exchange:before { 1311 | content: "\f18d"; 1312 | } 1313 | .fa-arrow-circle-o-right:before { 1314 | content: "\f18e"; 1315 | } 1316 | .fa-arrow-circle-o-left:before { 1317 | content: "\f190"; 1318 | } 1319 | .fa-toggle-left:before, 1320 | .fa-caret-square-o-left:before { 1321 | content: "\f191"; 1322 | } 1323 | .fa-dot-circle-o:before { 1324 | content: "\f192"; 1325 | } 1326 | .fa-wheelchair:before { 1327 | content: "\f193"; 1328 | } 1329 | .fa-vimeo-square:before { 1330 | content: "\f194"; 1331 | } 1332 | .fa-turkish-lira:before, 1333 | .fa-try:before { 1334 | content: "\f195"; 1335 | } 1336 | .fa-plus-square-o:before { 1337 | content: "\f196"; 1338 | } 1339 | -------------------------------------------------------------------------------- /src/main/webapp/index/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/src/main/webapp/index/logo.png -------------------------------------------------------------------------------- /src/main/webapp/index/style.css: -------------------------------------------------------------------------------- 1 | /* ==== Google font ==== */ 2 | @import url('http://fonts.googleapis.com/css?family=Lato:400,300,700,900'); 3 | 4 | body { 5 | background: #6ac0bd; 6 | font-family: 'Lato', sans-serif; 7 | font-weight: 300; 8 | font-size: 16px; 9 | color: #555; 10 | line-height: 1.6em; 11 | -webkit-font-smoothing: antialiased; 12 | -webkit-overflow-scrolling: touch; 13 | } 14 | 15 | h1, h2, h3, h4, h5, h6 { 16 | font-family: 'Lato', sans-serif; 17 | font-weight: 300; 18 | color: #444; 19 | } 20 | 21 | h1 { 22 | font-size: 40px; 23 | } 24 | 25 | h3 { 26 | font-weight: 400; 27 | } 28 | 29 | h4 { 30 | font-weight: 400; 31 | font-size: 20px; 32 | } 33 | 34 | p { 35 | margin-bottom: 20px; 36 | font-size: 16px; 37 | } 38 | 39 | 40 | a { 41 | color: #ACBAC1; 42 | word-wrap: break-word; 43 | -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; 44 | -moz-transition: color 0.1s ease-in, background 0.1s ease-in; 45 | -ms-transition: color 0.1s ease-in, background 0.1s ease-in; 46 | -o-transition: color 0.1s ease-in, background 0.1s ease-in; 47 | transition: color 0.1s ease-in, background 0.1s ease-in; 48 | } 49 | 50 | a:hover, 51 | a:focus { 52 | color: #4F92AF; 53 | text-decoration: none; 54 | outline: 0; 55 | } 56 | 57 | a:before, 58 | a:after { 59 | -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; 60 | -moz-transition: color 0.1s ease-in, background 0.1s ease-in; 61 | -ms-transition: color 0.1s ease-in, background 0.1s ease-in; 62 | -o-transition: color 0.1s ease-in, background 0.1s ease-in; 63 | transition: color 0.1s ease-in, background 0.1s ease-in; 64 | } 65 | 66 | .alignleft { 67 | text-align: left; 68 | } 69 | .alignright { 70 | text-align: right; 71 | } 72 | 73 | .aligncenter { 74 | text-align: center; 75 | } 76 | .copyrights{ 77 | text-indent:-9999px; 78 | height:0; 79 | line-height:0; 80 | font-size:0; 81 | overflow:hidden; 82 | } 83 | .btn { 84 | display: inline-block; 85 | padding: 10px 20px; 86 | margin-bottom: 0; 87 | font-size: 14px; 88 | font-weight: normal; 89 | line-height: 1.428571429; 90 | text-align: center; 91 | white-space: nowrap; 92 | vertical-align: middle; 93 | cursor: pointer; 94 | -webkit-user-select: none; 95 | -moz-user-select: none; 96 | -ms-user-select: none; 97 | -o-user-select: none; 98 | user-select: none; 99 | background-image: none; 100 | border: 1px solid transparent; 101 | border-radius: 0; 102 | } 103 | 104 | .btn-theme { 105 | color: #fff; 106 | background-color: #4F92AF; 107 | border-color: #4F92AF; 108 | } 109 | .btn-theme:hover { 110 | color: #fff; 111 | background-color: #444; 112 | border-color: #444; 113 | } 114 | form.signup input[type=email] { 115 | height: 42px; 116 | width: 200px; 117 | border-radius: 0; 118 | border: none; 119 | } 120 | form.signup button.btn { 121 | font-weight: 700; 122 | } 123 | form.signup input.form-control:focus { 124 | border-color: #fd680e; 125 | } 126 | 127 | 128 | /* wrapper */ 129 | 130 | #wrapper { 131 | text-align: center; 132 | background: url(../img/main-bg-compressor.jpg) no-repeat center top; 133 | background-attachment: relative; 134 | background-position: center center; 135 | box-sizing:border; 136 | width: 100%; 137 | -webkit-background-size: 100%; 138 | -moz-background-size: 100%; 139 | -o-background-size: 100%; 140 | background-size: 100%; 141 | 142 | -webkit-background-size: cover; 143 | -moz-background-size: cover; 144 | -o-background-size: cover; 145 | background-size: cover; 146 | } 147 | 148 | #wrapper > .container{ 149 | padding-top: 50px; 150 | } 151 | 152 | 153 | 154 | #wrapper h1 { 155 | margin-top: 60px; 156 | margin-bottom: 40px; 157 | color: #fff; 158 | font-size: 45px; 159 | font-weight: 900; 160 | letter-spacing: -1px; 161 | } 162 | 163 | h2.subtitle { 164 | color: #fff; 165 | font-size: 24px; 166 | } 167 | 168 | /* countdown */ 169 | #countdown { 170 | font-size: 48px; 171 | color: #fff; 172 | line-height: 1.1em; 173 | margin: 40px 0 60px; 174 | } 175 | 176 | 177 | /* footer */ 178 | p.copyright { 179 | margin-top: 50px; 180 | color: #fff; 181 | text-align: center; 182 | } 183 | 184 | .cloud{ 185 | position: fixed; 186 | bottom:40px; 187 | left:20px; 188 | } 189 | .cloud.fliped img{ 190 | -moz-transform: scaleX(-1); 191 | -o-transform: scaleX(-1); 192 | -webkit-transform: scaleX(-1); 193 | transform: scaleX(-1); 194 | filter: FlipH; 195 | -ms-filter: "FlipH"; 196 | } 197 | .cloud.pos1{ 198 | right:20px; 199 | left:auto; 200 | bottom: 70px; 201 | } 202 | .cloud.pos1 img{ 203 | width:100px; 204 | } 205 | .cloud.pos2{ 206 | bottom: 150px; 207 | right:50px; 208 | left:auto; 209 | } 210 | .cloud.pos2 img{ 211 | width:150px; 212 | } 213 | .cloud.pos3{ 214 | bottom: 200px; 215 | left:120px; 216 | } 217 | .cloud.pos3 img{ 218 | width:180px; 219 | } 220 | 221 | .result{ 222 | position: absolute; 223 | top:0px; 224 | padding: 7px 10px 7px 20px; 225 | left:auto; 226 | right:0px; 227 | color: #fff; 228 | } 229 | .result.success{ 230 | background: #2ecc71; 231 | } 232 | .result.error{ 233 | background: #2c3e50; 234 | } 235 | .result span{ 236 | margin-left: 10px; 237 | } 238 | .result.error span{ 239 | margin-right: 5px; 240 | } 241 | 242 | 243 | @media only screen 244 | and (min-device-width : 320px) 245 | and (max-device-width : 480px) { 246 | .cloud{ 247 | display: none; 248 | } 249 | input[type=email]{ 250 | width:100% !important; 251 | } 252 | } -------------------------------------------------------------------------------- /src/main/webapp/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | 4 | 5 | 6 | 7 | Login 8 | 9 | 10 | 11 | 22 | 23 | 24 | 33 | 34 | 35 |
36 |
37 |
38 | 39 |
40 | 42 |
43 |
44 |
45 | 46 |
47 | 49 |
50 |
51 |
52 | 57 |
58 |
59 |
60 |
61 | 62 | 63 |
64 |
65 |
66 |
67 | 68 |
69 | 70 | -------------------------------------------------------------------------------- /src/main/webapp/loginError.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | Login Error 8 | 9 | <% response.setHeader("refresh","5,url=login.jsp"); %> 10 | 11 | 19 | 20 |
21 |

用户名或者密码错误,请重新登录

22 | 5秒后将自动跳转登录页面,也可点击这里手动跳转 23 |
24 | 25 | -------------------------------------------------------------------------------- /src/main/webapp/register.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | Register 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 | 16 |
17 | 19 |
20 |
21 |
22 | 23 |
24 | 26 |
27 |
28 |
29 | 30 |
31 | 33 |
34 |
35 |
36 | 37 |
38 | 40 |
41 |
42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 | 52 | -------------------------------------------------------------------------------- /src/main/webapp/score.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | Score 9 | 16 | 17 | 18 | 19 |

革命尚未成功,同志仍需努力!

20 |
21 | 22 |

考的还行,仍需努力!

23 |
24 | 25 |

真棒!

26 |
27 |

你的最终得分:${sessionScope.score}

28 | 点击这里退出 29 | 30 | -------------------------------------------------------------------------------- /src/main/webapp/showSubject.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | 4 | 5 | 6 | 7 | Show Subject 8 | 9 | 10 | 11 | 21 | 22 | 23 | 24 | 25 | 43 | 44 | 45 |

查看试题

46 |
47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 |
试题编号:   ${sessionScope.subject.subjectId}
试题题目:   ${sessionScope.subject.subjectTitle}
选项A:   ${sessionScope.subject.subjectOptionA}
选项B:   ${sessionScope.subject.subjectOptionB}
选项C:   ${sessionScope.subject.subjectOptionC}
选项D:   ${sessionScope.subject.subjectOptionD}
答案:   ${sessionScope.subject.subjectAnswer}
解析:   ${sessionScope.subject.subjectParse}
76 | 77 | 78 |
79 | 80 | -------------------------------------------------------------------------------- /src/main/webapp/studentIndex.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | Index-Student 9 | 10 | 11 | 22 | 23 | 24 | 25 | 26 | 39 | 40 | 41 | 42 |
43 | 44 | 45 |   46 | 47 | 48 |
49 | 50 | -------------------------------------------------------------------------------- /src/main/webapp/success.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8" isELIgnored="false"%> 3 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4 | 5 | 6 | 7 | 8 | Suceess 9 | 14 | 15 | 16 | 17 | 18 |

录入试题,成功!!!

19 | 5秒后自动跳转首页,如未跳转点击这里 20 | <%response.setHeader("refresh", "5,url=teacherIndex.jsp"); %> 21 |
22 | 23 |

修改试题,成功!!!

24 | 5秒后跳转管理试题页面,如未点击跳转这里 25 | <%response.setHeader("refresh", "5,url=controlSubject"); %> 26 |
27 | 28 |

删除试题,成功!!!

29 | 5秒后跳转管理试题页面,如未点击跳转这里 30 | <%response.setHeader("refresh", "5,url=controlSubject"); %> 31 |
32 | 33 |

修改学生,成功!!!

34 | 5秒后跳转管理学生页面,如未点击跳转这里 35 | <%response.setHeader("refresh", "5,url=findStudent"); %> 36 |
37 | 38 |

删除学生,成功!!!

39 | 5秒后跳转管理学生页面,如未点击跳转这里 40 | <%response.setHeader("refresh", "5,url=findStudent"); %> 41 |
42 | 43 |
44 | 45 | -------------------------------------------------------------------------------- /src/main/webapp/teacherIndex.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | Index-Teacher 8 | 9 | 10 | 11 | 36 | 37 | 38 | 39 | 64 | 65 | 66 |
67 | 73 |
74 |
75 |
76 |
77 | 78 |
79 | 81 |
82 |
83 |
84 | 85 |
86 | 88 |
89 |
90 |
91 | 92 |
93 | 95 |
96 |
97 |
98 | 99 |
100 | 102 |
103 |
104 |
105 | 106 |
107 | 109 |
110 |
111 |
112 | 122 |
123 |
124 | 125 |
126 | 128 |
129 |
130 |
131 | 132 |     133 | 134 |
135 |
136 |
137 | 138 | -------------------------------------------------------------------------------- /src/main/webapp/updateStudent.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | Update Student 8 | 9 | 10 | 11 | 19 | 26 | 50 | 51 | 52 | 77 | 78 | 79 |
80 | 86 |
87 |
88 |
90 |
91 | 92 |
93 | 94 |
95 |
96 |
97 | 98 |
99 | 100 |
101 |
102 |
103 | 104 |
105 | 106 |
107 |
108 |
109 | 110 |
111 | 112 |
113 |
114 |
115 | 116 |     117 | 118 |
119 |
120 |
121 | 122 | -------------------------------------------------------------------------------- /src/main/webapp/updateSubject.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | Update Subject 8 | 9 | 10 | 11 | 36 | 60 | 67 | 68 | 69 | 70 | 95 | 96 | 97 |
98 | 104 |
105 |
106 |
107 |
108 | 109 |
110 | 112 |
113 |
114 |
115 | 116 |
117 | 119 |
120 |
121 |
122 | 123 |
124 | 126 |
127 |
128 |
129 | 130 |
131 | 133 |
134 |
135 |
136 | 137 |
138 | 140 |
141 |
142 |
143 | 153 |
154 |
155 | 156 |
157 | 159 |
160 |
161 |
162 | 163 |     164 | 165 |
166 |
167 |
168 | 169 | -------------------------------------------------------------------------------- /src/test/java/com/wantao/test/StudentDaoImplTest.java: -------------------------------------------------------------------------------- 1 | package com.wantao.test; 2 | 3 | import java.util.List; 4 | 5 | import org.junit.Test; 6 | import org.junit.runner.RunWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Component; 9 | import org.springframework.test.context.ContextConfiguration; 10 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 11 | 12 | import com.wantao.bean.Student; 13 | import com.wantao.daoImpl.StudentDaoImpl; 14 | @RunWith(SpringJUnit4ClassRunner.class)//自动创建spring上下文 15 | @ContextConfiguration({"classpath:spring/spring.xml"})//加载spring的配置文件 16 | @Component 17 | public class StudentDaoImplTest { 18 | @Autowired(required=true) 19 | Student student;//通过xml注册的bean 20 | @Autowired(required=true) 21 | StudentDaoImpl studentDaoImpl;//通过注解@Service注册的bean 22 | /*@Test 23 | public void test1() { 24 | studentDaoImpl.addStudent(student); 25 | 26 | }*/ 27 | //@Test 28 | public void test2() { 29 | String studentId="161003530106"; 30 | System.out.println(studentDaoImpl.findStudentByStudentId(studentId).toString()); 31 | } 32 | //@Test 33 | public void test3() { 34 | List students=studentDaoImpl.findAllStudent(); 35 | for(Student student:students) { 36 | System.out.println(student.toString()); 37 | } 38 | } 39 | @Test 40 | public void test4() { 41 | Listids=studentDaoImpl.findAllStudentId(); 42 | for(String id:ids) { 43 | System.out.println(id); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/test/java/com/wantao/test/SubjectDaoImplTest.java: -------------------------------------------------------------------------------- 1 | package com.wantao.test; 2 | 3 | import java.util.List; 4 | 5 | import org.junit.Test; 6 | import org.junit.runner.RunWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Component; 9 | import org.springframework.test.context.ContextConfiguration; 10 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 11 | 12 | import com.wantao.bean.Subject; 13 | import com.wantao.daoImpl.SubjectDaoImpl; 14 | 15 | @RunWith(SpringJUnit4ClassRunner.class) 16 | @ContextConfiguration({ "classpath:spring/spring.xml" }) 17 | @Component 18 | public class SubjectDaoImplTest { 19 | @Autowired 20 | SubjectDaoImpl subjectDaoImpl; 21 | @Autowired 22 | Subject subject; 23 | 24 | // @Test 25 | public void test1() { 26 | subjectDaoImpl.addSubject(subject); 27 | } 28 | 29 | // @Test 30 | public void test2() { 31 | List subjects = subjectDaoImpl.findAllSubject(); 32 | for (Subject subject : subjects) { 33 | System.out.println(subject.toString()); 34 | } 35 | } 36 | 37 | //@Test 38 | public void test3() { 39 | Subject subject = subjectDaoImpl.findSubjectById(1); 40 | System.out.println(subject.toString()); 41 | } 42 | 43 | //@Test 44 | public void test4() { 45 | List ids = subjectDaoImpl.findAllSubjectId(); 46 | for(int id:ids) { 47 | System.out.println(id); 48 | } 49 | } 50 | //@Test 51 | public void test5() { 52 | subjectDaoImpl.deleteSubject(26); 53 | } 54 | //@Test 55 | public void test6() { 56 | Listsubjects=subjectDaoImpl.findSubjectBySubjectTitle("二进制"); 57 | for (Subject subject : subjects) { 58 | System.out.println(subject.toString()); 59 | } 60 | 61 | } 62 | @Test 63 | public void test7() { 64 | Listsubjects=subjectDaoImpl.randomFindSubject(); 65 | for (Subject subject : subjects) { 66 | System.out.println(subject.toString()); 67 | } 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/test/java/com/wantao/test/TeacherDaoImplTest.java: -------------------------------------------------------------------------------- 1 | package com.wantao.test; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Component; 7 | import org.springframework.test.context.ContextConfiguration; 8 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 9 | 10 | import com.wantao.daoImpl.TeacherDaoImpl; 11 | 12 | @RunWith(SpringJUnit4ClassRunner.class) 13 | @ContextConfiguration({ "classpath:spring/spring.xml" }) 14 | @Component 15 | public class TeacherDaoImplTest { 16 | @Autowired 17 | TeacherDaoImpl teacherDaoImpl; 18 | 19 | @Test 20 | public void test1() { 21 | System.out.println(teacherDaoImpl.findTeacherById("1")); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /target/classes/com/wantao/bean/Student.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/bean/Student.class -------------------------------------------------------------------------------- /target/classes/com/wantao/bean/Subject.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/bean/Subject.class -------------------------------------------------------------------------------- /target/classes/com/wantao/bean/Teacher.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/bean/Teacher.class -------------------------------------------------------------------------------- /target/classes/com/wantao/controller/Project3Handler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/controller/Project3Handler.class -------------------------------------------------------------------------------- /target/classes/com/wantao/dao/StudentMapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/dao/StudentMapper.class -------------------------------------------------------------------------------- /target/classes/com/wantao/dao/SubjectMapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/dao/SubjectMapper.class -------------------------------------------------------------------------------- /target/classes/com/wantao/dao/TeacherMapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/dao/TeacherMapper.class -------------------------------------------------------------------------------- /target/classes/com/wantao/daoImpl/StudentDaoImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/daoImpl/StudentDaoImpl.class -------------------------------------------------------------------------------- /target/classes/com/wantao/daoImpl/SubjectDaoImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/daoImpl/SubjectDaoImpl.class -------------------------------------------------------------------------------- /target/classes/com/wantao/daoImpl/TeacherDaoImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/classes/com/wantao/daoImpl/TeacherDaoImpl.class -------------------------------------------------------------------------------- /target/classes/mappers/StudentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | 16 | update tb_student set studentName=#{studentName},password=#{password},score=#{score},sclass=#{sclass} where studentId=#{studentId} 17 | 18 | 19 | delete from tb_student where studentId=#{studentId} 20 | 21 | -------------------------------------------------------------------------------- /target/classes/mappers/SubjectMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | insert into 5 | tb_subject(subjectTitle,subjectOptionA,subjectOptionB,subjectOptionC,subjectOptionD,subjectAnswer,subjectParse) 6 | values(#{subjectTitle},#{subjectOptionA},#{subjectOptionB},#{subjectOptionC},#{subjectOptionD},#{subjectAnswer},#{subjectParse}) 7 | 8 | 11 | 14 | 17 | 20 | 23 | 24 | update tb_subject set subjectTitle=#{subjectTitle},subjectOptionA=#{subjectOptionA},subjectOptionB=#{subjectOptionB},subjectOptionC=#{subjectOptionC},subjectOptionD=#{subjectOptionD},subjectAnswer=#{subjectAnswer},subjectParse=#{subjectParse} where subjectId=#{subjectId} 25 | 26 | 27 | delete from tb_subject where subjectId=#{subjectId} 28 | 29 | -------------------------------------------------------------------------------- /target/classes/mappers/TeacherMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /target/classes/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /target/classes/spring/spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /target/classes/spring/springmvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /target/m2e-wtp/web-resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Built-By: wantao 3 | Build-Jdk: 1.8.0_121 4 | Created-By: Maven Integration for Eclipse 5 | 6 | -------------------------------------------------------------------------------- /target/m2e-wtp/web-resources/META-INF/maven/com.wantao/project3/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Sun Jun 10 17:50:36 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=com.wantao 5 | m2e.projectName=project3 6 | m2e.projectLocation=D\:\\MyEclipse\\project3 7 | artifactId=project3 8 | -------------------------------------------------------------------------------- /target/m2e-wtp/web-resources/META-INF/maven/com.wantao/project3/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.wantao 5 | project3 6 | war 7 | 0.0.1-SNAPSHOT 8 | project3 Maven Webapp 9 | http://maven.apache.org 10 | 11 | 12 | junit 13 | junit 14 | 3.8.1 15 | test 16 | 17 | 18 | 19 | 20 | 21 | org.springframework 22 | spring-context 23 | 4.1.7.RELEASE 24 | 25 | 26 | 27 | org.springframework 28 | spring-core 29 | 4.1.7.RELEASE 30 | 31 | 32 | 33 | org.springframework 34 | spring-beans 35 | 4.1.7.RELEASE 36 | 37 | 38 | 39 | org.springframework 40 | spring-test 41 | 4.1.7.RELEASE 42 | 43 | 44 | 45 | 46 | 47 | org.springframework 48 | spring-jdbc 49 | 4.1.7.RELEASE 50 | 51 | 52 | 53 | 54 | 55 | org.springframework 56 | spring-tx 57 | 4.1.7.RELEASE 58 | 59 | 60 | 61 | 62 | 63 | org.springframework 64 | spring-aop 65 | 4.1.7.RELEASE 66 | 67 | 68 | 69 | 70 | 71 | 72 | org.springframework 73 | spring-web 74 | 4.1.7.RELEASE 75 | 76 | 77 | 78 | org.springframework 79 | spring-webmvc 80 | 4.1.7.RELEASE 81 | 82 | 83 | 84 | 85 | 86 | org.mybatis 87 | mybatis 88 | 3.3.0 89 | 90 | 91 | 92 | org.mybatis 93 | mybatis-spring 94 | 1.2.3 95 | 96 | 97 | 98 | 99 | 100 | mysql 101 | mysql-connector-java 102 | 5.1.37 103 | 104 | 105 | 106 | com.alibaba 107 | druid 108 | 1.1.0 109 | 110 | 111 | 112 | 113 | 114 | jstl 115 | jstl 116 | 1.2 117 | 118 | 119 | 120 | taglibs 121 | standard 122 | 1.1.2 123 | 124 | 125 | 126 | 127 | com.github.pagehelper 128 | pagehelper 129 | 5.0.0 130 | 131 | 132 | 133 | 134 | project3 135 | 136 | 137 | -------------------------------------------------------------------------------- /target/test-classes/com/wantao/test/StudentDaoImplTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/test-classes/com/wantao/test/StudentDaoImplTest.class -------------------------------------------------------------------------------- /target/test-classes/com/wantao/test/SubjectDaoImplTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/test-classes/com/wantao/test/SubjectDaoImplTest.class -------------------------------------------------------------------------------- /target/test-classes/com/wantao/test/TeacherDaoImplTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Selenium39/java-project3/7b7fb6da6bcba98300764f46944669157ea06ed4/target/test-classes/com/wantao/test/TeacherDaoImplTest.class --------------------------------------------------------------------------------