[
  {
    "path": ".classpath",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"src\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_45\">\n\t\t<attributes>\n\t\t\t<attribute name=\"owner.project.facets\" value=\"java\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0\">\n\t\t<attributes>\n\t\t\t<attribute name=\"owner.project.facets\" value=\"jst.web\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jst.j2ee.internal.web.container\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jst.j2ee.internal.module.container\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/asm-3.3.1.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/cglib-2.2.2.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/commons-logging-1.1.1.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/dom4j-1.6.1.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/javassist-3.17.1-GA.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/jstl-1.2.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/log4j-1.2.17.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/mybatis-spring-1.2.0.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/slf4j-log4j12-1.7.5.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-aop-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-aspects-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-beans-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-context-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-core-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-expression-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-jdbc-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-tx-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-web-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-webmvc-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/xstream-1.3.1.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/mybatis-3.2.2.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/spring-orm-3.2.3.RELEASE.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/aopalliance-1.0.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/aspectjweaver.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/c3p0-0.9.2-pre4.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/mchange-commons-java-0.2.2.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/mysql-connector-java-5.1.19-bin.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"WebContent/WEB-INF/lib/slf4j-api-1.7.5.jar\"/>\n\t<classpathentry kind=\"output\" path=\"build/classes\"/>\n</classpath>\n"
  },
  {
    "path": ".project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>aixuexiao</name>\n\t<comment></comment>\n\t<projects>\n\t</projects>\n\t<buildSpec>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.jdt.core.javabuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.wst.common.project.facet.core.builder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.wst.validation.validationbuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t</buildSpec>\n\t<natures>\n\t\t<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>\n\t\t<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>\n\t\t<nature>org.eclipse.wst.common.project.facet.core.nature</nature>\n\t\t<nature>org.eclipse.jdt.core.javanature</nature>\n\t\t<nature>org.eclipse.wst.jsdt.core.jsNature</nature>\n\t</natures>\n</projectDescription>\n"
  },
  {
    "path": ".settings/.jsdtscope",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"WebContent\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.wst.jsdt.launching.JRE_CONTAINER\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.wst.jsdt.launching.WebProject\">\n\t\t<attributes>\n\t\t\t<attribute name=\"hide\" value=\"true\"/>\n\t\t</attributes>\n\t</classpathentry>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.wst.jsdt.launching.baseBrowserLibrary\"/>\n\t<classpathentry kind=\"output\" path=\"\"/>\n</classpath>\n"
  },
  {
    "path": ".settings/org.eclipse.core.resources.prefs",
    "content": "eclipse.preferences.version=1\nencoding//WebContent/WEB-INF/views/common/css.jsp=UTF-8\nencoding//WebContent/WEB-INF/views/common/js.jsp=UTF-8\nencoding//WebContent/WEB-INF/views/common/navbar.jsp=UTF-8\nencoding//WebContent/WEB-INF/views/common/sidebar.jsp=UTF-8\n"
  },
  {
    "path": ".settings/org.eclipse.jdt.core.prefs",
    "content": "eclipse.preferences.version=1\norg.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\norg.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6\norg.eclipse.jdt.core.compiler.compliance=1.6\norg.eclipse.jdt.core.compiler.problem.assertIdentifier=error\norg.eclipse.jdt.core.compiler.problem.enumIdentifier=error\norg.eclipse.jdt.core.compiler.source=1.6\n"
  },
  {
    "path": ".settings/org.eclipse.wst.common.component",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project-modules id=\"moduleCoreId\" project-version=\"1.5.0\">\n    <wb-module deploy-name=\"aixuexiao\">\n        <wb-resource deploy-path=\"/\" source-path=\"/WebContent\" tag=\"defaultRootSource\"/>\n        <wb-resource deploy-path=\"/WEB-INF/classes\" source-path=\"/src\"/>\n        <property name=\"context-root\" value=\"aixuexiao\"/>\n        <property name=\"java-output-path\" value=\"/aixuexiao/build/classes\"/>\n    </wb-module>\n</project-modules>\n"
  },
  {
    "path": ".settings/org.eclipse.wst.common.project.facet.core.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<faceted-project>\n  <runtime name=\"Apache Tomcat v6.0\"/>\n  <fixed facet=\"jst.web\"/>\n  <fixed facet=\"java\"/>\n  <fixed facet=\"wst.jsdt.web\"/>\n  <installed facet=\"java\" version=\"1.6\"/>\n  <installed facet=\"jst.web\" version=\"2.5\"/>\n  <installed facet=\"wst.jsdt.web\" version=\"1.0\"/>\n</faceted-project>\n"
  },
  {
    "path": ".settings/org.eclipse.wst.jsdt.ui.superType.container",
    "content": "org.eclipse.wst.jsdt.launching.baseBrowserLibrary"
  },
  {
    "path": ".settings/org.eclipse.wst.jsdt.ui.superType.name",
    "content": "Window"
  },
  {
    "path": "README.md",
    "content": "aixuexiao\n=========\n\n一个基于SAE Java平台的微信平台公众帐号应用例子。\n\n详情访问：http://aixuexiao.sinaapp.com\n微信公众帐号：爱学校(aixuexiao)\n\n\n微信公众帐号功能为作为学生家长和学校老师之间的沟通桥梁。\n学生家长可通过和微信公众帐号交互来获取学生在校的考试情况／班级动态／老师留言等信息。\n当然需要学校老师在微信公众帐号后台添加学生留言／班级动态／考试信息等数据。\n\n应用基于SAE Java平台开发，使用（Spring/SpringMVC/Mybatis）框架开发，有相同需求（在SAE Java平台搭建微信公众帐号后台）的同学可用拿去作为参考，当然也可用作为在SAE Java平台中使用框架的例子程序作为参考。\n\n微信的验证和回复的入口程序在com.aixuexiao.web.controller.WeixinController.java中。\n其中initWeixinURL（对应URL:/weixin GET）方法为验证方法。\nreplyMessage（对应URL:/weixin POST）方法则是回复方法。\n\n直接下载本项目在SAE Java平台上搭建需要改动地方：\n1.在你创建SAE应用的MySQL中执行应用根目录下的app_aixuexiao.sql文件（包括表结构和部分测试数据）；\n2.修改src下db.properties文件中的数据库信息ak、sk分别设置为你SAE应用中的ak和sk即可。\n\n\n注：时间仓促且第一次使用SpringMVC，不优雅的代码敬请指出。\n\n有任何问题可用联系我，看到第一时间回复\n\nzhiyun.cloud@gmail.com\n@智云同学\n"
  },
  {
    "path": "WebContent/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\r\nClass-Path: \r\n\r\n"
  },
  {
    "path": "WebContent/WEB-INF/springMVC-servlet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n xmlns:context=\"http://www.springframework.org/schema/context\"\r\n xmlns:p=\"http://www.springframework.org/schema/p\"\r\n xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\r\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n xsi:schemaLocation=\"http://www.springframework.org/schema/beans\r\n      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\r\n      http://www.springframework.org/schema/context\r\n      http://www.springframework.org/schema/context/spring-context.xsd\r\n      http://www.springframework.org/schema/mvc\r\n      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd\">\r\n    \r\n\t <bean class=\"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter\" >  \r\n\t<property name=\"messageConverters\">   \r\n\t         <list>   \r\n\t             <bean class = \"org.springframework.http.converter.StringHttpMessageConverter\">   \r\n\t                <property name = \"supportedMediaTypes\">\r\n\t                      <list>\r\n\t                          <value>text/html;charset=UTF-8</value>   \r\n\t                     </list>   \r\n\t                </property>   \r\n\t             </bean>   \r\n\t         </list>   \r\n\t   </property>  \r\n\t</bean>\t\r\n    \t\r\n      <context:component-scan base-package=\"com.aixuexiao.web.controller\"/>\r\n      <mvc:annotation-driven />\r\n      \r\n      <mvc:interceptors>\r\n          <mvc:interceptor>\r\n\t\t\t<mvc:mapping path=\"/manager/**\"/>              \r\n\t\t\t<bean class=\"com.aixuexiao.web.interceptor.ManagerInterceptor\" />\r\n          </mvc:interceptor>\r\n      </mvc:interceptors>\r\n      \r\n     <!-- 对模型视图名称的解析，在请求时模型视图名称添加前后缀 -->\r\n     <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\r\n     \t<property name=\"viewClass\" value=\"org.springframework.web.servlet.view.JstlView\"/>\r\n     \t<property name=\"prefix\" value=\"/WEB-INF/views/\"/>\r\n    \t<property name=\"suffix\" value=\".jsp\"/>\r\n     </bean>\r\n</beans>"
  },
  {
    "path": "WebContent/WEB-INF/views/addclasses.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>Ӱ༶</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-list-alt\"></i>\n\t\t\t\t\t\t\t\tӰ༶\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form action=\"addclasses\" id=\"addclasses\" class=\"form-horizontal\" method=\"post\">\n\t\t\t\t\t\t\t\t<div class=\"control-group\">\n\t\t\t\t\t\t\t\t\t<label class=\"control-label\" for=\"id\">༶</label>\n\t\t\t\t\t\t\t\t\t<div class=\"controls\">\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"id\" id=\"id\" placeholder=༶>*\n\t\t\t\t\t\t\t\t\t\t<span class=\"help-inline\"><c:if test=\"${param.notice==null}\">꼶Ϊ302</c:if>  <font color=\"red\"><c:if test=\"${param.notice!=null}\">${param.notice}</c:if></font></span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"control-group\">\n\t\t\t\t\t\t\t\t\t<label class=\"control-label\"  for=\"name\">༶</label>\n\t\t\t\t\t\t\t\t\t<div class=\"controls\">\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" id=\"name\" value=\"${param.name}\" name=\"name\" placeholder=\"༶\">*\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"control-group\">\n\t\t\t\t\t\t\t\t\t<label class=\"control-label\"  for=\"headteacher\"></label>\n\t\t\t\t\t\t\t\t\t<div class=\"controls\">\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" value=\"${param.headteacher}\" name=\"headteacher\" id=\"headteacher\" placeholder=\"\">*\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class=\"form-actions\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" id=\"add\" type=\"button\">\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-ok bigger-110\"></i>\n\t\t\t\t\t\t\t\t\t\tӰ༶\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t&nbsp; &nbsp; &nbsp;\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" type=\"button\" onclick=\"location.href='<%=request.getContextPath() %>/manager/classes'\" >\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-arrow-left\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#add').on('click', function() {\n\t\t\t\tif($.trim($(\"#id\").val())==''||isNaN($('#id').val())){\n\t\t\t\t\talert('ȷİ༶ţ');\n\t\t\t\t\treturn;\n\t\t\t\t}else if($.trim($(\"#name\").val())==''){\n\t\t\t\t\talert('༶ƣ');\n\t\t\t\t\treturn;\n\t\t\t\t}else if($.trim($(\"#headteacher\").val())==''){\n\t\t\t\t\talert('ƣ');\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\t$(\"#addclasses\").submit();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/addclassesnews.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>༶̬</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-comment\"></i>\n\t\t\t\t\t\t\t\t̬\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form action=\"addclassesnews\" id=\"addclassesnews\" method=\"post\">\n\t\t\t\t\t\t\t\t\t<label for=\"form-field-8\">Ϊ <b>${cls.name}</b> ༶̬:<b>${cls.headteacher}</b> </label>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"classid\" value=\"${cls.id}\">\n\t\t\t\t\t\t\t\t\t<textarea class=\"span12\" name=\"content\" id=\"content\" rows=\"4\" placeholder=\"̬\"></textarea>\n\t\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" id=\"leavemessage\" type=\"button\">\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-inbox\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" type=\"button\" onclick=\"location.href='<%=request.getContextPath() %>/manager/classes'\" >\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-arrow-left\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t\t\t\t<c:if test=\"${param.notice != null}\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"alert alert-info\">\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"close\" data-dismiss=\"alert\">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-remove\"></i>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-ok\"></i>\n\t\t\t\t\t\t\t\t\t\t\t<strong>${param.notice}</strong>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width=\"6%\"></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\">ʱ</th>\n\t\t\t\t\t\t\t\t\t\t<th></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"10%\"></th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<c:forEach items=\"${cnlist}\"  var=\"cn\" varStatus=\"sta\" >\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>${sta.index+1}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${cn.inserttime}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${cn.content}</td>\n\t\t\t\t\t\t\t\t\t\t<td><button class=\"btn btn-mini btn-danger\" onclick=\"if(window.confirm('ȷɾ̬')==true)location.href='<%=request.getContextPath() %>/manager/deleteclassesnews?classesid=${cn.classid}&id=${cn.id}'\"><i class=\"icon-remove\"></i>ɾ̬</button></td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#leavemessage').on('click', function() {\n\t\t\t\tif($.trim($(\"#content\").val())==''){\n\t\t\t\t\talert('');\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\t$(\"#addclassesnews\").submit();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/addexam.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>ӿ</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-file\"></i>\n\t\t\t\t\t\t\t\tӿ\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form action=\"addexammark\" id=\"addexammark\" class=\"form-horizontal\" method=\"post\">\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"classid\" value=\"${exam.classid }\" />\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"course\" value=\"${exam.course }\" />\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"fullmarks\" value=\"${exam.fullmarks }\" />\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"remark\" value=\"${exam.remark }\" />\n\t\t\t\t\t\t\t\t\t<label for=\"form-field-8\"> &nbsp;&nbsp;&nbsp;¼ <b>${exam.classid}</b>  <b>${exam.course}</b> Գɼ  <b>${exam.fullmarks}</b>  </label>\n\t\t\t\t\t\t\t\t \t<hr>\n\t\t\t\t\t\t\t\t \t<table  class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<th width=\"10%\">ѧ</th>\n\t\t\t\t\t\t\t\t\t\t\t\t<th width=\"10%\">ѧ</th>\n\t\t\t\t\t\t\t\t\t\t\t\t<th width=\"10%\"></th>\n\t\t\t\t\t\t\t\t\t\t\t\t<th  >ע</th>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t \t<c:forEach items=\"${stlist}\"  var=\"student\" varStatus=\"sta\"  >\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>${student.id }<input type=\"hidden\" name=\"examMarks[${sta.index}].studentid\" value=\"${student.id}\"></td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>${student.name }<input type=\"hidden\" name=\"examMarks[${sta.index}].studentname\" value=\"${student.name}\"><input type=\"hidden\" name=\"examMarks[${sta.index}].classid\" value=\"${student.classid}\"></td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td><input type=\"text\" class=\"mark\" name=\"examMarks[${sta.index}].mark\" ></td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td><input type=\"text\" class=\"input-xxlarge\" name=\"examMarks[${sta.index}].remark\" ></td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t \t</c:forEach>\n\t\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t<div class=\"form-actions\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\"  id=\"add\"  type=\"button\">\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-ok bigger-110\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t&nbsp; &nbsp; &nbsp;\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" type=\"button\" onclick=\"location.href='<%=request.getContextPath() %>/manager/exams'\" >\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-arrow-left\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#add').on('click', function() {\n\t\t\t\tvar flag = true;\n\t\t\t\t$(\".mark\").each(function(){\n\t\t\t\t\tif($(this).val() == \"\"||isNaN($(this).val())||$(this).val() < 0||$(this).val()> ${exam.fullmarks}) {\n\t\t\t\t\t\talert('д');\n\t\t\t\t\t\tflag = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(flag)$(\"#addexammark\").submit();\n\t\t\t});\n\t\t});\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/addstudentmessage.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>΢</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-comment\"></i>\n\t\t\t\t\t\t\t\t΢\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form action=\"addmessage\" id=\"addmessage\" method=\"post\">\n\t\t\t\t\t\t\t\t\t<label for=\"form-field-8\"> <b>${student.name}</b> ͬѧ:<b>${student.id}</b>΢  </label>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"studentid\" value=\"${student.id}\">\n\t\t\t\t\t\t\t\t\t<textarea class=\"span12\" name=\"content\" id=\"content\" rows=\"4\" placeholder=\"\"></textarea>\n\t\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" id=\"leavemessage\" type=\"button\">\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-inbox\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" type=\"button\" onclick=\"location.href='<%=request.getContextPath() %>/manager/students'\" >\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-arrow-left\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t\t\t\t<c:if test=\"${param.notice != null}\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"alert alert-info\">\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"close\" data-dismiss=\"alert\">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-remove\"></i>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-ok\"></i>\n\t\t\t\t\t\t\t\t\t\t\t<strong>${param.notice}</strong>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width=\"6%\"></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\">ʱ</th>\n\t\t\t\t\t\t\t\t\t\t<th></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"10%\"></th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<c:forEach items=\"${studentMessageList}\"  var=\"message\" varStatus=\"sta\" >\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>${sta.index+1}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${message.inserttime}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${message.content}</td>\n\t\t\t\t\t\t\t\t\t\t<td><button class=\"btn btn-mini btn-danger\" onclick=\"if(window.confirm('ȷɾԣ')==true)location.href='<%=request.getContextPath() %>/manager/deletemessage?studentid=${student.id}&messageid=${message.id}'\"><i class=\"icon-remove\"></i>ɾ</button></td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#leavemessage').on('click', function() {\n\t\t\t\tif($.trim($(\"#content\").val())==''){\n\t\t\t\t\talert('');\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\t$(\"#addmessage\").submit();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/addstudents.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>ѧ</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-list-alt\"></i>\n\t\t\t\t\t\t\t\tѧ\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<label for=\"form-field-8\">  <b>${cls.name}</b> ѧΣ${cls.headteacher } </label>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<form  class=\"form-inline\" id=\"savestudent\" method=\"post\" action=\"addstudent\" >\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\"  name=\"classid\" value=\"${cls.id}\">\n\t\t\t\t\t\t\t\t\t<label class=\"control-label\"  >:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" id=\"id\" name=\"id\" value=\"${cls.id}${length+1}\" >&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t\t<label class=\"control-label\"   >:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"name\" id=\"name\"  placeholder=\"\">\n\t\t\t\t\t\t\t\t\t&nbsp;&nbsp;<label class=\"control-label\"    >ע:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"remark\" id=\"remark\"  class=\"input-xlarge\"   placeholder=\"ע\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-small btn-info\" id=\"addstudent\" type=\"button\">\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-ok\"></i>\n\t\t\t\t\t\t\t\t\t\tѧ\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-small btn-info\"  onclick=\"location.href='<%=request.getContextPath() %>/manager/classes'\" type=\"button\">\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-arrow-left\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t<c:if test=\"${param.notice != null}\">\n\t\t\t\t\t\t\t\t<div class=\"alert alert-info\">\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"close\" data-dismiss=\"alert\">\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-remove\"></i>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<i class=\"icon-ok\"></i>\n\t\t\t\t\t\t\t\t\t<strong>${param.notice}</strong>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t\t\t<hr>\n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width=\"5%\">#</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"10%\">ѧ</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"15%\">ѧ</th>\n\t\t\t\t\t\t\t\t\t\t<th>ע</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"15%\"></th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t<c:forEach items=\"${stlist}\"  var=\"student\" varStatus=\"sta\" >\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>${sta.index+1}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${student.id}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${student.name}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${student.remark}</td>\n\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#myModal\"  role=\"button\" onclick=\"setvalue('${student.id}','${student.name}','${student.remark}')\" class=\"btn  btn-mini btn-info\" data-toggle=\"modal\"><i class=\"icon-edit\"></i>༭</a>\n\t\t\t\t\t\t\t\t\t\t\t<button class=\"btn btn-mini btn-danger\" onclick=\"if(window.confirm('ȷɾѧ${student.name}')==true)location.href='<%=request.getContextPath() %>/manager/deletestudent?studentid=${student.id}&classid=${student.classid}'\"><i class=\"icon-remove\"></i>ɾ</button>\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- Modal -->\n\t\t\t\t\t\t\t<div id=\"myModal\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t  \t<form action=\"updatestudent\" id=\"updatestudent\" method=\"post\"  class=\"form-inline\">\n\t\t\t\t\t\t\t\t  <div class=\"modal-header\">\n\t\t\t\t\t\t\t\t    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\"></button>\n\t\t\t\t\t\t\t\t    <h3 id=\"myModalLabel\">༭ѧ</h3>\n\t\t\t\t\t\t\t\t  </div>\n\t\t\t\t\t\t\t\t  <div class=\"modal-body\">\n\t\t\t\t\t\t\t\t  \t\t<input type=\"hidden\"  name=\"classid\" value=\"${cls.id}\">\n\t\t\t\t\t\t\t\t  \t\t<input type=\"hidden\"  name=\"id\"  id=\"editid\" >\n\t\t\t\t\t\t\t\t\t\t<label class=\"control-label\"   >:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"name\" class=\"input-medium\"  id=\"editname\"  >\n\t\t\t\t\t\t\t\t\t\t<br><br><label class=\"control-label\"    >ע:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"remark\" id=\"editremark\"  class=\"input-xlarge\" >\n\t\t\t\t\t\t\t\t  </div>\n\t\t\t\t\t\t\t\t  <div class=\"modal-footer\">\n\t\t\t\t\t\t\t\t    <button  type=\"button\" id=\"modify\" class=\"btn btn-small btn-primary\"></button>\n\t\t\t\t\t\t\t\t  </div>\n\t\t\t\t\t\t\t  \t</form>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#addstudent').on('click', function() {\n\t\t\t\tif($.trim($(\"#id\").val())==''||isNaN($('#id').val())){\n\t\t\t\t\talert('ȷѧţ');\n\t\t\t\t\treturn;\n\t\t\t\t}else if($.trim($(\"#name\").val())==''){\n\t\t\t\t\talert('ѧ');\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\t$(\"#savestudent\").submit();\n\t\t\t\t}\n\t\t\t});\n\t\t\t$('#modify').on('click', function() {\n\t\t\t\tif($.trim($(\"#editname\").val())==''){\n\t\t\t\t\talert('ѧ');\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\t$(\"#updatestudent\").submit();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t\n\t\tfunction setvalue(id,name,remark){\n\t\t\t$(\"#editid\").val(id);\n\t\t\t$(\"#editname\").val(name);\n\t\t\t$(\"#editremark\").val(remark);\n\t\t}\n\t\t\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/classes.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>༶Ϣ</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-list-alt\"></i>\n\t\t\t\t\t\t\t\t༶Ϣ\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form class=\"form-inline\" method=\"get\" action=\"<%=request.getContextPath() %>/manager/classes\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"pagenum\" value=\"${pagenum}\">\n\t\t\t\t\t\t\t\t&nbsp;&nbsp;ƣ<input type=\"text\" name=\"name\" value=\"${classes.name}\"  class=\"input-medium search-query\">&nbsp;&nbsp;&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t<button  type=\"submit\" class=\"btn btn-purple btn-small\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<i class=\"icon-search icon-on-right bigger-110\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button  type=\"button\" onclick=\"location.href='<%=request.getContextPath() %>/manager/addclassespage'\" class=\"btn btn-purple btn-small\">\n\t\t\t\t\t\t\t\t\tӰ༶\n\t\t\t\t\t\t\t\t\t<i class=\"icon-plus-sign icon-on-right bigger-110\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\">༶</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\">༶</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\">ѧ</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\"></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\" ></th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<c:forEach items=\"${classesList}\"  var=\"classes\"  >\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>${classes.id}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${classes.name}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${classes.studentcount}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${classes.headteacher}</td>\n\t\t\t\t\t\t\t\t\t\t<td >\n\t\t\t\t\t\t\t\t\t\t\t<button class=\"btn btn-mini btn-primary\" onclick=\"location.href='<%=request.getContextPath() %>/manager/classesnewspage?classesid=${classes.id}'\" ><i class=\" icon-envelope\"></i>&nbsp;̬</button>\n\t\t\t\t\t\t\t\t\t\t\t<button class=\"btn btn-mini btn-primary\" onclick=\"location.href='<%=request.getContextPath() %>/manager/managerstudentpage?classesid=${classes.id}'\" ><i class=\"icon-user\"></i>&nbsp;ѧ</button>\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t \t\t<div class=\"dataTables_paginate paging_bootstrap pagination\">\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/classes?pagenum=${pagenum-1}'\" <c:if test=\"${pagenum <= 1}\">disabled=\"disabled\"</c:if>    >&laquo;</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" disabled=\"disabled\"> ${pagenum} ҳ</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/classes?pagenum=${pagenum+1}'\" <c:if test=\"${length < 10}\">disabled=\"disabled\"</c:if> >&raquo;</button>\n\t\t\t\t\t \t\t</div>\n\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/common/css.jsp",
    "content": "<!--basic styles-->\n<link href=\"<%=request.getContextPath()%>/assets/css/bootstrap.min.css\" rel=\"stylesheet\" />\n<link href=\"<%=request.getContextPath()%>/assets/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/font-awesome.min.css\" />\n<!--[if IE 7]>\n  <link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/font-awesome-ie7.min.css\" />\n<![endif]-->\n<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-fonts.css\" />\n<!--ace styles-->\n<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace.min.css\" />\n<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-responsive.min.css\" />\n<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-skins.min.css\" />\n<!--[if lte IE 8]>\n  <link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-ie.min.css\" />\n<![endif]-->"
  },
  {
    "path": "WebContent/WEB-INF/views/common/js.jsp",
    "content": "<!--basic scripts-->\n<!--[if !IE]>-->\n<script type=\"text/javascript\">\n\twindow.jQuery || document.write(\"<script src='<%=request.getContextPath()%>/assets/js/jquery-2.0.3.min.js'>\"+\"<\"+\"/script>\");\n</script>\n<!--<![endif]-->\n<!--[if IE]>\n<script type=\"text/javascript\">\n window.jQuery || document.write(\"<script src='<%=request.getContextPath()%>/assets/js/jquery-1.10.2.min.js'>\"+\"<\"+\"/script>\");\n</script>\n<![endif]-->\n<script type=\"text/javascript\">\n\tif(\"ontouchend\" in document) document.write(\"<script src='<%=request.getContextPath()%>/assets/js/jquery.mobile.custom.min.js'>\"+\"<\"+\"/script>\");\n</script>\n<script src=\"<%=request.getContextPath()%>/assets/js/bootstrap.min.js\"></script>\n<!--page specific plugin scripts-->\n<!--ace scripts-->\n<script src=\"<%=request.getContextPath()%>/assets/js/ace-elements.min.js\"></script>\n<script src=\"<%=request.getContextPath()%>/assets/js/ace.min.js\"></script>\n<!--inline scripts related to this page-->"
  },
  {
    "path": "WebContent/WEB-INF/views/common/navbar.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<div class=\"navbar\">\n\t<div class=\"navbar-inner\">\n\t\t<div class=\"container-fluid\">\n\t\t\t<a href=\"<%=request.getContextPath()%>/\" class=\"brand\">\n\t\t\t\t<small>\n\t\t\t\t\t<i class=\"icon-briefcase\"></i>\n\t\t\t\t\t&nbsp;爱学校 \n\t\t\t\t</small>\n\t\t\t</a><!--/.brand-->\n\t\t</div><!--/.container-fluid-->\n\t</div><!--/.navbar-inner-->\n</div>"
  },
  {
    "path": "WebContent/WEB-INF/views/common/sidebar.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<div class=\"sidebar\" id=\"sidebar\">\n\t<ul class=\"nav nav-list\">\n\t\t<li <c:if test=\"${sidebar=='students'}\">class=\"active\"</c:if> >\n\t\t\t<a href=\"<%=request.getContextPath()%>/manager/students\">\n\t\t\t\t<i class=\"icon-user\"></i>\n\t\t\t\t<span class=\"menu-text\"> 学生列表 </span>\n\t\t\t</a>\n\t\t</li>\n\t\t<li <c:if test=\"${sidebar=='classes'}\">class=\"active\"</c:if> >\n\t\t\t<a href=\"<%=request.getContextPath()%>/manager/classes\">\n\t\t\t\t<i class=\"icon-list-alt\"></i>\n\t\t\t\t<span class=\"menu-text\"> 班级列表 </span>\n\t\t\t</a>\n\t\t</li>\n\t\t<li <c:if test=\"${sidebar=='exams'}\">class=\"active\"</c:if> >\n\t\t\t<a href=\"<%=request.getContextPath()%>/manager/exams\">\n\t\t\t\t<i class=\"icon-file\"></i>\n\t\t\t\t<span class=\"menu-text\"> 考试列表 </span>\n\t\t\t</a>\n\t\t</li>\n\t\t<li <c:if test=\"${sidebar=='messages'||sidebar=='replys'}\">class=\"active\"</c:if>>\n\t\t\t<a href=\"#\" class=\"dropdown-toggle\">\n\t\t\t\t<i class=\"icon-comment\"></i>\n\t\t\t\t<span class=\"menu-text\"> 微信消息 </span>\n\n\t\t\t\t<b class=\"arrow icon-angle-down\"></b>\n\t\t\t</a>\n\t\t\t<ul class=\"submenu\">\n\t\t\t\t<li <c:if test=\"${sidebar=='messages'}\">class=\"active\"</c:if> >\n\t\t\t\t\t<a href=\"<%=request.getContextPath()%>/manager/messages\">\n\t\t\t\t\t\t<i class=\"icon-double-angle-right\"></i>\n\t\t\t\t\t\t接收消息\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t\t<li <c:if test=\"${sidebar=='replys'}\">class=\"active\"</c:if> >\n\t\t\t\t\t<a href=\"<%=request.getContextPath()%>/manager/replys\">\n\t\t\t\t\t\t<i class=\"icon-double-angle-right\"></i>\n\t\t\t\t\t\t回复消息\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</li>\n\t\t \n\t</ul><!--/.nav-list-->\n\t<div class=\"sidebar-collapse\" id=\"sidebar-collapse\">\n\t\t<i class=\"icon-double-angle-left\"></i>\n\t</div>\n</div>"
  },
  {
    "path": "WebContent/WEB-INF/views/examdetail.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title></title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-comment\"></i>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<label for=\"form-field-8\">&nbsp;&nbsp;&nbsp; <b>${student.name}</b> :<b>${student.id}</b>ͬѧĿ  </label>\n\t\t\t\t\t\t\t <br>\n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width=\"6%\"></th>\n\t\t\t\t\t\t\t\t\t\t<th>ԿĿ</th>\n\t\t\t\t\t\t\t\t\t\t<th>ʱ</th>\n\t\t\t\t\t\t\t\t\t\t<th>ɼ</th>\n\t\t\t\t\t\t\t\t\t\t<th>Ծܷ</th>\n\t\t\t\t\t\t\t\t\t\t<th>༶߷</th>\n\t\t\t\t\t\t\t\t\t\t<th>༶ͷ</th>\n\t\t\t\t\t\t\t\t\t\t<th>༶</th>\n\t\t\t\t\t\t\t\t\t\t<th></th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<c:forEach items=\"${emlist}\"  var=\"em\" varStatus=\"sta\" >\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>${sta.index+1}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${em.exam.course}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${em.exam.examtime}</td>\n\t\t\t\t\t\t\t\t\t\t<td><b>${em.mark}</b></td>\n\t\t\t\t\t\t\t\t\t\t<td>${em.exam.fullmarks}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${em.exam.average}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${em.exam.topmark}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${em.exam.lowestmark}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${em.rank}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t <button class=\"btn btn-info\" type=\"button\" onclick=\"location.href='<%=request.getContextPath() %>/manager/students'\" >\n\t\t\t\t\t\t\t\t<i class=\"icon-arrow-left\"></i>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#leavemessage').on('click', function() {\n\t\t\t\tif($.trim($(\"#content\").val())==''){\n\t\t\t\t\talert('');\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\t$(\"#addmessage\").submit();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/exams.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>Ϣ</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-user\"></i>\n\t\t\t\t\t\t\t\tϢ\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form class=\"form-inline\" method=\"get\" action=\"<%=request.getContextPath() %>/manager/exams\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"pagenum\" value=\"${pagenum}\">\n\t\t\t\t\t\t\t\t&nbsp;&nbsp;Ŀ<input type=\"text\" name=\"course\" value=\"${exam.course}\"  class=\"input-medium search-query\">&nbsp;&nbsp;&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t<select name=\"classid\">\n\t\t\t\t\t\t\t\t\t<option value=\"0\">ѡ༶</option>\n\t\t\t\t\t\t\t\t\t<c:forEach items=\"${clsList}\"  var=\"cls\"  >\n\t\t\t\t\t\t\t\t\t\t<option <c:if test=\"${exam.classid == cls.id}\">selected=\"selected\"</c:if> value=\"${cls.id}\">${cls.name}</option>\n\t\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</select>&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t<button  type=\"submit\" class=\"btn btn-purple btn-small\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<i class=\"icon-search icon-on-right bigger-110\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<a href=\"#myModal\"  role=\"button\"  class=\"btn btn-purple btn-small\" data-toggle=\"modal\"><i class=\"icon-plus-sign icon-on-right bigger-110\"></i>ӿ</a>\n\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width=\"5%\"></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"10%\">ԿĿ</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"10%\">԰༶</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"8%\"></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"8%\"></th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"8%\">߷</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"8%\">ͷ</th>\n\t\t\t\t\t\t\t\t\t\t<th>ʱ</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"12%\" ></th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<c:forEach items=\"${examList}\"  var=\"exam\"  >\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.id}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.course}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.classid}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.fullmarks}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.average}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.topmark}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.lowestmark}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${exam.examtime}</td>\n\t\t\t\t\t\t\t\t\t\t<td >\n\t\t\t\t\t\t\t\t\t\t\t<button class=\"btn btn-mini btn-purple\"  onclick=\"location.href='<%=request.getContextPath() %>/manager/viewexam?id=${exam.id}'\" ><i class=\"icon-file\"></i></button>\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\n\t\t\t\t\t \t\t<div class=\"dataTables_paginate paging_bootstrap pagination\">\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/students?pagenum=${pagenum-1}'\" <c:if test=\"${pagenum <= 1}\">disabled=\"disabled\"</c:if>    >&laquo;</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" disabled=\"disabled\"> ${pagenum} ҳ</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/students?pagenum=${pagenum+1}'\" <c:if test=\"${length < 10}\">disabled=\"disabled\"</c:if> >&raquo;</button>\n\t\t\t\t\t \t\t</div>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<div id=\"myModal\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t  <div class=\"modal-header\">\n\t\t\t\t\t\t\t\t    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\"></button>\n\t\t\t\t\t\t\t\t    <h3 id=\"myModalLabel\">ӿ</h3>\n\t\t\t\t\t\t\t\t  </div>\n\t\t\t\t\t\t\t  \t<form action=\"addexam\" id=\"addexam\" method=\"post\"  class=\"form-inline\">\n\t\t\t\t\t\t\t\t  <div class=\"modal-body\">\n\t\t\t\t\t\t\t\t\t\t<label class=\"control-label\"   >Ŀ:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"course\" class=\"input-medium\"  id=\"addcourse\"  >\n\t\t\t\t\t\t\t\t\t\t&nbsp;&nbsp;&nbsp;&nbsp;<label class=\"control-label\"   >:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"fullmarks\" class=\"input-medium\"  id=\"addfullmarks\"  >\n\t\t\t\t\t\t\t\t\t\t<br><br><label class=\"control-label\"   >༶:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t\t<select name=\"classid\">\n\t\t\t\t\t\t\t\t\t\t\t<c:forEach items=\"${clsList}\"  var=\"cls\"  >\n\t\t\t\t\t\t\t\t\t\t\t\t<option   value=\"${cls.id}\">${cls.name}</option>\n\t\t\t\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t\t\t<br><br><label class=\"control-label\"    >ע:&nbsp;&nbsp;</label>\n\t\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"remark\" id=\"addremark\"  class=\"input-xlarge\" >\n\t\t\t\t\t\t\t\t  </div>\n\t\t\t\t\t\t\t\t  <div class=\"modal-footer\">\n\t\t\t\t\t\t\t\t    <button  type=\"button\" id=\"add\" class=\"btn btn-small btn-primary\"></button>\n\t\t\t\t\t\t\t\t  </div>\n\t\t\t\t\t\t\t  \t</form>\n\t\t\t\t\t\t\t</div> \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#add').on('click', function() {\n\t\t\t\tif($.trim($(\"#addfullmarks\").val())==''||isNaN($('#addfullmarks').val())){\n\t\t\t\t\talert('Ծ֣');\n\t\t\t\t\treturn;\n\t\t\t\t}else if($.trim($(\"#addcourse\").val())==''){\n\t\t\t\t\talert('뿼ԿĿ');\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\t$(\"#addexam\").submit();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/login.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t\t<title>爱学校</title>\n\t\t<meta name=\"description\" content=\"User login page\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<!--basic styles-->\n\t\t<link href=\"<%=request.getContextPath()%>/assets/css/bootstrap.min.css\" rel=\"stylesheet\" />\n\t\t<link href=\"<%=request.getContextPath()%>/assets/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n\t\t<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/font-awesome.min.css\" />\n\t\t<!--[if IE 7]>\n\t\t  <link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/font-awesome-ie7.min.css\" />\n\t\t<![endif]-->\n\t\t<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-fonts.css\" />\n\t\t<!--ace styles-->\n\t\t<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace.min.css\" />\n\t\t<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-responsive.min.css\" />\n\t\t<link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-skins.min.css\" />\n\n\t\t<!--[if lte IE 8]>\n\t\t  <link rel=\"stylesheet\" href=\"<%=request.getContextPath()%>/assets/css/ace-ie.min.css\" />\n\t\t<![endif]-->\n\t</head>\n\t<body class=\"login-layout\">\n\t\t\t<br><br>\n\t\t\t<div class=\"main-container container-fluid\">\n\t\t\t\t<div class=\"main-content\">\n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<div class=\"login-container\">\n\t\t\t\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\t\t\t<div class=\"center\">\n\t\t\t\t\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-leaf green\"></i>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"red\">&nbsp;爱学校</span>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"white\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t\t\t\t<h4 class=\"blue\">&copy; <a href=\"http://weibo.com/2098099627\" target=\"_blank\">智云同学</a></h4>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\n\t\t\t\t\t\t\t\t<div class=\"space-6\"></div>\n\t\n\t\t\t\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\t\t\t<div class=\"position-relative\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"login-box\" class=\"login-box visible widget-box no-border\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"widget-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"widget-main\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<c:if test=\"${message == null }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"header blue lighter bigger\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-coffee green\"></i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tPlease Enter Your Information\n\t\t\t\t\t\t\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<c:if test=\"${message != null }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"header red lighter bigger\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-coffee green\"></i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&nbsp;${message}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"space-6\"></div>\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<form action=\"<%=request.getContextPath()%>/login\" method=\"post\" id=\"login\" >\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"block input-icon input-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"span12\" name=\"username\" <c:if test=\"${username!=null}\">value=\"${username}\"</c:if> placeholder=\"Username\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-user\"></i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"block input-icon input-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"span12\" name=\"password\" value=\"123456\" placeholder=\"Password\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-lock\"></i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"space\"></div>\n\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"clearfix\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<button onclick=\"document.getElementById('login').submit();\"  class=\"width-35 pull-right btn btn-small btn-primary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"icon-key\"></i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLogin\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"space-4\"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</fieldset>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"social-or-login center\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bigger-110\">爱学校(aixuexiao)</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"social-login center\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img alt=\"爱学校\" src=\"<%=request.getContextPath()%>/assets/images/getqrcode.jpeg\" style=\"height: 100px;width: 100px;\" >\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t</div><!--/widget-main-->\n\t\t\t\t\t\t\t\t\t\t\t</div><!--/widget-body-->\n\t\t\t\t\t\t\t\t\t\t</div><!--/login-box-->\n\t\n\t\t\t\t\t\t\t\t\t</div><!--/position-relative-->\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t\t</div>\n\t\t\t</div><!--/.main-container-->\n\t\t\t<!--basic scripts-->\n\t\n\t\t\t<!--[if !IE]>-->\n\t\n\t\t\t<script type=\"text/javascript\">\n\t\t\t\twindow.jQuery || document.write(\"<script src='<%=request.getContextPath()%>/assets/js/jquery-2.0.3.min.js'>\"+\"<\"+\"/script>\");\n\t\t\t</script>\n\t\t\t<!--<![endif]-->\n\t\n\t\t\t<!--[if IE]>\n\t\t\t<script type=\"text/javascript\">\n\t\t\t window.jQuery || document.write(\"<script src='<%=request.getContextPath()%>/assets/js/jquery-1.10.2.min.js'>\"+\"<\"+\"/script>\");\n\t\t\t</script>\n\t\t\t<![endif]-->\n\t\n\t\t\t<script type=\"text/javascript\">\n\t\t\t\tif(\"ontouchend\" in document) document.write(\"<script src='<%=request.getContextPath()%>/assets/js/jquery.mobile.custom.min.js'>\"+\"<\"+\"/script>\");\n\t\t\t</script>\n\t\t\t<script src=\"<%=request.getContextPath()%>/assets/js/bootstrap.min.js\"></script>\n\t\n\t\t\t<!--page specific plugin scripts-->\n\t\n\t\t\t<!--ace scripts-->\n\t\n\t\t\t<script src=\"<%=request.getContextPath()%>/assets/js/ace-elements.min.js\"></script>\n\t\t\t<script src=\"<%=request.getContextPath()%>/assets/js/ace.min.js\"></script>\n\t\n\t\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/messages.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>΢ŽϢ</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-comment\"></i>\n\t\t\t\t\t\t\t\t΢ŽϢ\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr >\n\t\t\t\t\t\t\t\t      <th  width=\"5%\">#</th>\n\t\t\t\t\t\t\t\t      <th width=\"15%\">MsgId</th>\n\t\t\t\t\t\t\t\t      <th width=\"10%\">MsgType</th>\n\t\t\t\t\t\t\t\t      <th width=\"15%\">FromUserName</th>\n\t\t\t\t\t\t\t\t      <th width=\"25%\">CreateTime</th>\n\t\t\t\t\t\t\t\t      <th width=\"30%\">Content</th>\n\t\t\t\t\t\t\t\t    </tr>\n\t\t\t\t\t\t\t\t  </thead>\n\t\t\t\t\t\t\t\t  <tbody>\n\t\t\t\t\t\t\t\t  \t<c:forEach items=\"${messageList}\"  var=\"message\"   varStatus=\"st\" >\n\t\t\t\t\t\t\t\t  \t\t<tr>\n\t\t\t\t\t\t\t\t  \t\t<td>${st.index+1}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${message.msgId}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${message.msgType}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${message.fromUserName}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${message.createTime}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${message.content}</td>\n\t\t\t\t\t\t\t\t  \t\t</tr>\n\t\t\t\t\t\t\t\t  \t</c:forEach>\n\t\t\t\t\t\t\t\t  </tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\n\t\t\t\t\t \t\t<div class=\"dataTables_paginate paging_bootstrap pagination\">\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/messages?pagenum=${pagenum-1}'\" <c:if test=\"${pagenum <= 1}\">disabled=\"disabled\"</c:if>    >&laquo;</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" disabled=\"disabled\"> ${pagenum} ҳ</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/messages?pagenum=${pagenum+1}'\" <c:if test=\"${length < 10}\">disabled=\"disabled\"</c:if> >&raquo;</button>\n\t\t\t\t\t \t\t</div>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/replys.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>΢ŽϢ</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-comment\"></i>\n\t\t\t\t\t\t\t\t΢ŻظϢ\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t <tr >\n\t\t\t\t\t\t\t\t      <th  width=\"5%\">#</th>\n\t\t\t\t\t\t\t\t      <th width=\"10%\">MsgType</th>\n\t\t\t\t\t\t\t\t      <th width=\"15%\">FromUserName</th>\n\t\t\t\t\t\t\t\t      <th width=\"25%\">CreateTime</th>\n\t\t\t\t\t\t\t\t      <th  >Content</th>\n\t\t\t\t\t\t\t\t    </tr>\n\t\t\t\t\t\t\t\t  </thead>\n\t\t\t\t\t\t\t\t  <tbody>\n\t\t\t\t\t\t\t\t  \t<c:forEach items=\"${replyList}\"  var=\"reply\"   varStatus=\"st\" >\n\t\t\t\t\t\t\t\t  \t\t<tr>\n\t\t\t\t\t\t\t\t  \t\t<td>${st.index+1}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${reply.msgType}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${reply.fromUserName}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${reply.createTime}</td>\n\t\t\t\t\t\t\t\t  \t\t<td>${reply.content}</td>\n\t\t\t\t\t\t\t\t  \t\t</tr>\n\t\t\t\t\t\t\t\t  \t</c:forEach>\n\t\t\t\t\t\t\t\t  </tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\n\t\t\t\t\t \t\t<div class=\"dataTables_paginate paging_bootstrap pagination\">\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/replys?pagenum=${pagenum-1}'\" <c:if test=\"${pagenum <= 1}\">disabled=\"disabled\"</c:if>    >&laquo;</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" disabled=\"disabled\"> ${pagenum} ҳ</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/replys?pagenum=${pagenum+1}'\" <c:if test=\"${length < 10}\">disabled=\"disabled\"</c:if> >&raquo;</button>\n\t\t\t\t\t \t\t</div>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/students.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>ѧϢ</title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-user\"></i>\n\t\t\t\t\t\t\t\tѧϢ\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form class=\"form-inline\" method=\"get\" action=\"<%=request.getContextPath() %>/manager/students\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"pagenum\" value=\"${pagenum}\">\n\t\t\t\t\t\t\t\t&nbsp;&nbsp;<input type=\"text\" name=\"name\" value=\"${student.name}\"  class=\"input-medium search-query\">&nbsp;&nbsp;&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t<select name=\"classid\">\n\t\t\t\t\t\t\t\t\t<option value=\"0\">ѡ༶</option>\n\t\t\t\t\t\t\t\t\t<c:forEach items=\"${clsList}\"  var=\"cls\"  >\n\t\t\t\t\t\t\t\t\t\t<option <c:if test=\"${student.classid == cls.id}\">selected=\"selected\"</c:if> value=\"${cls.id}\">${cls.name}</option>\n\t\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</select>&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t<button  type=\"submit\" class=\"btn btn-purple btn-small\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<i class=\"icon-search icon-on-right bigger-110\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t<table id=\"sample-table-1\" class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width=\"15%\">ѧ</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"15%\">ѧ</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"15%\">༶</th>\n\t\t\t\t\t\t\t\t\t\t<th>ע</th>\n\t\t\t\t\t\t\t\t\t\t<th width=\"20%\" ></th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<c:forEach items=\"${studentList}\"  var=\"student\"  >\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><a href=\"#\">${student.id}</a></td>\n\t\t\t\t\t\t\t\t\t\t<td>${student.name}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${student.classid}</td>\n\t\t\t\t\t\t\t\t\t\t<td>${student.remark}</td>\n\t\t\t\t\t\t\t\t\t\t<td >\n\t\t\t\t\t\t\t\t\t\t\t<button class=\"btn btn-mini btn-primary\" onclick=\"location.href='<%=request.getContextPath() %>/manager/leavemessage?studentid=${student.id}'\" ><i class=\"icon-comment\"></i>΢</button>\n\t\t\t\t\t\t\t\t\t\t\t<button class=\"btn btn-mini btn-primary\" onclick=\"location.href='<%=request.getContextPath() %>/manager/examdetail?studentid=${student.id}'\"><i class=\"icon-file\"></i></button>\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\n\t\t\t\t\t \t\t<div class=\"dataTables_paginate paging_bootstrap pagination\">\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/students?pagenum=${pagenum-1}'\" <c:if test=\"${pagenum <= 1}\">disabled=\"disabled\"</c:if>    >&laquo;</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" disabled=\"disabled\"> ${pagenum} ҳ</button>\n\t\t\t\t\t\t\t  <button class=\"btn btn-success btn-mini\" onclick=\"location.href='<%=request.getContextPath() %>/manager/students?pagenum=${pagenum+1}'\" <c:if test=\"${length < 8}\">disabled=\"disabled\"</c:if> >&raquo;</button>\n\t\t\t\t\t \t\t</div>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\n\t\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t\t\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/views/viewexam.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"GBK\"%>\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title></title>\n\t\t<meta name=\"description\" content=\"\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<%@include file=\"/WEB-INF/views/common/css.jsp\" %>\n\t</head>\n\t<body>\n\t\t<%@ include file=\"/WEB-INF/views/common/navbar.jsp\" %>\n\t\t<div class=\"main-container container-fluid\">\n\t\t\t<a class=\"menu-toggler\" id=\"menu-toggler\" href=\"#\">\n\t\t\t\t<span class=\"menu-text\"></span>\n\t\t\t</a>\n\t\t\t<%@ include file=\"/WEB-INF/views/common/sidebar.jsp\" %>\n\t\t\t<div class=\"main-content\">\n\t\t\t\t \n\t\t\t\t<div class=\"page-content\">\n\t\t\t\t\t<div class=\"page-header position-relative\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t<i class=\"icon-file\"></i>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"row-fluid\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"span12\">\n\t\t\t\t\t\t\t<!--PAGE CONTENT BEGINS-->\n\t\t\t\t\t\t\t<form action=\"addexammark\" id=\"addexammark\" class=\"form-horizontal\" method=\"post\">\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"classid\" value=\"${exam.classid }\" />\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"course\" value=\"${exam.course }\" />\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"fullmarks\" value=\"${exam.fullmarks }\" />\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"remark\" value=\"${exam.remark }\" />\n\t\t\t\t\t\t\t\t\t<label for=\"form-field-8\"> &nbsp;&nbsp;&nbsp; <b>${exam.classid}</b>  <b>${exam.course}</b>   \n\t\t\t\t\t\t\t\t\t<b>${exam.fullmarks}</b>֣ &nbsp;&nbsp;\n\t\t\t\t\t\t\t\t\tƽ<b>${exam.average}</b>֣&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t\t߷<b>${exam.topmark}</b>֣&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t\tͷ<b>${exam.lowestmark}</b>֣&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t\tע${exam.remark}\n\t\t\t\t\t\t\t\t\t</label><br>\n\t\t\t\t\t\t\t\t \t<table  class=\"table table-striped table-bordered table-hover\">\n\t\t\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<th>ѧ</th>\n\t\t\t\t\t\t\t\t\t\t\t\t<th>ѧ</th>\n\t\t\t\t\t\t\t\t\t\t\t\t<th></th>\n\t\t\t\t\t\t\t\t\t\t\t\t<th></th>\n\t\t\t\t\t\t\t\t\t\t\t\t<th>ע</th>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t \t<c:forEach items=\"${exam.examMarks}\"  var=\"em\" >\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>${em.studentid}</td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>${em.studentname}</td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>${em.rank}</td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>${em.mark}</td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>${em.remark}</td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t \t</c:forEach>\n\t\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-info\" type=\"button\" onclick=\"location.href='<%=request.getContextPath() %>/manager/exams'\" >\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon-arrow-left\"></i>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t<!--PAGE CONTENT ENDS-->\n\t\t\t\t\t</div><!--/.span-->\n\t\t\t\t</div><!--/.row-fluid-->\n\t\t\t</div><!--/.page-content-->\n\t\t</div><!--/.main-content-->\n\t</div><!--/.main-container-->\n\t<%@include file=\"/WEB-INF/views/common/js.jsp\" %>\n\t<script type=\"text/javascript\">\n\t\t$(function() {\n\t\t\t$('#add').on('click', function() {\n\t\t\t\tvar flag = true;\n\t\t\t\t$(\".mark\").each(function(){\n\t\t\t\t\tif($(this).val() == \"\"||isNaN($(this).val())||$(this).val() < 0||$(this).val()> ${exam.fullmarks}) {\n\t\t\t\t\t\talert('д');\n\t\t\t\t\t\tflag = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(flag)$(\"#addexammark\").submit();\n\t\t\t});\n\t\t});\n\t\t</script>\n\t</body>\n</html>"
  },
  {
    "path": "WebContent/WEB-INF/web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\" id=\"WebApp_ID\" version=\"2.5\">\n  <display-name>aixuexiao</display-name>\n  <welcome-file-list>\n    <welcome-file>index.jsp</welcome-file>\n  </welcome-file-list>\n  <servlet-mapping>\n    <servlet-name>default</servlet-name>\n    <url-pattern>/assets/*</url-pattern>\n  </servlet-mapping>\n  <context-param>\n    <param-name>contextConfigLocation</param-name>\n    <param-value>classpath:spring*.xml</param-value>\n  </context-param>\n  <listener>\n    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\n  </listener>\n  <servlet>\n    <servlet-name>springMVC</servlet-name>\n    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n    <load-on-startup>1</load-on-startup>\n  </servlet>\n  <servlet-mapping>\n    <servlet-name>springMVC</servlet-name>\n    <url-pattern>/</url-pattern>\n  </servlet-mapping>\n  <distributable/>\n</web-app>"
  },
  {
    "path": "WebContent/assets/css/ace-fonts.css",
    "content": "/* included only when we don't want to use fonts from google server */\r\n@font-face {\r\n  font-family: 'Open Sans';\r\n  font-style: normal;\r\n  font-weight: 300;\r\n  src: local('Open Sans Light'), local('OpenSans-Light'), url(../font/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff');\r\n}\r\n@font-face {\r\n  font-family: 'Open Sans';\r\n  font-style: normal;\r\n  font-weight: 400;\r\n  src: local('Open Sans'), local('OpenSans'), url(../font/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff');\r\n}"
  },
  {
    "path": "app_aixuexiao.sql",
    "content": "--\n-- 表的结构 `class`\n--\nCREATE TABLE IF NOT EXISTS `class` (\n  `id` smallint(5) unsigned NOT NULL COMMENT '班级编号，302表示三年级二班',\n  `name` char(16) NOT NULL COMMENT '班级名称，三年级二班',\n  `headteacher` char(8) NOT NULL COMMENT '班主任姓名',\n  `studentcount` tinyint(4) NOT NULL COMMENT '学生数量',\n  PRIMARY KEY (`id`)\n) ENGINE=MyISAM DEFAULT CHARSET=utf8;\n\n--\n-- 转存表中的数据 `class`\n--\nINSERT INTO `class` (`id`, `name`, `headteacher`, `studentcount`) VALUES\n(302, '三年级二班', '赖导', 7),\n(301, '三年级一班', '曾近荣', 7);\n\n-- --------------------------------------------------------\n\n--\n-- 表的结构 `class_news`\n--\nCREATE TABLE IF NOT EXISTS `class_news` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '公告编号',\n  `classid` int(10) unsigned NOT NULL COMMENT '考试班级',\n  `content` varchar(128) NOT NULL,\n  `inserttime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n  PRIMARY KEY (`id`),\n  KEY `index_class_news` (`classid`,`inserttime`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;\n--\n-- 转存表中的数据 `class_news`\n--\n\nINSERT INTO `class_news` (`id`, `classid`, `content`, `inserttime`) VALUES\n(1, 302, '大家好，三年级二班将于本周六举行家长会，届时请各位学生家长准时到达开会，谢谢！', '2013-08-21 10:42:04'),\n(2, 301, '各位学生家长注意了，最近有不少同学出现逃学的情况，还号称“逃学威龙”。', '2013-08-21 10:48:20');\n\n-- --------------------------------------------------------\n\n--\n-- 表的结构 `exam`\n--\n\nCREATE TABLE IF NOT EXISTS `exam` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '考试编号',\n  `classid` int(10) unsigned NOT NULL COMMENT '考试班级',\n  `course` char(8) NOT NULL COMMENT '科目',\n  `examtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '考试时间',\n  `fullmarks` decimal(4,1) NOT NULL COMMENT '满分',\n  `average` decimal(4,1) DEFAULT NULL COMMENT '平均分',\n  `topmark` decimal(4,1) DEFAULT NULL COMMENT '最高分',\n  `lowestmark` decimal(4,1) DEFAULT NULL COMMENT '最低分',\n  `remark` varchar(32) NOT NULL COMMENT '考试说明',\n  PRIMARY KEY (`id`),\n  KEY `index_exams` (`id`),\n  KEY `index_classes` (`classid`,`course`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;\n\n--\n-- 转存表中的数据 `exam`\n--\n\nINSERT INTO `exam` (`id`, `classid`, `course`, `examtime`, `fullmarks`, `average`, `topmark`, `lowestmark`, `remark`) VALUES\n(1, 301, '英语', '2013-08-21 10:56:07', 100.0, 84.1, 100.0, 59.0, '精诚中学三年级二班下学期英语单元测验'),\n(2, 302, '数学', '2013-08-22 11:02:20', 100.0, 88.3, 100.0, 78.0, '数学单元测验');\n\n-- --------------------------------------------------------\n\n--\n-- 表的结构 `exam_mark`\n--\n\nCREATE TABLE IF NOT EXISTS `exam_mark` (\n  `classid` int(10) unsigned NOT NULL COMMENT '考试班级',\n  `studentid` int(10) unsigned NOT NULL COMMENT '学生编号',\n  `studentname` char(8) NOT NULL COMMENT '学生姓名',\n  `examid` int(10) unsigned NOT NULL COMMENT '考试编号',\n  `mark` decimal(4,1) NOT NULL COMMENT '分数',\n  `examtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考试时间',\n  `rank` tinyint(4) DEFAULT NULL COMMENT '班级排名',\n  `remark` varchar(32) DEFAULT NULL COMMENT '备注',\n  PRIMARY KEY (`classid`,`studentid`,`examid`),\n  KEY `index_exam_mark` (`classid`,`studentid`,`studentname`,`examid`,`mark`)\n) ENGINE=MyISAM DEFAULT CHARSET=utf8;\n\n--\n-- 转存表中的数据 `exam_mark`\n--\n\nINSERT INTO `exam_mark` (`classid`, `studentid`, `studentname`, `examid`, `mark`, `examtime`, `rank`, `remark`) VALUES\n(301, 3011, '周星星', 1, 59.0, '2013-08-21 10:56:07', 7, '逃课就是这个下场'),\n(301, 3013, '大飞', 1, 60.0, '2013-08-21 10:56:07', 6, '这次给你及格了'),\n(301, 3014, '黄小龟', 1, 84.0, '2013-08-21 10:56:07', 5, '好好学习天天向上'),\n(301, 3017, '林大岳', 1, 91.0, '2013-08-21 10:56:07', 4, '继续努力'),\n(301, 3012, '曹达华', 1, 97.0, '2013-08-21 10:56:07', 3, '不错，有进步'),\n(301, 3016, '汤朱迪', 1, 98.0, '2013-08-21 10:56:07', 2, '这次发挥有点小失常哟'),\n(301, 3015, '仙蒂', 1, 100.0, '2013-08-21 10:56:07', 1, '满分不错，值得表扬'),\n(302, 3027, '许博淳', 2, 78.0, '2013-08-22 11:02:20', 7, '要加油了'),\n(302, 3022, '柯景腾', 2, 80.0, '2013-08-22 11:02:20', 6, '上课认真听讲'),\n(302, 3024, '谢明和', 2, 87.0, '2013-08-22 11:02:20', 5, '好好学习天天向上'),\n(302, 3026, '胡家玮', 2, 88.0, '2013-08-22 11:02:20', 4, '继续努力'),\n(302, 3023, '曹国胜', 2, 90.0, '2013-08-22 11:02:20', 3, '有进步'),\n(302, 3025, '廖英宏', 2, 95.0, '2013-08-22 11:02:20', 2, '非常好'),\n(302, 3021, '沈佳宜', 2, 100.0, '2013-08-22 11:02:20', 1, '非常不错，好好保持');\n\n-- --------------------------------------------------------\n\n--\n-- 表的结构 `message`\n--\n\nCREATE TABLE IF NOT EXISTS `message` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `tousername` char(32) NOT NULL,\n  `fromusername` char(32) NOT NULL,\n  `msgtype` enum('TEXT','IMAGE','LOCATION','LINK','EVENT') NOT NULL,\n  `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n  `msgId` char(64) NOT NULL,\n  `content` varchar(128) DEFAULT NULL,\n  `picurl` varchar(128) DEFAULT NULL,\n  `title` varchar(32) DEFAULT NULL,\n  `description` varchar(128) DEFAULT NULL,\n  `url` varchar(128) DEFAULT NULL,\n  `locationx` char(10) DEFAULT NULL,\n  `locationy` char(10) DEFAULT NULL,\n  `scale` char(8) DEFAULT NULL,\n  `label` varchar(32) DEFAULT NULL,\n  `event` varchar(16) DEFAULT NULL,\n  `eventkey` varchar(16) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `index_user` (`msgtype`,`tousername`,`fromusername`,`createtime`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;\n\n\n-- --------------------------------------------------------\n\n--\n-- 表的结构 `reply`\n--\n\nCREATE TABLE IF NOT EXISTS `reply` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `tousername` char(32) NOT NULL,\n  `fromusername` char(32) NOT NULL,\n  `msgtype` enum('TEXT','MUSIC','NEWS') NOT NULL,\n  `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n  `content` varchar(512) NOT NULL COMMENT '回复消息内容',\n  `musicurl` varchar(128) DEFAULT NULL,\n  `hqmusicurl` varchar(128) DEFAULT NULL,\n  `articlecount` tinyint(4) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `index_user` (`msgtype`,`tousername`,`fromusername`,`createtime`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;\n\n--\n-- 表的结构 `reply_article`\n--\nCREATE TABLE IF NOT EXISTS `reply_article` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `replyid` int(10) unsigned NOT NULL,\n  `title` varchar(32) NOT NULL,\n  `description` varchar(64) NOT NULL,\n  `picurl` varchar(128) NOT NULL,\n  `url` varchar(128) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `index_replyid` (`replyid`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;\n\n\n\n--\n-- 表的结构 `student`\n--\nCREATE TABLE IF NOT EXISTS `student` (\n  `id` int(10) unsigned NOT NULL COMMENT '学生学号，通常为班级编号加上序号，如3021',\n  `classid` int(10) unsigned NOT NULL COMMENT '所属班级编号',\n  `name` char(8) NOT NULL COMMENT '学生姓名',\n  `remark` varchar(32) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `index_classes` (`classid`,`name`)\n) ENGINE=MyISAM DEFAULT CHARSET=utf8;\n\n--\n-- 转存表中的数据 `student`\n--\nINSERT INTO `student` (`id`, `classid`, `name`, `remark`) VALUES\n(3021, 302, '沈佳宜', '佳宜（女主角）'),\n(3022, 302, '柯景腾', '柯腾（男主角）'),\n(3023, 302, '曹国胜', '老曹(柯腾的挚友)'),\n(3024, 302, '谢明和', '阿和(柯腾的挚友)'),\n(3025, 302, '廖英宏', '该边(柯腾的挚友)'),\n(3026, 302, '胡家玮', '弯弯(沈佳宜的好友)'),\n(3027, 302, '许博淳', '勃起(柯腾的挚友)'),\n(3011, 301, '周星星', '周星驰'),\n(3012, 301, '曹达华', '吴孟达'),\n(3013, 301, '大飞', '张耀扬'),\n(3014, 301, '黄小龟', '黄一山'),\n(3015, 301, '仙蒂', '朱茵'),\n(3016, 301, '汤朱迪', '梅艳芳'),\n(3017, 301, '林大岳', '黄秋生');\n\n-- --------------------------------------------------------\n\n--\n-- 表的结构 `student_message`\n--\nCREATE TABLE IF NOT EXISTS `student_message` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '消息编号',\n  `studentid` int(10) unsigned NOT NULL COMMENT '学生编号',\n  `inserttime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n  `content` varchar(128) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `index_student_message` (`studentid`,`inserttime`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;\n\n--\n-- 转存表中的数据 `student_message`\n--\n\nINSERT INTO `student_message` (`id`, `studentid`, `inserttime`, `content`) VALUES\n(1, 3011, '2013-08-21 11:09:44', '不准逃课'),\n(2, 3021, '2013-08-22 10:56:15', '好好学习天天向上哈');\n"
  },
  {
    "path": "src/com/aixuexiao/dao/BaseDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport javax.annotation.Resource;\n\nimport org.mybatis.spring.SqlSessionTemplate;\n\npublic class BaseDao {\n\n\t@Resource(name=\"readSqlSession\")\n\tpublic SqlSessionTemplate readSqlSession;\n\t\n\t@Resource(name=\"writerSqlSession\")\n\tpublic SqlSessionTemplate writerSqlSession;\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/ClassesDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Component;\n\nimport com.aixuexiao.model.Classes;\n\n@Component(\"classesDao\")\npublic class ClassesDao extends BaseDao {\n\n\t\n\tpublic List<Classes> findAllClasses() {\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.ClassesDao.selectAllClasses\");\n\t}\n\t\n\tpublic List<Classes> findClasses(int start,int size,Classes classes) {\n\t\tMap<String,Object> map = new HashMap<String,Object>();\n\t\tmap.put(\"start\", start);\n\t\tmap.put(\"size\", size);\n\t\tmap.put(\"classes\", classes);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.ClassesDao.selectClasses\",map);\n\t}\n\t\n\tpublic void addClasses(Classes classes){\n\t\twriterSqlSession.insert(\"com.aixuexiao.dao.ClassesDao.addClasses\", classes);\n\t}\n\t\n\tpublic Classes findClassesById(int id){\n\t\treturn readSqlSession.selectOne(\"com.aixuexiao.dao.ClassesDao.selectClassesById\", id);\n\t}\n\t\n\tpublic void updateClassStudentCount(int classid){\n\t\twriterSqlSession.update(\"com.aixuexiao.dao.ClassesDao.updateClassStudentCount\", classid);\n\t}\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/ClassesNewsDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Component;\n\nimport com.aixuexiao.model.Classes;\nimport com.aixuexiao.model.ClassesNews;\n\n@Component(\"classesNewsDao\")\npublic class ClassesNewsDao extends BaseDao {\n\n\n\tpublic List<ClassesNews> findClassesNewsByClassId(int classid,int limit) {\n\t\tMap<String,Integer> map = new HashMap<String,Integer>();\n\t\tmap.put(\"classid\", classid);\n\t\tmap.put(\"limit\", limit);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.ClassesNewsDao.selectClassesNewsByClassId\",map);\n\t}\n\t\n\t\n\tpublic void addClassesNews(ClassesNews classesNews){\n\t\twriterSqlSession.insert(\"com.aixuexiao.dao.ClassesNewsDao.addClassesNews\", classesNews);\n\t}\n\t\n\tpublic void deleteClassesNewsById(int id){\n\t\twriterSqlSession.delete(\"com.aixuexiao.dao.ClassesNewsDao.deleteClassesNewsById\", id);\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/ExamDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Component;\n\nimport com.aixuexiao.model.Classes;\nimport com.aixuexiao.model.Exam;\nimport com.aixuexiao.model.ExamMark;\n\n@Component(\"examDao\")\npublic class ExamDao extends BaseDao {\n\n\n\tpublic List<ExamMark> findExamMarkByStudentId(int studentid,int limit) {\n\t\tMap<String,Integer> map = new HashMap<String,Integer>();\n\t\tmap.put(\"studentid\", studentid);\n\t\tmap.put(\"limit\", limit);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.ExamDao.selectExamMarkByStudentId\",map);\n\t}\n\t\n\tpublic List<Exam> findExam(int start,int size,Exam exam){\n\t\tMap<String,Object> map = new HashMap<String,Object>();\n\t\tmap.put(\"start\", start);\n\t\tmap.put(\"size\", size);\n\t\tmap.put(\"exam\", exam);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.ExamDao.selectExam\",map);\n\t}\n\t\n\tpublic void addExam(Exam exam){\n\t\twriterSqlSession.insert(\"com.aixuexiao.dao.ExamDao.addExam\", exam);\n\t}\n\t\n\tpublic void addExamMark(ExamMark examMark){\n\t\twriterSqlSession.insert(\"com.aixuexiao.dao.ExamDao.addExamMark\", examMark);\n\t}\n\t\n\tpublic Exam findExamById(int id){\n\t\treturn this.readSqlSession.selectOne(\"com.aixuexiao.dao.ExamDao.selectExamById\",id);\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/MessageDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Component;\n\nimport com.aixuexiao.model.Message;\n\n@Component(\"messageDao\")\npublic class MessageDao extends BaseDao {\n\n\tpublic int addMessage(Message message) {\n\t\treturn this.writerSqlSession.insert(\"com.aixuexiao.dao.MessageDao.addMessage\", message);\n\t}\n\t\n\tpublic List<Message> findMessage(int start,int size) {\n\t\tMap<String,Integer> map = new HashMap<String,Integer>();\n\t\tmap.put(\"start\", start);\n\t\tmap.put(\"size\", size);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.MessageDao.selectMessage\",map);\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/ReplyDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Component;\n\nimport com.aixuexiao.model.Article;\nimport com.aixuexiao.model.Reply;\n\n@Component(\"replyDao\")\npublic class ReplyDao extends BaseDao {\n\n\tpublic void addReply(Reply reply) {\n\t\tthis.writerSqlSession.insert(\"com.aixuexiao.dao.ReplyDao.addReply\", reply);\n\t}\n\t\n\tpublic void addArticle(Article article){\n\t\tthis.writerSqlSession.insert(\"com.aixuexiao.dao.ReplyDao.addArticle\", article);\n\t}\n\t\n\tpublic List<Reply> findReply(int start,int size) {\n\t\tMap<String,Integer> map = new HashMap<String,Integer>();\n\t\tmap.put(\"start\", start);\n\t\tmap.put(\"size\", size);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.ReplyDao.selectReply\",map);\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/StudentDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Component;\n\nimport com.aixuexiao.model.Student;\n\n@Component(\"studentDao\")\npublic class StudentDao extends BaseDao {\n\n\n\tpublic Student findStudentById(int id) {\n\t\treturn this.readSqlSession.selectOne(\"com.aixuexiao.dao.StudentDao.selectStudentById\",id);\n\t}\n\t\n\tpublic List<Student> findStudent(int start,int size,Student student) {\n\t\tMap<String,Object> map = new HashMap<String,Object>();\n\t\tmap.put(\"start\", start);\n\t\tmap.put(\"size\", size);\n\t\tmap.put(\"student\", student);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.StudentDao.selectStudent\",map);\n\t}\n\t\n\tpublic List<Student> findStudentByClassesId(int classesid) {\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.StudentDao.selectStudentByClassesId\",classesid);\n\t}\n\t\n\tpublic int addStudent(Student student) {\n\t\treturn this.writerSqlSession.insert(\"com.aixuexiao.dao.StudentDao.addStudent\", student);\n\t}\n\t\n\tpublic int deleteStudentById(int studentid) {\n\t\treturn this.writerSqlSession.delete(\"com.aixuexiao.dao.StudentDao.deleteStudentById\", studentid);\n\t}\n\t\n\tpublic int updateStudent(Student student) {\n\t\treturn this.writerSqlSession.update(\"com.aixuexiao.dao.StudentDao.updateStudent\", student);\n\t}\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/StudentMessageDao.java",
    "content": "package com.aixuexiao.dao;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.stereotype.Component;\n\nimport com.aixuexiao.model.Message;\nimport com.aixuexiao.model.StudentMessage;\n\n@Component(\"studentMessageDao\")\npublic class StudentMessageDao extends BaseDao {\n\n\n\tpublic List<StudentMessage> findStudentMessageByStudentId(int studentid,int limit) {\n\t\tMap<String,Integer> map = new HashMap<String,Integer>();\n\t\tmap.put(\"studentid\", studentid);\n\t\tmap.put(\"limit\", limit);\n\t\treturn this.readSqlSession.selectList(\"com.aixuexiao.dao.StudentMessageDao.selectStudentMessageByStudentId\",map);\n\t}\n\t\n\tpublic int addStudentMessage(StudentMessage studentMessage) {\n\t\treturn this.writerSqlSession.insert(\"com.aixuexiao.dao.StudentMessageDao.addStudentMessage\", studentMessage);\n\t}\n\t\n\tpublic int deleteStudentMessageById(int id) {\n\t\treturn this.writerSqlSession.delete(\"com.aixuexiao.dao.StudentMessageDao.deleteStudentMessageById\", id);\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/dao/sqlmap/ClassesMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n\r\n<mapper namespace=\"com.aixuexiao.dao.ClassesDao\">\r\n\t\r\n    <select id=\"selectAllClasses\"  parameterType=\"int\"   resultMap=\"classesMap\"  >\r\n\t   select id,name,headteacher,studentcount  \r\n\t   from class  \r\n\t   order by id  \r\n\t</select>\r\n    \r\n    <select id=\"selectClassesById\"  parameterType=\"int\"   resultMap=\"classesMap\"  >\r\n\t   select id,name,headteacher,studentcount  \r\n\t   from class  \r\n\t   where id = #{id}\r\n\t</select>\r\n    \r\n    <update id=\"updateClassStudentCount\" parameterType=\"int\">\r\n        update class set  studentcount = (select count(id) from student where classid = #{id})\r\n        where id = #{id}\r\n        \r\n    </update>\r\n    \r\n\t<select id=\"selectClasses\"  parameterType=\"java.util.HashMap\"   resultMap=\"classesMap\"  >\r\n\t   select id,name,headteacher,studentcount  \r\n\t   from class  \r\n\t   <where>\r\n\t       <if test=\"classes.name!=null\">\r\n\t\t  \t name like  CONCAT('%','${classes.name}','%' )\r\n\t       </if>\r\n\t   </where>\r\n\t   order by id  \r\n\t   limit #{start},#{size}\r\n\t</select>\r\n\t\r\n\t<insert id=\"addClasses\" parameterType=\"com.aixuexiao.model.Classes\">\r\n\t\tinsert into class (id,name,headteacher,studentcount)\r\n\t\t values(#{id},#{name},#{headteacher},#{studentcount})\r\n\t</insert>\r\n\t\r\n\t <resultMap type=\"Classes\" id=\"classesMap\">\r\n\t     <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"name\" column=\"name\"/>  \r\n\t     <result property=\"headteacher\" column=\"headteacher\"/>\r\n\t     <result property=\"studentcount\" column=\"studentcount\"/>\r\n\t</resultMap>\r\n\t \r\n</mapper>"
  },
  {
    "path": "src/com/aixuexiao/dao/sqlmap/ClassesNewsMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n\r\n<mapper namespace=\"com.aixuexiao.dao.ClassesNewsDao\">\r\n    \r\n\t\r\n\t<select id=\"selectClassesNewsByClassId\" parameterType=\"int\"   resultMap=\"classesNewsMap\"  >\r\n\t   select id,classid,content,inserttime \r\n\t   from class_news\r\n\t   where classid = #{classid}\r\n\t   order by inserttime desc\r\n\t   limit #{limit}\r\n\t</select>    \r\n\t    \r\n\t<insert id=\"addClassesNews\" parameterType=\"com.aixuexiao.model.ClassesNews\">\r\n\t\tinsert into class_news (classid,content,inserttime )\r\n\t\t values(#{classid},#{content},#{inserttime})\r\n\t</insert>\r\n\t\r\n\t<delete id=\"deleteClassesNewsById\"  parameterType=\"int\" >\r\n\t    delete from class_news where id = #{id}\r\n\t</delete>\r\n\t\r\n\t <resultMap type=\"ClassesNews\" id=\"classesNewsMap\">\r\n\t     <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"classid\" column=\"classid\"/>  \r\n\t     <result property=\"content\" column=\"content\"/>\r\n\t     <result property=\"inserttime\" column=\"inserttime\"/>\r\n\t</resultMap>\r\n\t\r\n</mapper>"
  },
  {
    "path": "src/com/aixuexiao/dao/sqlmap/ExamMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n\r\n<mapper namespace=\"com.aixuexiao.dao.ExamDao\">\r\n\t\r\n    \r\n    <select id=\"selectExam\"  parameterType=\"java.util.HashMap\"   resultMap=\"examMap\"  >\r\n\t   select id,classid,course,examtime,fullmarks,average,topmark,lowestmark,remark \r\n\t   from exam \r\n\t\t<where>\r\n\t\t    <if test=\"exam.classid != 0\">classid = #{exam.classid}</if>\r\n\t\t    <if test=\"exam.course != null and exam.course != ''\">and course = #{exam.course}</if>\r\n\t\t</where>\t   \r\n\t   order by id  \r\n\t   limit #{start},#{size}\r\n\t</select>\r\n\t\r\n\t<select id=\"selectExamById\" parameterType=\"int\"   resultMap=\"examMap\"  >\r\n\t   select id,classid,course,examtime,fullmarks,average,topmark,lowestmark,remark \r\n\t   from exam\r\n\t   where id = #{id}\r\n\t</select>    \r\n\t    \r\n\t<select id=\"selectExamMarkByStudentId\" parameterType=\"int\"   resultMap=\"examMarkMap\"  >\r\n\t   select  examid,classid,studentid,studentname,examtime,mark,rank,remark \r\n\t   from exam_mark \r\n\t   where studentid = #{studentid}\r\n\t   order by examtime desc \r\n\t   limit #{limit}\r\n\t</select>   \r\n\t\r\n\t<select id=\"selectExamMarkByExamId\" parameterType=\"int\"   resultMap=\"examMarkMap\"  >\r\n\t   select  examid,classid,studentid,studentname,examtime,mark,rank,remark \r\n\t   from exam_mark \r\n\t   where examid = #{examid}\r\n\t</select>  \r\n\t\r\n\t<insert id=\"addExam\" parameterType=\"com.aixuexiao.model.Exam\">\r\n\t    <selectKey    keyProperty=\"id\" resultType=\"int\" order=\"AFTER\"> \r\n\t      SELECT LAST_INSERT_ID() AS id\r\n\t    </selectKey> \r\n\t\tinsert into exam (classid,course,examtime,fullmarks,average,topmark,lowestmark,remark)\r\n\t\t values(#{classid},#{course},#{examtime},#{fullmarks},#{average},#{topmark},#{lowestmark},#{remark})\r\n\t</insert>\r\n\t\r\n\t<insert id=\"addExamMark\" parameterType=\"com.aixuexiao.model.ExamMark\">\r\n\t\tinsert into exam_mark (examid,classid,studentid,studentname,examtime,mark,rank,remark)\r\n\t\t values(#{examid},#{classid},#{studentid},#{studentname},#{examtime},#{mark},#{rank},#{remark})\r\n\t</insert>\r\n\t\r\n\t <resultMap type=\"Exam\" id=\"examMap\">\r\n\t     <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"classid\" column=\"classid\"/>  \r\n\t     <result property=\"course\" column=\"course\"/>\r\n\t     <result property=\"examtime\" column=\"examtime\"/>\r\n\t     <result property=\"fullmarks\" column=\"fullmarks\"/>\r\n\t     <result property=\"average\" column=\"average\"/>\r\n\t     <result property=\"topmark\" column=\"topmark\"/>\r\n\t     <result property=\"lowestmark\" column=\"lowestmark\"/>\r\n\t     <result property=\"remark\" column=\"remark\"/>\r\n\t     <collection property=\"examMarks\" column=\"id\" ofType=\"ExamMark\" select=\"selectExamMarkByExamId\"/> \r\n\t</resultMap>\r\n\t\r\n\t<resultMap type=\"ExamMark\" id=\"examMarkMap\">\r\n\t     <result property=\"examid\" column=\"examid\"/>  \r\n\t     <result property=\"classid\" column=\"classid\"/>\r\n\t     <result property=\"studentid\" column=\"studentid\"/>\r\n\t     <result property=\"studentname\" column=\"studentname\"/>\r\n\t     <result property=\"examtime\" column=\"examtime\"/>\r\n\t     <result property=\"mark\" column=\"mark\"/>\r\n\t     <result property=\"rank\" column=\"rank\"/>\r\n\t     <result property=\"remark\" column=\"remark\"/>\r\n\t     <association property=\"exam\" javaType=\"Exam\"  column=\"examid\" select=\"selectExamById\"/> \r\n\t</resultMap>\r\n\t \r\n</mapper>"
  },
  {
    "path": "src/com/aixuexiao/dao/sqlmap/MessageMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n\r\n<mapper namespace=\"com.aixuexiao.dao.MessageDao\">\r\n    \r\n\t<insert id=\"addMessage\" parameterType=\"com.aixuexiao.model.Message\">\r\n\t\tinsert into message (tousername,fromusername,msgtype,createtime,msgid,content,picurl,title,description,url,locationx,locationy,scale,label,event,eventkey)\r\n\t\t values(#{toUserName},#{fromUserName},#{msgType},#{createTime},#{msgId},#{content},#{picUrl},#{title},#{description},#{url},#{locationX},#{locationY},#{scale},#{label},#{event},#{eventKey})\r\n\t</insert>\r\n\t\r\n\t<select id=\"selectMessage\"  parameterType=\"int\"   resultMap=\"messageMap\"  >\r\n\t   select id,tousername,fromusername,msgtype,createtime,msgid,content,picurl,title,description,url,locationx,locationy,scale,label,event,eventkey \r\n\t   from message \r\n\t   order by createtime desc \r\n\t   limit #{start},#{size}\r\n\t</select>\r\n\t    \r\n\t<resultMap type=\"Message\" id=\"messageMap\">\r\n\t     <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"toUserName\" column=\"tousername\"/>  \r\n\t     <result property=\"fromUserName\" column=\"fromusername\"/>\r\n\t     <result property=\"msgType\" column=\"msgtype\"/>\r\n\t     <result property=\"createTime\" column=\"createtime\"/>\r\n\t     <result property=\"msgId\" column=\"msgid\"/>\r\n\t     <result property=\"picUrl\" column=\"picurl\"/>\r\n\t     <result property=\"title\" column=\"title\"/>\r\n\t     <result property=\"description\" column=\"description\"/>\r\n\t\t <result property=\"url\" column=\"url\"/>\r\n\t\t <result property=\"locationX\" column=\"locationx\"/>\r\n\t\t <result property=\"locationY\" column=\"locationy\"/>\r\n\t\t <result property=\"scale\" column=\"scale\"/>\r\n\t\t <result property=\"label\" column=\"label\"/>\r\n\t\t <result property=\"event\" column=\"event\"/>\r\n\t\t <result property=\"eventKey\" column=\"eventkey\"/>\r\n\t</resultMap>\r\n\t\r\n</mapper>"
  },
  {
    "path": "src/com/aixuexiao/dao/sqlmap/ReplyMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\r\n<mapper namespace=\"com.aixuexiao.dao.ReplyDao\">\r\n\t\r\n    \r\n\t<insert id=\"addReply\" parameterType=\"com.aixuexiao.model.Reply\"> \r\n\t    <selectKey    keyProperty=\"id\" resultType=\"int\" order=\"AFTER\"> \r\n\t      SELECT LAST_INSERT_ID() AS id\r\n\t    </selectKey> \r\n\t    insert into reply(tousername,fromusername,msgtype,createtime,content,musicurl,hqmusicurl,articlecount) \r\n\t    values (#{toUserName},#{fromUserName},#{msgType},#{createTime},#{content},#{musicUrl},#{hQMusicUrl},#{articleCount}) \r\n\t</insert>\r\n\r\n\t<insert id=\"addArticle\"    parameterType=\"com.aixuexiao.model.Article\"> \r\n\t    INSERT INTO reply_article (replyid,title,description,picurl,url ) \r\n\t    VALUES(#{replyId},#{title},#{description},#{picUrl},#{url}) \r\n\t </insert>    \r\n\r\n\t<select id=\"selectReply\"  parameterType=\"int\" resultMap=\"replyMap\">\r\n\t   select id,tousername,fromusername,msgtype,createtime,content,musicurl,hqmusicurl,articlecount \r\n\t   from reply\r\n\t   order by createtime desc \r\n\t   limit #{start},#{size}\r\n\t</select>\r\n\t\r\n\t<select id=\"selectReplyById\"  parameterType=\"int\" resultMap=\"replyMap\">\r\n\t   select id,tousername,fromusername,msgtype,createtime,content,musicurl,hqmusicurl,articlecount \r\n\t   from reply\r\n\t   where id = #{id} \r\n\t</select>\r\n\t\r\n\t<select id=\"selectArticleByReplyId\"  parameterType=\"int\" resultMap=\"articleMap\">\r\n\t   select id,replyid,title,description,picurl,url \r\n\t   from reply_article\r\n\t   where replyid = #{replyid} \r\n\t</select>\r\n\t\r\n\t<resultMap type=\"Reply\" id=\"replyMap\">\r\n\t     <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"toUserName\" column=\"tousername\"/>  \r\n\t     <result property=\"fromUserName\" column=\"fromusername\"/>\r\n\t     <result property=\"msgType\" column=\"msgtype\"/>\r\n\t     <result property=\"createTime\" column=\"createtime\"/>\r\n\t     <result property=\"content\" column=\"content\"/>\r\n\t     <result property=\"musicUrl\" column=\"musicurl\"/>\r\n\t     <result property=\"hQMusicUrl\" column=\"hqmusicurl\"/>\r\n\t\t<result property=\"articleCount\" column=\"articlecount\"/>\r\n\t    <collection property=\"articles\" column=\"id\" ofType=\"Article\" select=\"selectArticleByReplyId\"/> \r\n\t</resultMap>\r\n\t\r\n\t<resultMap type=\"Article\" id=\"articleMap\">\r\n\t   \t <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"title\" column=\"title\"/>  \r\n\t     <result property=\"description\" column=\"description\"/>\r\n\t     <result property=\"picUrl\" column=\"picurl\"/>\r\n\t     <result property=\"url\" column=\"url\"/>\r\n\t     <result property=\"replyId\" column=\"replyid\"/>\r\n\t     <association property=\"reply\" javaType=\"Reply\"  column=\"replyid\" select=\"selectReplyById\"/> \r\n\t</resultMap>\r\n\t\r\n</mapper>"
  },
  {
    "path": "src/com/aixuexiao/dao/sqlmap/StudentMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n\r\n<mapper namespace=\"com.aixuexiao.dao.StudentDao\">\r\n\t\r\n\t<select id=\"selectStudentById\" parameterType=\"int\"   resultMap=\"studentMap\"  >\r\n\t   select id,classid,name,remark \r\n\t   from student\r\n\t   where id = #{id}\r\n\t</select>    \r\n\t\r\n\t<select id=\"selectStudentByClassesId\" parameterType=\"int\"   resultMap=\"studentMap\"  >\r\n\t   select id,classid,name,remark \r\n\t   from student\r\n\t   where classid = #{classid}\r\n\t</select>  \r\n\t\r\n\t<select id=\"selectStudent\"  parameterType=\"java.util.HashMap\"   resultMap=\"studentMap\"  >\r\n\t   select id,classid,name,remark \r\n\t   from student \r\n\t\t<where>\r\n\t\t    <if test=\"student.classid != 0\">classid = #{student.classid}</if>\r\n\t\t    <if test=\"student.name != null and student.name != ''\">and name like CONCAT('%','${student.name}','%' )</if>\r\n\t\t</where>\t   \r\n\t   order by id  \r\n\t   limit #{start},#{size}\r\n\t</select>\r\n\t\r\n\t<update id=\"updateStudent\"  parameterType=\"com.aixuexiao.model.Student\">\r\n\t    update student \r\n\t    set classid=#{classid},name=#{name},remark=#{remark}\r\n\t    where id = #{id}\r\n\t</update>\r\n\t\r\n\t<insert id=\"addStudent\" parameterType=\"com.aixuexiao.model.Student\">\r\n\t\tinsert into student (id,classid,name,remark )\r\n\t\t values(#{id},#{classid},#{name},#{remark})\r\n\t</insert>\r\n\t\r\n\t<delete id=\"deleteStudentById\" parameterType=\"int\" >\r\n\t    delete from student where id = #{id}\r\n\t</delete>\r\n\t\r\n\t <resultMap type=\"Student\" id=\"studentMap\">\r\n\t     <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"classid\" column=\"classid\"/>  \r\n\t     <result property=\"name\" column=\"name\"/>\r\n\t     <result property=\"remark\" column=\"remark\"/>\r\n\t</resultMap>\r\n\t\r\n</mapper>"
  },
  {
    "path": "src/com/aixuexiao/dao/sqlmap/StudentMessageMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n\r\n<mapper namespace=\"com.aixuexiao.dao.StudentMessageDao\">\r\n    \r\n\t\r\n\t<select id=\"selectStudentMessageByStudentId\" parameterType=\"int\"   resultMap=\"studentMessageMap\"  >\r\n\t   select id,studentid,content,inserttime \r\n\t   from student_message\r\n\t   where studentid = #{studentid}\r\n\t   order by inserttime desc\r\n\t   limit #{limit}\r\n\t</select>    \r\n\t    \r\n\t<insert id=\"addStudentMessage\" parameterType=\"com.aixuexiao.model.StudentMessage\">\r\n\t\tinsert into student_message (studentid,content,inserttime )\r\n\t\t values(#{studentid},#{content},#{inserttime})\r\n\t</insert>\r\n\t\r\n\t<delete id=\"deleteStudentMessageById\" parameterType=\"int\" >\r\n\t    delete from student_message where id = #{id}\r\n\t</delete>\r\n\t\r\n\t <resultMap type=\"StudentMessage\" id=\"studentMessageMap\">\r\n\t     <id property=\"id\" column=\"id\" />  \r\n\t     <result property=\"studentid\" column=\"studentid\"/>  \r\n\t     <result property=\"content\" column=\"content\"/>\r\n\t     <result property=\"inserttime\" column=\"inserttime\"/>\r\n\t</resultMap>\r\n\t\r\n</mapper>"
  },
  {
    "path": "src/com/aixuexiao/model/Article.java",
    "content": "package com.aixuexiao.model;\n\nimport com.thoughtworks.xstream.annotations.XStreamAlias;\nimport com.thoughtworks.xstream.annotations.XStreamOmitField;\n\n/**\n * 图文消息\n * @author lizy\n */\npublic class Article {\n\t\n\t@XStreamOmitField\n\tprivate int id;//数据库存储的id\n\t\n    // 图文消息名称  \n\t@XStreamAlias(\"Title\")\n    private String title;  \n    // 图文消息描述  \n\t@XStreamAlias(\"Description\")\n    private String description;  \n    // 图片链接，支持JPG、PNG格式，较好的效果为大图640*320，小图80*80，限制图片链接的域名需要与开发者填写的基本资料中的Url一致  \n\t@XStreamAlias(\"PicUrl\")\n    private String picUrl;  \n    // 点击图文消息跳转链接  \n\t@XStreamAlias(\"Url\")\n    private String url;\n\t\n\t@XStreamOmitField\n\tprivate int replyId;\n\t\n\tprivate Reply reply;\n\t\n\tpublic Article() {}\n\t\n\tpublic Article(String title, String description, String picUrl, String url) {\n\t\tthis.title = title;\n\t\tthis.description = description;\n\t\tthis.picUrl = picUrl;\n\t\tthis.url = url;\n\t}\n\t\n\t\n\t\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic String getPicUrl() {\n\t\treturn picUrl;\n\t}\n\tpublic void setPicUrl(String picUrl) {\n\t\tthis.picUrl = picUrl;\n\t}\n\tpublic String getUrl() {\n\t\treturn url;\n\t}\n\tpublic void setUrl(String url) {\n\t\tthis.url = url;\n\t}\n\n\tpublic int getReplyId() {\n\t\treturn replyId;\n\t}\n\n\tpublic void setReplyId(int replyId) {\n\t\tthis.replyId = replyId;\n\t}\n\n\tpublic Reply getReply() {\n\t\treturn reply;\n\t}\n\n\tpublic void setReply(Reply reply) {\n\t\tthis.reply = reply;\n\t}\n\t\n    \n    \n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/Classes.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\n\n/**\n * 班级实体\n */\npublic class Classes implements Serializable {\n\t\n\t/**\n\t * 班级编号 \n\t */\n\tprivate int id;\n\t\n\t/**\n\t * 班级名称 如： 三年级二班\n\t */\n\tprivate String name;\n\t\n\t/**\n\t * 班主任\n\t */\n\tprivate String headteacher;\n\t\n\t/**\n\t * 学生数量\n\t */\n\tprivate int studentcount;\n\n\t\n\t\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getHeadteacher() {\n\t\treturn headteacher;\n\t}\n\n\tpublic void setHeadteacher(String headteacher) {\n\t\tthis.headteacher = headteacher;\n\t}\n\n\tpublic int getStudentcount() {\n\t\treturn studentcount;\n\t}\n\n\tpublic void setStudentcount(int studentcount) {\n\t\tthis.studentcount = studentcount;\n\t}\n\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/ClassesNews.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 班级动态\n */\npublic class ClassesNews implements Serializable {\n\t\n\t/**\n\t * 公告编号\n\t */\n\tprivate int id;\n\t\n\t/**\n\t * 班级编号\n\t */\n\tprivate int classid;\n\t\n\t/**\n\t * 公告内容\n\t */\n\tprivate String content;\n\t\n\t/**\n\t * 发布时间\n\t */\n\tprivate Date inserttime;\n\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic int getClassid() {\n\t\treturn classid;\n\t}\n\n\tpublic void setClassid(int classid) {\n\t\tthis.classid = classid;\n\t}\n\n\t\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\n\tpublic Date getInserttime() {\n\t\treturn inserttime;\n\t}\n\n\tpublic void setInserttime(Date inserttime) {\n\t\tthis.inserttime = inserttime;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/Exam.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * 考试实体\n */\npublic class Exam implements Serializable {\n\t\n\t/**\n\t * 考试编号\n\t */\n\tprivate int id;\n\t\n\t/**\n\t * 班级编号\n\t */\n\tprivate int classid;\n\t\n\t/**\n\t * 考试科目\n\t */\n\tprivate String course;\n\t\n\t/**\n\t * 考试时间\n\t */\n\tprivate Date examtime;\n\t\n\t/**\n\t * 考试满分\n\t */\n\tprivate BigDecimal fullmarks;\n\t\n\t/**\n\t * 平均分\n\t */\n\tprivate BigDecimal average;\n\t\n\t/**\n\t * 最高分\n\t */\n\tprivate BigDecimal topmark;\n\t\n\t/**\n\t * 最低分\n\t */\n\tprivate BigDecimal lowestmark;\n\t\n\t/**\n\t * 考试备注\n\t */\n\tprivate String remark;\n\n\t/**\n\t * 考试的成绩列表\n\t */\n\tprivate List<ExamMark> examMarks;\n\t\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic int getClassid() {\n\t\treturn classid;\n\t}\n\n\tpublic void setClassid(int classid) {\n\t\tthis.classid = classid;\n\t}\n\n\tpublic String getCourse() {\n\t\treturn course;\n\t}\n\n\tpublic void setCourse(String course) {\n\t\tthis.course = course;\n\t}\n\n\tpublic Date getExamtime() {\n\t\treturn examtime;\n\t}\n\n\tpublic void setExamtime(Date examtime) {\n\t\tthis.examtime = examtime;\n\t}\n\n\t\n\tpublic BigDecimal getFullmarks() {\n\t\treturn fullmarks;\n\t}\n\n\tpublic void setFullmarks(BigDecimal fullmarks) {\n\t\tthis.fullmarks = fullmarks;\n\t}\n\n\tpublic BigDecimal getAverage() {\n\t\treturn average;\n\t}\n\n\tpublic void setAverage(BigDecimal average) {\n\t\tthis.average = average;\n\t}\n\n\tpublic BigDecimal getTopmark() {\n\t\treturn topmark;\n\t}\n\n\tpublic void setTopmark(BigDecimal topmark) {\n\t\tthis.topmark = topmark;\n\t}\n\n\tpublic BigDecimal getLowestmark() {\n\t\treturn lowestmark;\n\t}\n\n\tpublic void setLowestmark(BigDecimal lowestmark) {\n\t\tthis.lowestmark = lowestmark;\n\t}\n\n\tpublic String getRemark() {\n\t\treturn remark;\n\t}\n\n\tpublic void setRemark(String remark) {\n\t\tthis.remark = remark;\n\t}\n\n\tpublic List<ExamMark> getExamMarks() {\n\t\treturn examMarks;\n\t}\n\n\tpublic void setExamMarks(List<ExamMark> examMarks) {\n\t\tthis.examMarks = examMarks;\n\t}\n\n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/ExamMark.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.util.Date;\n\n/**\n * 考试分数\n */\npublic class ExamMark implements Serializable,Comparable<ExamMark> {\n\t\n\t/**\n\t * 考试编号\n\t */\n\tprivate int examid;\n\t\n\t/**\n\t * 班级编号\n\t */\n\tprivate int classid;\n\t\n\t/**\n\t * 学生编号\n\t */\n\tprivate int studentid;\n\t\n\t/**\n\t * 学生姓名\n\t */\n\tprivate String studentname;\n\t\n\t/**\n\t * 考试时间\n\t */\n\tprivate Date examtime;\n\t\n\t/**\n\t * 分数\n\t */\n\tprivate BigDecimal mark;\n\t\n\t/**\n\t * 排名\n\t */\n\tprivate int rank;\n\t \n\t/**\n\t * 考试备注\n\t */\n\tprivate String remark;\n\n\t/**\n\t * 所属考试实体\n\t */\n\tprivate Exam exam;\n\t\n\tpublic int getExamid() {\n\t\treturn examid;\n\t}\n\n\tpublic void setExamid(int examid) {\n\t\tthis.examid = examid;\n\t}\n\n\tpublic int getClassid() {\n\t\treturn classid;\n\t}\n\n\tpublic void setClassid(int classid) {\n\t\tthis.classid = classid;\n\t}\n\n\tpublic int getStudentid() {\n\t\treturn studentid;\n\t}\n\n\tpublic void setStudentid(int studentid) {\n\t\tthis.studentid = studentid;\n\t}\n\n\tpublic Date getExamtime() {\n\t\treturn examtime;\n\t}\n\n\tpublic void setExamtime(Date examtime) {\n\t\tthis.examtime = examtime;\n\t}\n\t\n\tpublic BigDecimal getMark() {\n\t\treturn mark;\n\t}\n\n\tpublic void setMark(BigDecimal mark) {\n\t\tthis.mark = mark;\n\t}\n\n\tpublic int getRank() {\n\t\treturn rank;\n\t}\n\n\tpublic void setRank(int rank) {\n\t\tthis.rank = rank;\n\t}\n\n\tpublic String getRemark() {\n\t\treturn remark;\n\t}\n\n\tpublic void setRemark(String remark) {\n\t\tthis.remark = remark;\n\t}\n\n\tpublic Exam getExam() {\n\t\treturn exam;\n\t}\n\n\tpublic void setExam(Exam exam) {\n\t\tthis.exam = exam;\n\t}\n\n\t\n\tpublic String getStudentname() {\n\t\treturn studentname;\n\t}\n\n\tpublic void setStudentname(String studentname) {\n\t\tthis.studentname = studentname;\n\t}\n\n\t@Override\n\tpublic int compareTo(ExamMark em) {\n\t\treturn this.mark.compareTo(em.mark);\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn \"ExamMark [examid=\" + examid + \", classid=\" + classid\n\t\t\t\t+ \", studentid=\" + studentid + \", examtime=\" + examtime\n\t\t\t\t+ \", mark=\" + mark + \", rank=\" + rank + \", remark=\" + remark\n\t\t\t\t+ \", exam=\" + exam + \"]\";\n\t}\n\n\t \n\t\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/Message.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\nimport com.thoughtworks.xstream.annotations.XStreamOmitField;\n\n/**\n * 微信消息（服务端接收到的）\n * @author lizy\n */\npublic  class Message implements Serializable{\n\n\tpublic static final String TEXT = \"text\";\n\tpublic static final String IMAGE = \"image\";\n\tpublic static final String LOCATION = \"location\";\n\tpublic static final String LINK = \"link\";\n\tpublic static final String EVENT = \"event\";\n\t\n\t@XStreamOmitField\n\tprivate int id;//数据库存储的id\n\t\n\t// 开发者微信号  \n    private String toUserName;  \n    // 发送方帐号（一个OpenID）  \n    private String fromUserName;  \n    // 消息创建时间    \n    private Date createTime;  \n    // 消息类型（text/image/location/link）  \n    private String msgType;  \n    // 消息id，64位整型  \n    private String msgId;\n    \n    // 消息内容 (文本消息专有)\n    private String content;\n    \n    //图片链接 (图片消息专有)\n    private String picUrl;\n    \n    // 消息标题 (链接消息专有) \n    private String title;  \n    // 消息描述 (链接消息专有) \n    private String description;  \n    // 消息链接  (链接消息专有)\n    private String url;\n    \n    \n    //地理位置纬度 Location_X(地理位置专有)\n    private String locationX;\n    //地理位置经度 Location_Y(地理位置专有)\n    private String locationY;\n    // 地图缩放大小  (地理位置专有)\n    private String scale;  \n    // 地理位置信息  (地理位置专有)\n    private String label;\n    \n    \n    //事件类型，subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件) （事件推送专有）\n    private String event;\n    //事件KEY值，与自定义菜单接口中KEY值对应（事件推送专有）\n    private String eventKey;\n    \n    \n\tpublic int getId() {\n\t\treturn id;\n\t}\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\tpublic String getToUserName() {\n\t\treturn toUserName;\n\t}\n\tpublic void setToUserName(String toUserName) {\n\t\tthis.toUserName = toUserName;\n\t}\n\tpublic String getFromUserName() {\n\t\treturn fromUserName;\n\t}\n\tpublic void setFromUserName(String fromUserName) {\n\t\tthis.fromUserName = fromUserName;\n\t}\n\tpublic Date getCreateTime() {\n\t\treturn createTime;\n\t}\n\tpublic void setCreateTime(Date createTime) {\n\t\tthis.createTime = createTime;\n\t}\n\tpublic String getMsgType() {\n\t\treturn msgType;\n\t}\n\tpublic void setMsgType(String msgType) {\n\t\tthis.msgType = msgType;\n\t}\n\tpublic String getMsgId() {\n\t\treturn msgId;\n\t}\n\tpublic void setMsgId(String msgId) {\n\t\tthis.msgId = msgId;\n\t}\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\tpublic String getPicUrl() {\n\t\treturn picUrl;\n\t}\n\tpublic void setPicUrl(String picUrl) {\n\t\tthis.picUrl = picUrl;\n\t}\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic String getUrl() {\n\t\treturn url;\n\t}\n\tpublic void setUrl(String url) {\n\t\tthis.url = url;\n\t}\n\tpublic String getLocationX() {\n\t\treturn locationX;\n\t}\n\tpublic void setLocationX(String locationX) {\n\t\tthis.locationX = locationX;\n\t}\n\tpublic String getLocationY() {\n\t\treturn locationY;\n\t}\n\tpublic void setLocationY(String locationY) {\n\t\tthis.locationY = locationY;\n\t}\n\tpublic String getScale() {\n\t\treturn scale;\n\t}\n\tpublic void setScale(String scale) {\n\t\tthis.scale = scale;\n\t}\n\tpublic String getLabel() {\n\t\treturn label;\n\t}\n\tpublic void setLabel(String label) {\n\t\tthis.label = label;\n\t}\n\tpublic String getEvent() {\n\t\treturn event;\n\t}\n\tpublic void setEvent(String event) {\n\t\tthis.event = event;\n\t}\n\tpublic String getEventKey() {\n\t\treturn eventKey;\n\t}\n\tpublic void setEventKey(String eventKey) {\n\t\tthis.eventKey = eventKey;\n\t}\n    \n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/Reply.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\nimport java.util.Date;\nimport java.util.List;\n\nimport com.thoughtworks.xstream.annotations.XStreamAlias;\nimport com.thoughtworks.xstream.annotations.XStreamOmitField;\n\n/**\n * 回复用户的消息\n * @author lizy\n */\npublic class Reply implements Serializable {\n\n\tpublic static final String TEXT = \"text\";\n\tpublic static final String MUSIC = \"music\";\n\tpublic static final String NEWS = \"news\";\n\t\n\tpublic static final String ERROR_CONTENT = \"查询失败，请检查你的回复是否正确。\\n查询最近考试情况请回复：学号_考试（如：3021_考试）\\n 查询最近最近10次考试情况请回复：学号_考试历史（如：3021_考试历史）\\n 查询老师留言情况请回复：学号_留言（如：3021_留言）\\n查询老师留言记录（最近10次）情况请回复：学号_留言历史（如：3021_留言历史）\\n\\n 查询班级动态情况请回复：学号_动态（如：3021_动态）\\n查询班级动态记录（最近10次）情况请回复：学号_动态历史（如：3021_动态历史）\\n\";\n\tpublic static final String WELCOME_CONTENT = \"欢迎订阅爱学校，你可以回复指定内容来了解学生考试情况，老师留言和班级动态。\\n查询最近考试情况请回复：学号_考试（如：3021_考试）\\n 查询最近最近10次考试情况请回复：学号_考试历史（如：3021_考试历史）\\n 查询老师留言情况请回复：学号_留言（如：3021_留言）\\n查询老师留言记录（最近10次）情况请回复：学号_留言历史（如：3021_留言历史）\\n\\n 查询班级动态情况请回复：学号_动态（如：3021_动态）\\n查询班级动态记录（最近10次）情况请回复：学号_动态历史（如：3021_动态历史）\\n\";\n\t\n\t@XStreamOmitField\n\tprivate int id;//数据库存储id\n\t\n\t// 开发者微信号  \n\t@XStreamAlias(\"ToUserName\")\n    private String toUserName;  \n    // 发送方帐号（一个OpenID）  \n\t@XStreamAlias(\"FromUserName\")\n    private String fromUserName;  \n    // 消息创建时间 \n\t@XStreamAlias(\"CreateTime\")\n    private Date createTime;  \n    // 消息类型（text/music/news）\n\t@XStreamAlias(\"MsgType\")\n    private String msgType;  \n    \n    //回复的消息内容,长度不超过2048字节 (文本消息专有)\n\t@XStreamAlias(\"Content\")\n    private String content;\n    \n    //音乐链接 (音乐消息专有)\n\t@XStreamAlias(\"MusicUrl\")\n    private String musicUrl;\n    //高质量音乐链接，WIFI环境优先使用该链接播放音乐 (音乐消息专有)\n\t@XStreamAlias(\"HQMusicUrl\")\n    private String hQMusicUrl;\n    \n    //图文消息个数，限制为10条以内  (图文消息专有) \n\t@XStreamAlias(\"ArticleCount\")\n    private int articleCount; \n    \n    //多条图文消息信息，默认第一个item为大图\n\t@XStreamAlias(\"Articles\")\n    private List<Article> articles;\n\n\tpublic static void main(String[] args) {\n\t\tSystem.out.println(\"http://mmsns.qpic.cn/mmsns/UKMLIAeREF9IyZGhfvF8f0CAKDzEvXwCibLKUM4kmsfGnZvFM7EJlrg/0\".length());\n\t}\n\t\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getToUserName() {\n\t\treturn toUserName;\n\t}\n\n\tpublic void setToUserName(String toUserName) {\n\t\tthis.toUserName = toUserName;\n\t}\n\n\tpublic String getFromUserName() {\n\t\treturn fromUserName;\n\t}\n\n\tpublic void setFromUserName(String fromUserName) {\n\t\tthis.fromUserName = fromUserName;\n\t}\n\n\tpublic Date getCreateTime() {\n\t\treturn createTime;\n\t}\n\n\tpublic void setCreateTime(Date createTime) {\n\t\tthis.createTime = createTime;\n\t}\n\n\tpublic String getMsgType() {\n\t\treturn msgType;\n\t}\n\n\tpublic void setMsgType(String msgType) {\n\t\tthis.msgType = msgType;\n\t}\n\n\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\n\tpublic String getMusicUrl() {\n\t\treturn musicUrl;\n\t}\n\n\tpublic void setMusicUrl(String musicUrl) {\n\t\tthis.musicUrl = musicUrl;\n\t}\n\n\tpublic String gethQMusicUrl() {\n\t\treturn hQMusicUrl;\n\t}\n\n\tpublic void sethQMusicUrl(String hQMusicUrl) {\n\t\tthis.hQMusicUrl = hQMusicUrl;\n\t}\n\n\tpublic int getArticleCount() {\n\t\treturn articleCount;\n\t}\n\n\tpublic void setArticleCount(int articleCount) {\n\t\tthis.articleCount = articleCount;\n\t}\n\n\tpublic List<Article> getArticles() {\n\t\treturn articles;\n\t}\n\n\tpublic void setArticles(List<Article> articles) {\n\t\tthis.articles = articles;\n\t}\n\n    \n\t\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/Student.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\n\n/**\n * 学生实体\n */\npublic class Student implements Serializable {\n\t\n\t/**\n\t * 学生编号\n\t */\n\tprivate int id;\n\t\n\t/**\n\t * 班级编号\n\t */\n\tprivate int classid;\n\t\n\t/**\n\t * 学生姓名\n\t */\n\tprivate String name;\n\t\n\t/**\n\t * 备注\n\t */\n\tprivate String remark;\n\t\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic int getClassid() {\n\t\treturn classid;\n\t}\n\n\tpublic void setClassid(int classid) {\n\t\tthis.classid = classid;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getRemark() {\n\t\treturn remark;\n\t}\n\n\tpublic void setRemark(String remark) {\n\t\tthis.remark = remark;\n\t}\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/model/StudentMessage.java",
    "content": "package com.aixuexiao.model;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 给学生的留言\n */\npublic class StudentMessage implements Serializable {\n\t\n\t/**\n\t * 留言编号\n\t */\n\tprivate int id;\n\t\n\t/**\n\t * 学生编号\n\t */\n\tprivate int studentid;\n\t\n\t/**\n\t * 公告内容\n\t */\n\tprivate String content;\n\t\n\t/**\n\t * 发布时间\n\t */\n\tprivate Date inserttime;\n\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic int getStudentid() {\n\t\treturn studentid;\n\t}\n\n\tpublic void setStudentid(int studentid) {\n\t\tthis.studentid = studentid;\n\t}\n \n\t\n\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\n\tpublic Date getInserttime() {\n\t\treturn inserttime;\n\t}\n\n\tpublic void setInserttime(Date inserttime) {\n\t\tthis.inserttime = inserttime;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/service/ClassesService.java",
    "content": "package com.aixuexiao.service;\n\nimport java.util.List;\n\nimport javax.annotation.Resource;\n\nimport org.springframework.stereotype.Service;\n\nimport com.aixuexiao.dao.ClassesDao;\nimport com.aixuexiao.dao.ClassesNewsDao;\nimport com.aixuexiao.dao.StudentDao;\nimport com.aixuexiao.model.Classes;\nimport com.aixuexiao.model.ClassesNews;\nimport com.aixuexiao.model.Student;\n\n@Service(\"classesService\")\npublic class ClassesService {\n\n\t@Resource(name=\"studentDao\")\n\tprivate StudentDao studentDao;\n\t\n\t@Resource(name=\"classesDao\")\n\tprivate ClassesDao classesDao;\n\t\n\t@Resource(name=\"classesNewsDao\")\n\tprivate ClassesNewsDao classesNewsDao;\n\t\n\t/**\n\t * 将数据库中Classes数据分页查出\n\t * @param start 其实数据条数\n\t * @param size  展示数据每页的大小\n\t */\n\tpublic List<Classes> listClasses(int start,int size,Classes classes){\n\t\treturn classesDao.findClasses(start, size,classes);\n\t}\n\t \n\tpublic void deleteClassesNewsById(int id){\n\t\tclassesNewsDao.deleteClassesNewsById(id);\n\t}\n\t\n\t/**\n\t * 添加班级动态到数据库\n\t * @param classesNews\n\t */\n\tpublic void addClassesNews(ClassesNews classesNews){\n\t\tclassesNewsDao.addClassesNews(classesNews);\n\t}\n\t\n\t/**\n\t * 获取指定班级的班级动态(钱1000个)\n\t * @param classid 班级id\n\t * @return\n\t */\n\tpublic List<ClassesNews> findClassesNewsByClassId(int classid){\n\t\treturn classesNewsDao.findClassesNewsByClassId(classid, 1000);\n\t}\n\t\n\t/**\n\t * 添加班级到数据库中\n\t * @param classes 班级对象\n\t */\n\tpublic void addClasses(Classes classes){\n\t\tclassesDao.addClasses(classes);\n\t}\n\t\n\t/**\n\t * 根据id查找对应的Classes对象\n\t * @param id 班级编号\n\t * @return\n\t */\n\tpublic Classes findClassesById(int id){\n\t\treturn classesDao.findClassesById(id);\n\t}\n\t\n\t/**\n\t * 根据学生编号查找对应的学生\n\t * @param studentid 学生编号\n\t * @return 学生数据\n\t */\n\tpublic Student findStudentById(int studentid){\n\t\treturn studentDao.findStudentById(studentid);\n\t}\n\t\n\t/**\n\t * 根据班级id查找对应班级所有学生\n\t * @param classesid 班级id\n\t * @return\n\t */\n\tpublic List<Student> findStudentByClassesId(int classesid){\n\t\treturn studentDao.findStudentByClassesId(classesid);\n\t}\n\t\n\t/**\n\t * 添加学生信息至数据库中\n\t * @param student 学生对象\n\t */\n\tpublic void addStudent(Student student){\n\t\tstudentDao.addStudent(student);\n\t}\n\t\n\t\n\t/**\n\t * 删除数据库中对应id的学生信息\n\t * @param student 学生对象\n\t */\n\tpublic void deleteStudentById(int studentid){\n\t\tstudentDao.deleteStudentById(studentid);\n\t}\n\t\n\t/**\n\t * 自动更新指定班级的学生数量\n\t * @param classid 班级id\n\t */\n\tpublic void updateClassStudentCount(int classid){\n\t\tclassesDao.updateClassStudentCount(classid);\n\t}\n\t\n\tpublic void updateStudentBy(Student student) {\n\t\tstudentDao.updateStudent(student);\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/service/ExamService.java",
    "content": "package com.aixuexiao.service;\n\nimport java.util.List;\n\nimport javax.annotation.Resource;\n\nimport org.springframework.stereotype.Service;\n\nimport com.aixuexiao.dao.ClassesDao;\nimport com.aixuexiao.dao.ExamDao;\nimport com.aixuexiao.dao.StudentDao;\nimport com.aixuexiao.model.Classes;\nimport com.aixuexiao.model.Exam;\nimport com.aixuexiao.model.ExamMark;\nimport com.aixuexiao.model.Student;\n\n@Service(\"examService\")\npublic class ExamService {\n\n\t@Resource(name=\"studentDao\")\n\tprivate StudentDao studentDao;\n\t\n\t@Resource(name=\"classesDao\")\n\tprivate ClassesDao classesDao;\n\t\n\t@Resource(name=\"examDao\")\n\tprivate ExamDao examDao;\n\t\n\t/**\n\t * 保存考试信息\n\t * @param exam\n\t */\n\tpublic void addExam(Exam exam){\n\t\texamDao.addExam(exam);\n\t\tfor(ExamMark em:exam.getExamMarks()){\n\t\t\tem.setExamid(exam.getId());\n\t\t\texamDao.addExamMark(em);\n\t\t}\n\t}\n\t\n\t/**\n\t * 根据考试id查找数据库中考试信息\n\t * @param id\n\t * @return\n\t */\n\tpublic Exam findExamById(int id){\n\t\treturn examDao.findExamById(id);\n\t}\n\t\n\t/**\n\t * 将数据库中Student数据分页查出\n\t * @param start 其实数据条数\n\t * @param size  展示数据每页的大小\n\t */\n\tpublic List<Exam> listExam(int start,int size,Exam exam){\n\t\treturn examDao.findExam(start,size,exam);\n\t}\n\t \n\tpublic List<Student> findStudentByClassesId(int classesid) {\n\t\treturn studentDao.findStudentByClassesId(classesid);\n\t}\n\t\n\t/**\n\t * 根据学生编号查找对应的学生\n\t * @param studentid 学生编号\n\t * @return 学生数据\n\t */\n\tpublic Student findStudentById(int studentid){\n\t\treturn studentDao.findStudentById(studentid);\n\t}\n\t\n\t/**\n\t * 将数据库中Classes数据全部查出\n\t */\n\tpublic List<Classes> findAllClasses(){\n\t\treturn classesDao.findAllClasses();\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/service/StudentService.java",
    "content": "package com.aixuexiao.service;\n\nimport java.util.List;\n\nimport javax.annotation.Resource;\n\nimport org.springframework.stereotype.Service;\n\nimport com.aixuexiao.dao.ClassesDao;\nimport com.aixuexiao.dao.ExamDao;\nimport com.aixuexiao.dao.StudentDao;\nimport com.aixuexiao.dao.StudentMessageDao;\nimport com.aixuexiao.model.Classes;\nimport com.aixuexiao.model.ExamMark;\nimport com.aixuexiao.model.Student;\nimport com.aixuexiao.model.StudentMessage;\n\n@Service(\"studentService\")\npublic class StudentService {\n\n\t@Resource(name=\"studentDao\")\n\tprivate StudentDao studentDao;\n\t\n\t@Resource(name=\"classesDao\")\n\tprivate ClassesDao classesDao;\n\t\n\t@Resource(name=\"studentMessageDao\")\n\tprivate StudentMessageDao studentMessageDao;\n\t\n\t@Resource(name=\"examDao\")\n\tprivate ExamDao examDao;\n\t\n\t/**\n\t * 根据学生编号查找对应的考试信息\n\t * @param id 学生编号\n\t * @param limit\n\t * @return\n\t */\n\tpublic List<ExamMark> findExamMarkByStudentId(int id ,int limit){\n\t\treturn examDao.findExamMarkByStudentId(id, limit);\n\t}\n\t\n\t\n\t/**\n\t * 将数据库中Student数据分页查出\n\t * @param start 其实数据条数\n\t * @param size  展示数据每页的大小\n\t */\n\tpublic List<Student> listStudent(int start,int size,Student student){\n\t\treturn studentDao.findStudent(start,size,student);\n\t}\n\t \n\t/**\n\t * 根据学生编号查找对应的学生\n\t * @param studentid 学生编号\n\t * @return 学生数据\n\t */\n\tpublic Student findStudentById(int studentid){\n\t\treturn studentDao.findStudentById(studentid);\n\t}\n\t\n\t/**\n\t * 添加老师给学生的微信留言到数据库\n\t * @param studentMessage\n\t */\n\tpublic void addStudentMessage(StudentMessage studentMessage){\n\t\tstudentMessageDao.addStudentMessage(studentMessage);\n\t}\n\t\n\t/**\n\t * 根据id删除老师给学生的微信留言\n\t * @param id\n\t */\n\tpublic void deleteStudentMessageById(int id){\n\t\tstudentMessageDao.deleteStudentMessageById(id);\n\t}\n\t\n\t/**\n\t * 将数据库中Classes数据全部查出\n\t */\n\tpublic List<Classes> findAllClasses(){\n\t\treturn classesDao.findAllClasses();\n\t}\n\t\n\t/**\n\t * 根据学生id查询对应学生的留言记录\n\t * @param studentid 学生id\n\t * @param limit  展示数据每页的大小\n\t */\n\tpublic List<StudentMessage> listMessageByStudentId(int studentid,int limit){\n\t\treturn studentMessageDao.findStudentMessageByStudentId(studentid, limit);\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/service/WeixinService.java",
    "content": "package com.aixuexiao.service;\n\nimport java.text.DateFormat;\nimport java.text.SimpleDateFormat;\nimport java.util.List;\n\nimport javax.annotation.Resource;\n\nimport org.springframework.stereotype.Service;\n\nimport com.aixuexiao.dao.ClassesNewsDao;\nimport com.aixuexiao.dao.ExamDao;\nimport com.aixuexiao.dao.MessageDao;\nimport com.aixuexiao.dao.ReplyDao;\nimport com.aixuexiao.dao.StudentDao;\nimport com.aixuexiao.dao.StudentMessageDao;\nimport com.aixuexiao.model.Article;\nimport com.aixuexiao.model.ClassesNews;\nimport com.aixuexiao.model.Exam;\nimport com.aixuexiao.model.ExamMark;\nimport com.aixuexiao.model.Message;\nimport com.aixuexiao.model.Reply;\nimport com.aixuexiao.model.Student;\nimport com.aixuexiao.model.StudentMessage;\n\n@Service(\"weixinService\")\npublic class WeixinService {\n\n\t@Resource(name=\"messageDao\")\n\tprivate MessageDao messageDao;\n\t\n\t@Resource(name=\"replyDao\")\n\tprivate ReplyDao replyDao;\n\t\n\t@Resource(name=\"examDao\")\n\tprivate ExamDao examDao;\n\t\n\t@Resource(name=\"studentDao\")\n\tprivate StudentDao studentDao;\n\t\n\t@Resource(name=\"studentMessageDao\")\n\tprivate StudentMessageDao studentMessageDao;\n\t\n\t@Resource(name=\"classesNewsDao\")\n\tprivate ClassesNewsDao classesNewsDao;\n\t\n\t\n\t/**\n\t * 查询学生最近一次考试情况\n\t * @param studentid 学生编号\n\t * @return 返回考试情况字符串\n\t */\n\tpublic String getSingleExamMarkStringByStudentId(int studentid){\n\t\tStringBuilder sb = new StringBuilder();\n\t\tStudent student = studentDao.findStudentById(studentid);\n\t\tif(student == null){\n\t\t\tsb.append(\"您好，未找到编号为\").append(studentid).append(\"的学生！\");\n\t\t}else{\n\t\t\tList<ExamMark> list = examDao.findExamMarkByStudentId(studentid, 1);\n\t\t\tsb.append(\"您好，编号为\").append(studentid).append(\"的学生(\").append(student.getName());\n\t\t\tif(list == null || list.size()<1 || list.get(0).getExam()==null){\n\t\t\t\tsb.append(\")无考试记录！\");\n\t\t\t}else{\n\t\t\t\tExamMark em = list.get(0);\n\t\t\t\tExam e = em.getExam();\n\t\t\t\tDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t\t\tsb.append(\")最近一次考试记录如下:\\n\").append(\"科目：\").append(e.getCourse())\n\t\t\t\t  .append(\"\\n分数：\").append(em.getMark())\n\t\t\t\t  .append(\"\\n班级排名：\").append(em.getRank())\n\t\t\t\t  .append(\"\\n考试时间：\").append(sf.format(em.getExamtime()))\n\t\t\t\t  .append(\"\\n老师备注：\").append(em.getRemark())\n\t\t\t\t  .append(\"\\n试卷满分：\").append(e.getFullmarks())\n\t\t\t\t  .append(\"\\n班级均分：\").append(e.getAverage())\n\t\t\t\t  .append(\"\\n班级最高分：\").append(e.getTopmark())\n\t\t\t\t  .append(\"\\n班级最低分：\").append(e.getLowestmark())\n\t\t\t\t  .append(\"\\n考试说明：\").append(e.getRemark());\n\t\t\t}\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\t/**\n\t * 查询学生历次考试情况(最近10次)\n\t * @param studentid 学生编号\n\t * @return 返回考试情况字符串\n\t */\n\tpublic String getExamMarkHistoryStringByStudentId(int studentid){\n\t\tStringBuilder sb = new StringBuilder();\n\t\tStudent student = studentDao.findStudentById(studentid);\n\t\tif(student == null){\n\t\t\tsb.append(\"您好，未找到编号为\").append(studentid).append(\"的学生！\");\n\t\t}else{\n\t\t\tsb.append(\"您好，编号为\").append(studentid).append(\"的学生(\").append(student.getName());\n\t\t\tList<ExamMark> list = examDao.findExamMarkByStudentId(studentid, 10);\n\t\t\tif(list == null || list.size()<1 || list.get(0).getExam()==null){\n\t\t\t\tsb.append(\")无考试记录！\");\n\t\t\t}else{\n\t\t\t\tDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t\t\tExam e = null;\n\t\t\t\tsb.append(\")最近10次考试情况如下:\");\n\t\t\t\tfor(ExamMark em : list){\n\t\t\t\t\te = em.getExam();\n\t\t\t\t\tsb.append(\"\\n考试时间：\").append(sf.format(em.getExamtime()))\n\t\t\t\t\t  .append(\"\\n科目：\").append(e.getCourse())\n\t\t\t\t\t  .append(\"\\n分数：\").append(em.getMark())\n\t\t\t\t\t  .append(\"\\n班级排名：\").append(em.getRank())\n\t\t\t\t\t  .append(\"\\n老师备注：\").append(em.getRemark())\n\t\t\t\t\t  .append(\"\\n试卷满分：\").append(e.getFullmarks())\n\t\t\t\t\t  .append(\"\\n班级均分：\").append(e.getAverage())\n\t\t\t\t\t  .append(\"\\n班级最高分：\").append(e.getTopmark())\n\t\t\t\t\t  .append(\"\\n班级最低分：\").append(e.getLowestmark())\n\t\t\t\t\t  .append(\"\\n考试说明：\").append(e.getRemark())\n\t\t\t\t\t  .append(\"\\n------分割线-------\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\t/**\n\t * 根据学生编号查询学生最近的老师留言信息\n\t * @param studentid 学生编号\n\t * @return 以字符串形式返回老师留言信息\n\t */\n\tpublic String getSingleStudentMessageByStudentId(int studentid){\n\t\tStringBuilder sb = new StringBuilder();\n\t\tStudent student = studentDao.findStudentById(studentid);\n\t\tif(student == null){\n\t\t\tsb.append(\"您好，未找到编号为\").append(studentid).append(\"的学生！\");\n\t\t}else{\n\t\t\tsb.append(\"您好，编号为\").append(studentid).append(\"的学生(\").append(student.getName());\n\t\t\tList<StudentMessage> list = studentMessageDao.findStudentMessageByStudentId(studentid, 1);\n\t\t\tif(list == null || list.size()<1 ){\n\t\t\t\tsb.append(\")无老师留言！\");\n\t\t\t}else{\n\t\t\t\tsb.append(\")最近老师留言如下:\");\n\t\t\t\tDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t\t\tStudentMessage sm = list.get(0);\n\t\t\t\tsb.append(\"\\n留言时间：\").append(sf.format(sm.getInserttime()))\n\t\t\t\t  .append(\"\\n留言内容：\").append(sm.getContent());\n\t\t\t}\t\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\t/**\n\t * 根据学生编号查询学生的老师留言信息记录（最近10次）\n\t * @param studentid 学生编号\n\t * @return 以字符串形式返回老师留言信息\n\t */\n\tpublic String getStudentMessageHistoryByStudentId(int studentid){\n\t\tStringBuilder sb = new StringBuilder();\n\t\tStudent student = studentDao.findStudentById(studentid);\n\t\tif(student == null){\n\t\t\tsb.append(\"您好，未找到编号为\").append(studentid).append(\"的学生！\");\n\t\t}else{\n\t\t\tsb.append(\"您好，编号为\").append(studentid).append(\"的学生(\").append(student.getName());\n\t\t\tList<StudentMessage> list = studentMessageDao.findStudentMessageByStudentId(studentid, 10);\n\t\t\tif(list == null || list.size()<1 ){\n\t\t\t\tsb.append(\")无老师留言！\");\n\t\t\t}else{\n\t\t\t\tsb.append(\")最近(10次)老师留言如下:\");\n\t\t\t\tDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t\t\tfor(StudentMessage sm : list){\n\t\t\t\t\tsb.append(\"\\n留言时间：\").append(sf.format(sm.getInserttime()))\n\t\t\t\t\t  .append(\"\\n留言内容：\").append(sm.getContent())\n\t\t\t\t\t  .append(\"\\n------分割线-------\");\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\t/**\n\t * 根据学生编号查询学生所在班级的班级动态\n\t * @param studentid 学生编号\n\t * @return 以字符串形式返回学生所在班级的班级动态\n\t */\n\tpublic String getSingleClassesNewsByStudentId(int studentid){\n\t\tStringBuilder sb = new StringBuilder();\n\t\tStudent student = studentDao.findStudentById(studentid);\n\t\tif(student == null){\n\t\t\tsb.append(\"您好，未找到编号为\").append(studentid).append(\"的学生！\");\n\t\t}else{\n\t\t\tsb.append(\"您好，编号为\").append(studentid).append(\"的学生(\").append(student.getName());\n\t\t\tList<ClassesNews> list = classesNewsDao.findClassesNewsByClassId(student.getClassid(), 1);\n\t\t\tif(list == null || list.size()<1 ){\n\t\t\t\tsb.append(\")所在班级无班级动态！\");\n\t\t\t}else{\n\t\t\t\tsb.append(\")最近班级动态如下:\");\n\t\t\t\tDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t\t\tClassesNews cn = list.get(0);\n\t\t\t\tsb.append(\"\\n动态时间：\").append(sf.format(cn.getInserttime()))\n\t\t\t\t  .append(\"\\n动态内容：\").append(cn.getContent());\n\t\t\t}\t\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\t/**\n\t * 根据学生编号查询学生所在班级的班级动态\n\t * @param studentid 学生编号\n\t * @return 以字符串形式返回学生所在班级的班级动态\n\t */\n\tpublic String getClassesNewsHistoryByStudentId(int studentid){\n\t\tStringBuilder sb = new StringBuilder();\n\t\tStudent student = studentDao.findStudentById(studentid);\n\t\tif(student == null){\n\t\t\tsb.append(\"您好，未找到编号为\").append(studentid).append(\"的学生！\");\n\t\t}else{\n\t\t\tsb.append(\"您好，编号为\").append(studentid).append(\"的学生(\").append(student.getName());\n\t\t\tList<ClassesNews> list = classesNewsDao.findClassesNewsByClassId(student.getClassid(), 10);\n\t\t\tif(list == null || list.size()<1 ){\n\t\t\t\tsb.append(\")所在班级无班级动态！\");\n\t\t\t}else{\n\t\t\t\tsb.append(\")最近班级动态如下:\");\n\t\t\t\tDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t\t\tfor(ClassesNews cn:list){\n\t\t\t\t\tsb.append(\"\\n动态时间：\").append(sf.format(cn.getInserttime()))\n\t\t\t\t\t  .append(\"\\n动态内容：\").append(cn.getContent())\n\t\t\t\t\t  .append(\"\\n------分割线-------\");\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\t/**\n\t * 新增Message对象到数据库中\n\t */\n\tpublic void addMessage(Message message) {\n\t\tmessageDao.addMessage(message);\n\t}\n\t\n\t\n\t/**\n\t * 将数据库中Message数据分页查出\n\t * @param start 其实数据条数\n\t * @param size  展示数据每页的大小\n\t */\n\tpublic List<Message> listMessage(int start,int size){\n\t\treturn messageDao.findMessage(start,size);\n\t}\n\t\n\t/**\n\t * 将数据库中Message数据分页查出\n\t * @param start 其实数据条数\n\t * @param size  展示数据每页的大小\n\t */\n\tpublic List<Reply> listReply(int start,int size){\n\t\treturn replyDao.findReply(start,size);\n\t}\n\t\n\t\n\t/**\n\t * 保存回复消息至数据库中，如果为news类型消息将article一并保存 \n\t */\n\tpublic void addReply(Reply reply){\n\t\treplyDao.addReply(reply);\n\t\tif(Reply.NEWS.equals(reply.getMsgType())&&null != reply.getArticles()){\n\t\t\tList<Article> articles = reply.getArticles();\n\t\t\tfor(Article a: articles){\n\t\t\t\ta.setReplyId(reply.getId());\n\t\t\t\treplyDao.addArticle(a);\n\t\t\t}\n\t\t}\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/util/ExamUtil.java",
    "content": "package com.aixuexiao.util;\n\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\n\nimport com.aixuexiao.model.Exam;\nimport com.aixuexiao.model.ExamMark;\n\n/**\n * 考试相关工具类\n */\npublic class ExamUtil {\n\n\t/**\n\t * 为考试成绩排序 并计算平均分/最高分/最低发\n\t * @param exam 考试对象\n\t * @return\n\t */\n\tpublic static Exam  sortExamMark(Exam exam){\n\t\tList<ExamMark> ems = exam.getExamMarks();\n\t\tCollections.sort(ems);//对分数进行排序\n\t\tBigDecimal topmark = null,lowestmark = null,total = new BigDecimal(0);\n\t\tint rank = ems.size();\n\t\tfor(int i = 0;i<ems.size();i++){\n\t\t\tExamMark em = ems.get(i);\n\t\t\tif(i==0)lowestmark = em.getMark();//最低分\n\t\t\tif(i==ems.size()-1)topmark = em.getMark();//最高分\n\t\t\tem.setExamtime(exam.getExamtime());\n\t\t\tem.setRank(rank--);\n\t\t\ttotal = total.add(em.getMark());\n\t\t}\n\t\texam.setAverage(total.divide(new BigDecimal(ems.size()),2, BigDecimal.ROUND_DOWN));\n\t\texam.setTopmark(topmark);\n\t\texam.setLowestmark(lowestmark);\n\t\treturn exam;\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/util/WeixinUtil.java",
    "content": "package com.aixuexiao.util;\n\n\nimport java.io.InputStream;\nimport java.io.Writer;\nimport java.math.BigInteger;\nimport java.security.MessageDigest;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.servlet.http.HttpServletRequest;\n\nimport org.dom4j.Document;\nimport org.dom4j.Element;\nimport org.dom4j.io.SAXReader;\n\nimport com.aixuexiao.model.Article;\nimport com.aixuexiao.model.ExamMark;\nimport com.aixuexiao.model.Message;\nimport com.aixuexiao.model.Reply;\nimport com.thoughtworks.xstream.XStream;\nimport com.thoughtworks.xstream.core.util.QuickWriter;\nimport com.thoughtworks.xstream.io.HierarchicalStreamWriter;\nimport com.thoughtworks.xstream.io.xml.PrettyPrintWriter;\nimport com.thoughtworks.xstream.io.xml.XppDriver;\n\n/**\n * 微信相关工具类\n */\npublic class WeixinUtil {\n\t\n\t\n\tpublic static String singleExamMarkToString(ExamMark em){\n\t\tif(null==em || em.getExam()==null)\n\t\t\treturn null;\n\t\tStringBuilder sb = new StringBuilder();\n\t\treturn sb.toString();\n\t}\n\t\n\tprivate static XStream xstream = new XStream(new XppDriver() {  \n        public HierarchicalStreamWriter createWriter(Writer out) {  \n            return new PrettyPrintWriter(out) {  \n                // 对所有xml节点的转换都增加CDATA标记  \n                boolean cdata = true;  \n                @SuppressWarnings(\"unchecked\")  \n                public void startNode(String name, Class clazz) {  \n                    super.startNode(name, clazz);  \n                }  \n                protected void writeText(QuickWriter writer, String text) {  \n                    if (cdata) {  \n                        writer.write(\"<![CDATA[\");  \n                        writer.write(text);  \n                        writer.write(\"]]>\");  \n                    } else {  \n                        writer.write(text);  \n                    }  \n                }  \n            };  \n        }  \n    });  \n\t\n\t/**\n\t * 将回复消息对象转换成xml字符串\n\t * @param reply 回复消息对象\n\t * @return 返回符合微信接口的xml字符串\n\t */\n\tpublic static String replyToXml(Reply reply){\n\t\tString type = reply.getMsgType();\n\t\tif(Reply.TEXT.equals(type)){\n\t\t\txstream.omitField(Reply.class, \"articles\");\n\t\t\txstream.omitField(Reply.class, \"articleCount\");\n\t\t\txstream.omitField(Reply.class, \"musicUrl\");\n\t\t\txstream.omitField(Reply.class, \"hQMusicUrl\");\n\t\t}else if(Reply.MUSIC.equals(type)){\n\t\t\txstream.omitField(Reply.class, \"articles\");\n\t\t\txstream.omitField(Reply.class, \"articleCount\");\n\t\t\txstream.omitField(Reply.class, \"content\");\n\t\t}else if(Reply.NEWS.equals(type)){\n\t\t\txstream.omitField(Reply.class, \"content\");\n\t\t\txstream.omitField(Reply.class, \"musicUrl\");\n\t\t\txstream.omitField(Reply.class, \"hQMusicUrl\");\n\t\t}\n\t\txstream.autodetectAnnotations(true);  \n\t\txstream.alias(\"xml\", reply.getClass());\n\t\txstream.alias(\"item\", new Article().getClass());\n\t\treturn xstream.toXML(reply);\n\t}\n\t\n\t\n\t/**\n\t * 存储数据的Map转换为对应的Message对象\n\t * @param map 存储数据的map\n\t * @return 返回对应Message对象\n\t */\n\tpublic static  Message  mapToMessage(Map<String,String> map){\n\t\tif(map == null) return null;\n\t\tString msgType = map.get(\"MsgType\");\n\t\tMessage message = new Message();\n\t\tmessage.setToUserName(map.get(\"ToUserName\"));\n\t\tmessage.setFromUserName(map.get(\"FromUserName\"));\n\t\tmessage.setCreateTime(new Date(Long.parseLong(map.get(\"CreateTime\"))));\n\t\tmessage.setMsgType(msgType);\n\t\tmessage.setMsgId(map.get(\"MsgId\"));\n\t\tif(msgType.equals(Message.TEXT)){\n\t\t\tmessage.setContent(map.get(\"Content\"));\n\t\t}else if(msgType.equals(Message.IMAGE)){\n\t\t\tmessage.setPicUrl(map.get(\"PicUrl\"));\n\t\t}else if(msgType.equals(Message.LINK)){\n\t\t\tmessage.setTitle(map.get(\"Title\"));\n\t\t\tmessage.setDescription(map.get(\"Description\"));\n\t\t\tmessage.setUrl(map.get(\"Url\"));\n\t\t}else if(msgType.equals(Message.LOCATION)){\n\t\t\tmessage.setLocationX(map.get(\"Location_X\"));\n\t\t\tmessage.setLocationY(map.get(\"Location_Y\"));\n\t\t\tmessage.setScale(map.get(\"Scale\"));\n\t\t\tmessage.setLabel(map.get(\"Label\"));\n\t\t}else if(msgType.equals(Message.EVENT)){\n\t\t\tmessage.setEvent(map.get(\"Event\"));\n\t\t\tmessage.setEventKey(map.get(\"EventKey\"));\n\t\t}\n\t\treturn message;\n\t}\n\t\n\t/**\n\t * 解析request中的xml 并将数据存储到一个Map中返回\n\t * @param request\n\t */\n\tpublic static Map<String, String> parseXml(HttpServletRequest request){\n\t\tMap<String, String> map = new HashMap<String, String>();\n\t\ttry {\n\t\t\tInputStream inputStream = request.getInputStream();\n\t\t\tSAXReader reader = new SAXReader();\n\t\t\tDocument document = reader.read(inputStream);\n\t\t\tElement root = document.getRootElement();\n\t\t\tList<Element> elementList = root.elements();\n\t\t\tfor (Element e : elementList)\n\t\t\t\t//遍历xml将数据写入map\n\t\t\t\tmap.put(e.getName(), e.getText());\n\t\t\tinputStream.close();\n\t\t\tinputStream = null;\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn map;\n\t}\n\n\t\n\t/**\n\t * sha1加密算法\n\t * @param key需要加密的字符串\n\t * @return 加密后的结果\n\t */\n\tpublic static String sha1(String key) {\n\t\ttry {\n\t\t\tMessageDigest md = MessageDigest.getInstance(\"SHA1\");\n\t\t\tmd.update(key.getBytes());\n\t\t\tString pwd = new BigInteger(1, md.digest()).toString(16);\n\t\t\treturn pwd;\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t\treturn key;\n\t\t}\n\t}\n\t\n}\n"
  },
  {
    "path": "src/com/aixuexiao/web/controller/ClassesController.java",
    "content": "package com.aixuexiao.web.controller;\r\n\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport javax.annotation.Resource;\r\n\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.servlet.ModelAndView;\r\n\r\nimport com.aixuexiao.model.Classes;\r\nimport com.aixuexiao.model.ClassesNews;\r\nimport com.aixuexiao.model.Student;\r\nimport com.aixuexiao.service.ClassesService;\r\n\r\n/**\r\n * 包含班级列表菜单内的所有操作\r\n */\r\n@Controller\r\npublic class ClassesController {\r\n\t\r\n\t\r\n\tpublic static int pagesize = 10;\r\n\t\r\n\t@Resource(name=\"classesService\")\r\n\tprivate ClassesService classesService;\r\n\t\r\n\t\r\n\t@RequestMapping(value=\"/manager/classes\",method=RequestMethod.GET)\r\n\tpublic ModelAndView listStudent(String pagenum,Classes classes){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"classes\");\r\n\t\tmv.addObject(\"sidebar\",\"classes\");\r\n\t\tint num = 1;\r\n\t\tif(null!=pagenum){\r\n\t\t\tnum = Integer.parseInt(pagenum);\r\n\t\t}\r\n\t\tList<Classes> list = classesService.listClasses((num-1)*pagesize, pagesize,classes);\r\n\t\tmv.addObject(\"classesList\", list);\r\n\t\tmv.addObject(\"length\", list.size());\r\n\t\tmv.addObject(\"pagenum\", num);\r\n\t\tmv.addObject(\"classes\", classes);\r\n\t\treturn mv;\r\n\t}\r\n\r\n\t\r\n\t@RequestMapping(value=\"/manager/addclassespage\",method=RequestMethod.GET)\r\n\tpublic ModelAndView addClassesPage(){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"addclasses\");\r\n\t\tmv.addObject(\"sidebar\",\"classes\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/addclasses\",method=RequestMethod.POST)\r\n\tpublic ModelAndView addClasses(Classes classes){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tClasses cls = classesService.findClassesById(classes.getId());\r\n\t\tif(null==cls){\r\n\t\t\tmv.setViewName(\"redirect:/manager/classes\");\r\n\t\t\tclasses.setStudentcount(0);\r\n\t\t\tclassesService.addClasses(classes);\r\n\t\t}else{\r\n\t\t\tmv.setViewName(\"redirect:/manager/addclassespage\");\r\n\t\t\tmv.addObject(\"name\", classes.getName());\r\n\t\t\tmv.addObject(\"headteacher\", classes.getHeadteacher());\r\n\t\t\tmv.addObject(\"notice\",\"已存在编号为\"+classes.getId()+\"的班级\");\r\n\t\t}\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/managerstudentpage\",method=RequestMethod.GET)\r\n\tpublic ModelAndView studentPage(int classesid){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tClasses cls = classesService.findClassesById(classesid);\r\n\t\tList<Student> stlist = classesService.findStudentByClassesId(classesid);\r\n\t\tmv.setViewName(\"addstudents\");\r\n\t\tmv.addObject(\"sidebar\",\"classes\");\r\n\t\tmv.addObject(\"cls\",cls);\r\n\t\tmv.addObject(\"stlist\",stlist);\r\n\t\tmv.addObject(\"length\", stlist.size());\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/classesnewspage\",method=RequestMethod.GET)\r\n\tpublic ModelAndView classesnewsPage(int classesid){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tClasses cls = classesService.findClassesById(classesid);\r\n\t\tList<ClassesNews> cnlist= classesService.findClassesNewsByClassId(classesid);\r\n\t\tmv.setViewName(\"addclassesnews\");\r\n\t\tmv.addObject(\"sidebar\",\"classes\");\r\n\t\tmv.addObject(\"cls\",cls);\r\n\t\tmv.addObject(\"cnlist\",cnlist);\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/addclassesnews\",method=RequestMethod.POST)\r\n\tpublic ModelAndView addClassesNews(ClassesNews classesNews){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tclassesNews.setInserttime(new Date());\r\n\t\tclassesService.addClassesNews(classesNews);\r\n\t\tmv.addObject(\"notice\",\"添加班级动态成功\");\r\n\t\tmv.addObject(\"classesid\",classesNews.getClassid());\r\n\t\tmv.setViewName(\"redirect:/manager/classesnewspage\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t\r\n\t@RequestMapping(value=\"/manager/deleteclassesnews\",method=RequestMethod.GET)\r\n\tpublic ModelAndView deleteClassesNews(int classesid,int id){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"redirect:/manager/classesnewspage\");\r\n\t\tmv.addObject(\"classesid\",classesid);\r\n\t\tclassesService.deleteClassesNewsById(id);\r\n\t\tmv.addObject(\"notice\",\"删除动态成功\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t\r\n\t@RequestMapping(value=\"/manager/addstudent\",method=RequestMethod.POST)\r\n\tpublic ModelAndView addStudent(Student student){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tStudent stu = classesService.findStudentById(student.getId());\r\n\t\tif(stu==null){\r\n\t\t\tclassesService.addStudent(student);\r\n\t\t\tclassesService.updateClassStudentCount(student.getClassid());\r\n\t\t\tmv.addObject(\"notice\",\"添加学生成功\");\r\n\t\t}else{\r\n\t\t\tmv.addObject(\"notice\",\"已经存在编号为\"+student.getId()+\"的学生(\"+stu.getName()+\")！\");\r\n\t\t}\r\n\t\tmv.addObject(\"classesid\",student.getClassid());\r\n\t\tmv.setViewName(\"redirect:/manager/managerstudentpage\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/deletestudent\",method=RequestMethod.GET)\r\n\tpublic ModelAndView deleteStudent(int studentid,int classid){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tclassesService.deleteStudentById(studentid);\r\n\t\tclassesService.updateClassStudentCount(classid);\r\n\t\tmv.addObject(\"classesid\",classid);\r\n\t\tmv.addObject(\"notice\",\"删除学生信息成功\");\r\n\t\tmv.setViewName(\"redirect:/manager/managerstudentpage\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/updatestudent\",method=RequestMethod.POST)\r\n\tpublic ModelAndView updateStudent(Student student){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tclassesService.updateStudentBy(student); \r\n\t\tmv.addObject(\"classesid\",student.getClassid());\r\n\t\tmv.addObject(\"notice\",\"编辑学生信息成功\");\r\n\t\tmv.setViewName(\"redirect:/manager/managerstudentpage\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/com/aixuexiao/web/controller/ExamController.java",
    "content": "package com.aixuexiao.web.controller;\r\n\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport javax.annotation.Resource;\r\n\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.servlet.ModelAndView;\r\n\r\nimport com.aixuexiao.model.Classes;\r\nimport com.aixuexiao.model.Exam;\r\nimport com.aixuexiao.model.Student;\r\nimport com.aixuexiao.service.ExamService;\r\nimport com.aixuexiao.util.ExamUtil;\r\n\r\n/**\r\n * 包含考试列表菜单内的所有操作\r\n */\r\n@Controller\r\npublic class ExamController {\r\n\t\r\n\tpublic static final int pagesize = 10;\r\n\t\r\n\t@Resource(name=\"examService\")\r\n\tprivate ExamService examService;\r\n\t\r\n\t@RequestMapping(value=\"/manager/exams\",method=RequestMethod.GET)\r\n\tpublic ModelAndView listStudent(String pagenum,Exam exam){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"exams\");\r\n\t\tmv.addObject(\"sidebar\",\"exams\");\r\n\t\tint num = 1;\r\n\t\tif(null!=pagenum){\r\n\t\t\tnum = Integer.parseInt(pagenum);\r\n\t\t}\r\n\t\tList<Exam> list = examService.listExam((num-1)*pagesize, pagesize,exam);\r\n\t\tList<Classes> clslist = examService.findAllClasses();\r\n\t\tmv.addObject(\"examList\", list);\r\n\t\tmv.addObject(\"clsList\", clslist);\r\n\t\tmv.addObject(\"length\", list.size());\r\n\t\tmv.addObject(\"pagenum\", num);\r\n\t\tmv.addObject(\"exam\", exam);\r\n\t\treturn mv;\r\n\t}\r\n\r\n \r\n\t@RequestMapping(value=\"/manager/addexam\",method=RequestMethod.POST)\r\n\tpublic ModelAndView addExam(Exam exam){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"addexam\");\r\n\t\tmv.addObject(\"sidebar\",\"exams\");\r\n\t\tList<Student> stlist = examService.findStudentByClassesId(exam.getClassid());\r\n\t\tmv.addObject(\"exam\",exam);\r\n\t\tmv.addObject(\"stlist\",stlist);\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/viewexam\",method=RequestMethod.GET)\r\n\tpublic ModelAndView viewExam(int id){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"viewexam\");\r\n\t\tmv.addObject(\"sidebar\",\"exams\");\r\n\t\tExam exam =  examService.findExamById(id);\r\n\t\tmv.addObject(\"exam\",exam);\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/addexammark\",method=RequestMethod.POST)\r\n\tpublic ModelAndView addExamMark(Exam exam){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.addObject(\"sidebar\",\"exams\");\r\n\t\tmv.setViewName(\"redirect:/manager/exams\");\r\n\t\texam.setExamtime(new Date());\r\n\t\texam = ExamUtil.sortExamMark(exam);//为分数排序\r\n\t\texamService.addExam(exam);\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/com/aixuexiao/web/controller/LoginController.java",
    "content": "package com.aixuexiao.web.controller;\r\n\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\n\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.servlet.ModelAndView;\r\n\r\n@Controller()\r\npublic class LoginController {\r\n\t\r\n\tprivate static final String USERNAME = \"zhiyun\";\r\n\tprivate static final String PASSWORD = \"123456\";\r\n\t\r\n\t@RequestMapping(\"/\")\r\n\tpublic String index(){\r\n\t\treturn \"login\";\r\n\t}\r\n\t\r\n\t\r\n\t@RequestMapping(value=\"/login\",method=RequestMethod.POST)\r\n\tpublic ModelAndView login(String username,String password,HttpServletRequest request){\r\n\t\tModelAndView mv=new ModelAndView(\"\");\r\n\t\tif( USERNAME.equals(username)&& PASSWORD.equals(password)){\r\n\t\t\trequest.getSession().setAttribute(\"user\", username);\r\n\t\t\tmv.setViewName(\"redirect:/manager/students\");\r\n\t\t}else{\r\n\t\t\tmv.setViewName(\"forward:/\");\r\n\t\t\tmv.addObject(\"username\",username);\r\n\t\t\tmv.addObject(\"message\", \"username or password error \");\r\n\t\t}\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t\r\n\t@RequestMapping(value=\"/loginout\",method=RequestMethod.POST)\r\n\tpublic ModelAndView loginOut(HttpServletRequest request){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"/\");\r\n\t\trequest.getSession().removeAttribute(\"user\");\r\n\t\treturn mv;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/com/aixuexiao/web/controller/StudentController.java",
    "content": "package com.aixuexiao.web.controller;\r\n\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport javax.annotation.Resource;\r\n\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.servlet.ModelAndView;\r\n\r\nimport com.aixuexiao.model.Classes;\r\nimport com.aixuexiao.model.ExamMark;\r\nimport com.aixuexiao.model.Student;\r\nimport com.aixuexiao.model.StudentMessage;\r\nimport com.aixuexiao.service.StudentService;\r\n\r\n/**\r\n * 包含学生列表菜单内的所有操作\r\n */\r\n@Controller\r\npublic class StudentController {\r\n\t\r\n\tpublic static final int pagesize = 8;\r\n\t\r\n\t@Resource(name=\"studentService\")\r\n\tprivate StudentService studentService;\r\n\t\r\n\t@RequestMapping(value=\"/manager/students\",method=RequestMethod.GET)\r\n\tpublic ModelAndView listStudent(String pagenum,Student student){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"students\");\r\n\t\tmv.addObject(\"sidebar\",\"students\");\r\n\t\tint num = 1;\r\n\t\tif(null!=pagenum){\r\n\t\t\tnum = Integer.parseInt(pagenum);\r\n\t\t}\r\n\t\tList<Student> list = studentService.listStudent((num-1)*pagesize, pagesize,student);\r\n\t\tList<Classes> clslist = studentService.findAllClasses();\r\n\t\tmv.addObject(\"studentList\", list);\r\n\t\tmv.addObject(\"clsList\", clslist);\r\n\t\tmv.addObject(\"length\", list.size());\r\n\t\tmv.addObject(\"pagenum\", num);\r\n\t\tmv.addObject(\"student\", student);\r\n\t\treturn mv;\r\n\t}\r\n\r\n\t\r\n\t@RequestMapping(value=\"/manager/leavemessage\",method=RequestMethod.GET)\r\n\tpublic ModelAndView leavemessage(int studentid){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tStudent student = studentService.findStudentById(studentid);\r\n\t\tif(null == student){\r\n\t\t\tmv.setViewName(\"redirect:/manager/students\");\r\n\t\t}else{\r\n\t\t\tmv.setViewName(\"addstudentmessage\");\r\n\t\t\tmv.addObject(\"sidebar\",\"students\");\r\n\t\t\tmv.addObject(\"student\",student);\r\n\t\t\tList<StudentMessage> list = studentService.listMessageByStudentId(studentid, 100);\r\n\t\t\tmv.addObject(\"studentMessageList\", list);\r\n\t\t}\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/examdetail\",method=RequestMethod.GET)\r\n\tpublic ModelAndView examdetail(int studentid){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tStudent student = studentService.findStudentById(studentid);\r\n\t\tif(null == student){\r\n\t\t\tmv.setViewName(\"redirect:/manager/students\");\r\n\t\t}else{\r\n\t\t\tmv.setViewName(\"examdetail\");\r\n\t\t\tmv.addObject(\"sidebar\",\"students\");\r\n\t\t\tmv.addObject(\"student\",student);\r\n\t\t\tList<ExamMark> list = studentService.findExamMarkByStudentId(studentid, 100);\r\n\t\t\tmv.addObject(\"emlist\", list);\r\n\t\t}\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/addmessage\",method=RequestMethod.POST)\r\n\tpublic ModelAndView addmessage(StudentMessage studentMessage){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"redirect:/manager/leavemessage\");\r\n\t\tmv.addObject(\"studentid\",studentMessage.getStudentid());\r\n\t\tstudentMessage.setInserttime(new Date());\r\n\t\tstudentService.addStudentMessage(studentMessage);\r\n\t\tmv.addObject(\"notice\",\"留言成功\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t@RequestMapping(value=\"/manager/deletemessage\",method=RequestMethod.GET)\r\n\tpublic ModelAndView deletemessage(int studentid,int messageid){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.setViewName(\"redirect:/manager/leavemessage\");\r\n\t\tmv.addObject(\"studentid\",studentid);\r\n\t\tstudentService.deleteStudentMessageById(messageid);\r\n\t\tmv.addObject(\"notice\",\"删除成功\");\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/com/aixuexiao/web/controller/WeixinController.java",
    "content": "package com.aixuexiao.web.controller;\r\n\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport javax.annotation.Resource;\r\nimport javax.servlet.http.HttpServletRequest;\r\n\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\nimport org.springframework.web.servlet.ModelAndView;\r\n\r\nimport com.aixuexiao.model.ExamMark;\r\nimport com.aixuexiao.model.Message;\r\nimport com.aixuexiao.model.Reply;\r\nimport com.aixuexiao.service.WeixinService;\r\nimport com.aixuexiao.util.WeixinUtil;\r\n\r\n@Controller()\r\npublic class WeixinController {\r\n\t\r\n\tprivate static final String TOKEN = \"aixuexiao\";\r\n\t\r\n\tpublic static int pagesize = 10;\r\n\t\r\n\t@Resource(name=\"weixinService\")\r\n\tprivate WeixinService weixinService;\r\n\t\r\n\t@RequestMapping(value=\"/test\",method=RequestMethod.GET,produces=\"text/html;charset=UTF-8\")\r\n\t@ResponseBody\r\n\tpublic String test(HttpServletRequest request){\r\n\t\treturn weixinService.getStudentMessageHistoryByStudentId(30202);\r\n\t}\r\n\t\r\n\t\r\n\t//接收微信公众号接收的消息，处理后再做相应的回复\r\n\t@RequestMapping(value=\"/weixin\",method=RequestMethod.POST,produces=\"text/html;charset=UTF-8\")\r\n\t@ResponseBody\r\n\tpublic String replyMessage(HttpServletRequest request){\r\n\t\t//仅处理微信服务端发的请求\r\n\t\tif (checkWeixinReques(request)) {\r\n\t\t\tMap<String, String> requestMap = WeixinUtil.parseXml(request);\r\n\t\t\tMessage message = WeixinUtil.mapToMessage(requestMap);\r\n\t\t\tweixinService.addMessage(message);//保存接受消息到数据库\r\n\t\t\tString replyContent = Reply.WELCOME_CONTENT;\r\n\t\t\tString type = message.getMsgType();\r\n\t\t\tif (type.equals(Message.TEXT)) {//仅处理文本回复内容\r\n\t\t\t\tString content = message.getContent();//消息内容\r\n\t\t\t\tString [] cs = content.split(\"_\");//消息内容都以下划线_分隔\r\n\t\t\t\tif(cs.length == 2){\r\n\t\t\t\t\tint studentid ;//学生编号\r\n\t\t\t\t\tString process = cs[1];//操作\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tstudentid = Integer.parseInt(cs[0]);\r\n\t\t\t\t\t\tif(\"考试\".equals(process)){\r\n\t\t\t\t\t\t\treplyContent = weixinService.getSingleExamMarkStringByStudentId(studentid);\r\n\t\t\t\t\t\t}else if(\"考试历史\".equals(process)){\r\n\t\t\t\t\t\t\treplyContent = weixinService.getExamMarkHistoryStringByStudentId(studentid);\r\n\t\t\t\t\t\t}else if(\"留言\".equals(process)){\r\n\t\t\t\t\t\t\treplyContent = weixinService.getSingleStudentMessageByStudentId(studentid);\r\n\t\t\t\t\t\t}else if(\"留言历史\".equals(process)){\r\n\t\t\t\t\t\t\treplyContent = weixinService.getStudentMessageHistoryByStudentId(studentid);\r\n\t\t\t\t\t\t}else if(\"动态\".equals(process)){\r\n\t\t\t\t\t\t\treplyContent = weixinService.getSingleClassesNewsByStudentId(studentid);\r\n\t\t\t\t\t\t}else if(\"动态历史\".equals(process)){\r\n\t\t\t\t\t\t\treplyContent = weixinService.getClassesNewsHistoryByStudentId(studentid);\r\n\t\t\t\t\t\t} \r\n\t\t\t\t\t} catch (NumberFormatException e) {\r\n\t\t\t\t\t\treplyContent = Reply.ERROR_CONTENT;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//拼装回复消息\r\n\t\t\tReply reply = new Reply();\r\n\t\t\treply.setToUserName(message.getFromUserName());\r\n\t\t\treply.setFromUserName(message.getToUserName());\r\n\t\t\treply.setCreateTime(new Date());\r\n\t\t\treply.setMsgType(Reply.TEXT);\r\n\t\t\treply.setContent(replyContent);\r\n\t\t\tweixinService.addReply(reply);//保存回复消息到数据库\r\n\t\t\t//将回复消息序列化为xml形式\r\n\t\t\tString back = WeixinUtil.replyToXml(reply);\r\n\t\t\tSystem.out.println(back);\r\n\t\t\treturn back;\r\n\t\t}else{\r\n\t\t\treturn \"error\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\t//微信公众平台验证url是否有效使用的接口\r\n\t@RequestMapping(value=\"/weixin\",method=RequestMethod.GET,produces=\"text/html;charset=UTF-8\")\r\n\t@ResponseBody\r\n\tpublic String initWeixinURL(HttpServletRequest request){\r\n\t\tString echostr = request.getParameter(\"echostr\");\r\n\t\tif (checkWeixinReques(request) && echostr != null) {\r\n\t\t\treturn echostr;\r\n\t\t}else{\r\n\t\t\treturn \"error\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * 根据token计算signature验证是否为weixin服务端发送的消息\r\n\t */\r\n\tprivate static boolean checkWeixinReques(HttpServletRequest request){\r\n\t\tString signature = request.getParameter(\"signature\");\r\n\t\tString timestamp = request.getParameter(\"timestamp\");\r\n\t\tString nonce = request.getParameter(\"nonce\");\r\n\t\tif (signature != null && timestamp != null && nonce != null ) {\r\n\t\t\tString[] strSet = new String[] { TOKEN, timestamp, nonce };\r\n\t\t\tjava.util.Arrays.sort(strSet);\r\n\t\t\tString key = \"\";\r\n\t\t\tfor (String string : strSet) {\r\n\t\t\t\tkey = key + string;\r\n\t\t\t}\r\n\t\t\tString pwd = WeixinUtil.sha1(key);\r\n\t\t\treturn pwd.equals(signature);\r\n\t\t}else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * 收到消息列表页面\r\n\t */\r\n\t@RequestMapping(value=\"/manager/messages\",method=RequestMethod.GET)\r\n\tpublic ModelAndView listMessage(String pagenum){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.addObject(\"sidebar\",\"messages\");\r\n\t\tmv.setViewName(\"messages\");\r\n\t\tint num = 1;\r\n\t\tif(null!=pagenum){\r\n\t\t\tnum = Integer.parseInt(pagenum);\r\n\t\t}\r\n\t\tList<Message> list = weixinService.listMessage((num-1)*pagesize, pagesize);\r\n\t\tmv.addObject(\"messageList\", list);\r\n\t\tmv.addObject(\"pagenum\", num);\r\n\t\tmv.addObject(\"length\", list.size());\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * 回复消息列表页面\r\n\t */\r\n\t@RequestMapping(value=\"/manager/replys\",method=RequestMethod.GET)\r\n\tpublic ModelAndView listReply(String pagenum){\r\n\t\tModelAndView mv=new ModelAndView();\r\n\t\tmv.addObject(\"sidebar\",\"replys\");\r\n\t\tmv.setViewName(\"replys\");\r\n\t\tint num = 1;\r\n\t\tif(null!=pagenum){\r\n\t\t\tnum = Integer.parseInt(pagenum);\r\n\t\t}\r\n\t\tList<Reply> list = weixinService.listReply((num-1)*pagesize, pagesize);\r\n\t\tmv.addObject(\"replyList\", list);\r\n\t\tmv.addObject(\"pagenum\", num);\r\n\t\tmv.addObject(\"length\", list.size());\r\n\t\treturn mv;\r\n\t}\r\n\t\r\n\t\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/com/aixuexiao/web/interceptor/ManagerInterceptor.java",
    "content": "package com.aixuexiao.web.interceptor;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport org.springframework.web.servlet.HandlerInterceptor;\nimport org.springframework.web.servlet.ModelAndView;\n\n/**\n * 用于过滤未登陆用户访问管理内容的拦截器\n * @author lizy\n */\npublic class ManagerInterceptor implements HandlerInterceptor{\n\n\t@Override\n\tpublic void afterCompletion(HttpServletRequest request,\n\t\t\tHttpServletResponse response, Object obj, Exception e)\n\t\t\tthrows Exception {\n\t}\n\n\t@Override\n\tpublic void postHandle(HttpServletRequest request, HttpServletResponse response,\n\t\t\tObject obj, ModelAndView mav) throws Exception {\n\t}\n\n\t@Override\n\tpublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {\n\t\trequest.setCharacterEncoding(\"UTF-8\");\n\t\tif(request.getSession().getAttribute(\"user\")!=null){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tresponse.sendRedirect(request.getContextPath()+\"/\");\n\t\t\t//System.out.println(\"request.getSession().getAttribute(\\\"user\\\")\"+request.getSession().getAttribute(\"user\"));\n\t\t\treturn false;\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/db.properties",
    "content": "db.read.database=app_aixuexiao\ndb.read.host=r.rdc.sae.sina.com.cn\ndb.read.port=3307\ndb.read.userName=ak\ndb.read.password=sk\n \n\ndb.write.database=app_aixuexiao\ndb.write.host=w.rdc.sae.sina.com.cn\ndb.write.port=3307\ndb.write.userName=ak\ndb.write.password=sk\n \n\n"
  },
  {
    "path": "src/log4j.properties",
    "content": "log4j.rootLogger=INFO,console\r\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\r\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\r\nlog4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH\\:mm\\:ss,SSS} %5p %c\\:(%F\\:%L) %n - %m%n\r\n\r\n\r\n"
  },
  {
    "path": "src/spring.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n    xmlns:jee=\"http://www.springframework.org/schema/jee\"\r\n    xmlns:tx=\"http://www.springframework.org/schema/tx\"\r\n    xmlns:context=\"http://www.springframework.org/schema/context\"\r\n    xmlns:aop=\"http://www.springframework.org/schema/aop\"\r\n    xsi:schemaLocation=\"\r\nhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd \r\nhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd \r\nhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd \r\nhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd \r\nhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd\">\r\n\r\n    <tx:annotation-driven transaction-manager=\"transactionManager\"/>\r\n\t<context:annotation-config></context:annotation-config>\r\n\t<context:component-scan base-package=\"com.aixuexiao\"/>\r\n    \r\n    <!-- 加载配置文件 -->\r\n    <bean id=\"propertyConfigurer\"\r\n        class=\"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer\">\r\n        <property name=\"locations\">\r\n            <list>\r\n                <value>classpath:db.properties</value>\r\n            </list>\r\n        </property>\r\n    </bean>\r\n\t\r\n    \r\n    <!-- 配置数据源 -->\r\n    <bean id=\"readDataSource\"  class=\"com.mchange.v2.c3p0.ComboPooledDataSource\" destroy-method=\"close\">\r\n        <property name=\"driverClass\" value=\"com.mysql.jdbc.Driver\" />\r\n        <property name=\"jdbcUrl\">\r\n            <value><![CDATA[jdbc:mysql://${db.read.host}:${db.read.port}/${db.read.database}?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true]]></value>\r\n        </property>\r\n        <property name=\"user\"               value=\"${db.read.userName}\" />\r\n        <property name=\"password\"           value=\"${db.read.password}\" />\r\n        <property name=\"maxPoolSize\"        value=\"12\" />\r\n        <property name=\"minPoolSize\"        value=\"0\" />\r\n        <property name=\"maxStatements\"      value=\"100\" />\r\n        <property name=\"initialPoolSize\"    value=\"3\" />\r\n        <property name=\"maxIdleTime\"        value=\"10\"/>\r\n        <property name=\"idleConnectionTestPeriod\"   value=\"10\" />\r\n        <property name=\"testConnectionOnCheckin\"    value=\"true\" />\r\n        <property name=\"testConnectionOnCheckout\"   value=\"false\" />\r\n        <property name=\"preferredTestQuery\"         value=\"SELECT 1 FROM DUAL\" />\r\n    </bean>\r\n\r\n    <!-- 配置读的 ibatis （从库）-->\r\n    <bean id=\"readSqlSessionFactory\" class=\"org.mybatis.spring.SqlSessionFactoryBean\">\r\n\t\t<property name=\"dataSource\" ref=\"readDataSource\" />\r\n\t\t<property name=\"configLocation\" value=\"classpath:sqlMapConfig.xml\"/>\r\n\t</bean>\r\n    \r\n    \r\n    <bean id=\"readSqlSession\" class=\"org.mybatis.spring.SqlSessionTemplate\">\r\n\t\t<constructor-arg index=\"0\" ref=\"readSqlSessionFactory\" />\r\n\t</bean>\r\n\r\n    <!-- 配置数据源（主库） -->\r\n    <bean id=\"writeDataSource\"  class=\"com.mchange.v2.c3p0.ComboPooledDataSource\" destroy-method=\"close\">\r\n        <property name=\"driverClass\" value=\"com.mysql.jdbc.Driver\" />\r\n        <property name=\"jdbcUrl\">\r\n            <value><![CDATA[jdbc:mysql://${db.write.host}:${db.write.port}/${db.write.database}?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true]]></value>\r\n        </property>\r\n        <property name=\"user\"               value=\"${db.write.userName}\" />\r\n        <property name=\"password\"           value=\"${db.write.password}\" />\r\n        <property name=\"maxPoolSize\"        value=\"12\" />\r\n        <property name=\"minPoolSize\"        value=\"0\" />\r\n        <property name=\"maxStatements\"      value=\"100\" />\r\n        <property name=\"initialPoolSize\"    value=\"3\" />\r\n        <property name=\"maxIdleTime\"        value=\"10\"/>\r\n        <property name=\"idleConnectionTestPeriod\"   value=\"10\" />\r\n        <property name=\"testConnectionOnCheckin\"    value=\"true\" />\r\n        <property name=\"testConnectionOnCheckout\"   value=\"false\" />\r\n        <property name=\"preferredTestQuery\"         value=\"SELECT 1 FROM DUAL\" />\r\n    </bean>  \r\n\r\n    <!-- 配置写的ibatis （主库）-->\r\n    <bean id=\"writerSqlSessionFactory\" class=\"org.mybatis.spring.SqlSessionFactoryBean\">\r\n\t\t<property name=\"dataSource\" ref=\"writeDataSource\" />\r\n\t\t<property name=\"configLocation\" value=\"classpath:sqlMapConfig.xml\"/>\r\n\t</bean>\r\n    \r\n    <bean id=\"writerSqlSession\" class=\"org.mybatis.spring.SqlSessionTemplate\">\r\n\t\t<constructor-arg index=\"0\" ref=\"writerSqlSessionFactory\" />\r\n\t</bean>\r\n    \r\n     <!-- 事务控制 （主库）-->\r\n    <bean id=\"transactionManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\">\r\n\t\t<property name=\"dataSource\" ref=\"writeDataSource\" />\r\n\t</bean>\r\n    \r\n</beans>"
  },
  {
    "path": "src/sqlMapConfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>  \r\n<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\" \r\n\"http://mybatis.org/dtd/mybatis-3-config.dtd\">  \r\n<configuration>  \r\n    <!-- 配置mybatis的缓存，延迟加载等等一系列属性 -->  \r\n    <settings>  \r\n        <!-- 全局映射器启用缓存 -->  \r\n        <setting name=\"cacheEnabled\" value=\"true\" />  \r\n        <!-- 查询时，关闭关联对象即时加载以提高性能 -->  \r\n        <setting name=\"lazyLoadingEnabled\" value=\"true\" />  \r\n        <!-- 设置关联对象加载的形态，此处为按需加载字段(加载字段由SQL指 定)，不会加载关联表的所有字段，以提高性能 -->  \r\n        <setting name=\"aggressiveLazyLoading\" value=\"false\" />  \r\n        <!-- 对于未知的SQL查询，允许返回不同的结果集以达到通用的效果 -->  \r\n        <setting name=\"multipleResultSetsEnabled\" value=\"true\" />  \r\n        <!-- 允许使用列标签代替列名 -->  \r\n        <setting name=\"useColumnLabel\" value=\"true\" />  \r\n        <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值)，数据表的PK生成策略将被覆盖 -->  \r\n        <!-- <setting name=\"useGeneratedKeys\" value=\"true\" /> -->  \r\n        <!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->  \r\n        <setting name=\"autoMappingBehavior\" value=\"FULL\" />  \r\n        <!-- 对于批量更新操作缓存SQL以提高性能 -->  \r\n        <setting name=\"defaultExecutorType\" value=\"BATCH\" />  \r\n        <!-- 数据库超过25000秒仍未响应则超时 -->  \r\n        <setting name=\"defaultStatementTimeout\" value=\"25000\" />  \r\n    </settings>  \r\n    <typeAliases>\r\n   \t\t <typeAlias alias=\"Message\"  type=\"com.aixuexiao.model.Message\" />\r\n   \t\t <typeAlias alias=\"Reply\"  type=\"com.aixuexiao.model.Reply\" />\r\n   \t\t <typeAlias alias=\"Article\"  type=\"com.aixuexiao.model.Article\" />\r\n   \t\t <typeAlias alias=\"Student\"  type=\"com.aixuexiao.model.Student\" />\r\n   \t\t <typeAlias alias=\"Classes\"  type=\"com.aixuexiao.model.Classes\" />\r\n   \t\t <typeAlias alias=\"Exam\"  type=\"com.aixuexiao.model.Exam\" />\r\n   \t\t <typeAlias alias=\"ExamMark\"  type=\"com.aixuexiao.model.ExamMark\" />\r\n   \t\t <typeAlias alias=\"StudentMessage\"  type=\"com.aixuexiao.model.StudentMessage\" />\r\n   \t\t <typeAlias alias=\"ClassesNews\"  type=\"com.aixuexiao.model.ClassesNews\" />\r\n\t</typeAliases>\r\n    <mappers>\r\n    \t<mapper resource=\"com/aixuexiao/dao/sqlmap/ReplyMapper.xml\"/>\r\n    \t<mapper resource=\"com/aixuexiao/dao/sqlmap/MessageMapper.xml\"/>\r\n    \t<mapper resource=\"com/aixuexiao/dao/sqlmap/StudentMapper.xml\"/>\r\n    \t<mapper resource=\"com/aixuexiao/dao/sqlmap/ExamMapper.xml\"/>\r\n    \t<mapper resource=\"com/aixuexiao/dao/sqlmap/StudentMessageMapper.xml\"/>\r\n    \t<mapper resource=\"com/aixuexiao/dao/sqlmap/ClassesNewsMapper.xml\"/>\r\n    \t<mapper resource=\"com/aixuexiao/dao/sqlmap/ClassesMapper.xml\"/>\r\n    </mappers>\r\n</configuration>\r\n"
  }
]