guyanqing 1 year ago
parent
commit
0ae76a311d
35 changed files with 1371 additions and 435 deletions
  1. 0 1
      gn_oa_vip27/.idea/misc.xml
  2. 124 0
      gn_oa_vip27/.idea/uiDesigner.xml
  3. 60 24
      gn_oa_vip27/.idea/workspace.xml
  4. 15 0
      gn_oa_vip27/pom.xml
  5. 16 0
      gn_oa_vip27/src/main/java/com/sf/dao/EmployeeDao.java
  6. 18 0
      gn_oa_vip27/src/main/java/com/sf/dao/impl/EmployeeDaoImpl.java
  7. 132 0
      gn_oa_vip27/src/main/java/com/sf/entity/Employee.java
  8. 14 0
      gn_oa_vip27/src/main/java/com/sf/service/EmployeeService.java
  9. 47 0
      gn_oa_vip27/src/main/java/com/sf/service/impl/EmployeeServiceImpl.java
  10. 65 0
      gn_oa_vip27/src/main/java/com/sf/servlet/LoginServlet.java
  11. 56 0
      gn_oa_vip27/src/main/java/com/sf/servlet/VerifyCodeServlet.java
  12. 302 205
      gn_oa_vip27/src/main/webapp/index.jsp
  13. 94 0
      gn_oa_vip27/src/main/webapp/login.jsp
  14. 16 0
      gn_oa_vip27/src/main/webapp/user.jsp
  15. BIN
      gn_oa_vip27/target/classes/com/sf/dao/EmployeeDao.class
  16. BIN
      gn_oa_vip27/target/classes/com/sf/dao/impl/EmployeeDaoImpl.class
  17. BIN
      gn_oa_vip27/target/classes/com/sf/entity/Employee.class
  18. BIN
      gn_oa_vip27/target/classes/com/sf/service/EmployeeService.class
  19. BIN
      gn_oa_vip27/target/classes/com/sf/service/impl/EmployeeServiceImpl.class
  20. BIN
      gn_oa_vip27/target/classes/com/sf/servlet/LoginServlet.class
  21. BIN
      gn_oa_vip27/target/classes/com/sf/servlet/VerifyCodeServlet.class
  22. BIN
      gn_oa_vip27/target/gn_oa_vip27.war
  23. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/dao/EmployeeDao.class
  24. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/dao/impl/EmployeeDaoImpl.class
  25. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/entity/Employee.class
  26. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/service/EmployeeService.class
  27. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/service/impl/EmployeeServiceImpl.class
  28. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/servlet/LoginServlet.class
  29. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/servlet/VerifyCodeServlet.class
  30. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/lib/filters-2.0.235-1.jar
  31. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/lib/javax.servlet-api-3.1.0.jar
  32. BIN
      gn_oa_vip27/target/gn_oa_vip27/WEB-INF/lib/kaptcha-2.3.2.jar
  33. 302 205
      gn_oa_vip27/target/gn_oa_vip27/index.jsp
  34. 94 0
      gn_oa_vip27/target/gn_oa_vip27/login.jsp
  35. 16 0
      gn_oa_vip27/target/gn_oa_vip27/user.jsp

+ 0 - 1
gn_oa_vip27/.idea/misc.xml

@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ExternalStorageConfigurationManager" enabled="true" />
   <component name="FrameworkDetectionExcludesConfiguration">

+ 124 - 0
gn_oa_vip27/.idea/uiDesigner.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>

+ 60 - 24
gn_oa_vip27/.idea/workspace.xml

@@ -10,14 +10,22 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="fdadf229-95a2-4903-b472-eec1ea62a98e" name="Changes" comment="">
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/dto/RoleExcel.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/servlet/RoleExcelDownServlet.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/dao/EmployeeDao.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/dao/impl/EmployeeDaoImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/Employee.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/service/EmployeeService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/service/impl/EmployeeServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/servlet/LoginServlet.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/servlet/VerifyCodeServlet.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/webapp/login.jsp" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/webapp/user.jsp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/webapp/role_list.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/role_list.jsp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/sf/filter/CharacterEncodingFilter.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/sf/filter/CharacterEncodingFilter.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/webapp/index.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/index.jsp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/gn_oa_vip27.war" beforeDir="false" afterPath="$PROJECT_DIR$/target/gn_oa_vip27.war" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/gn_oa_vip27/WEB-INF/classes/com/sf/filter/CharacterEncodingFilter.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/gn_oa_vip27/WEB-INF/classes/com/sf/filter/CharacterEncodingFilter.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/gn_oa_vip27/role_list.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/target/gn_oa_vip27/role_list.jsp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/gn_oa_vip27/index.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/target/gn_oa_vip27/index.jsp" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -27,8 +35,8 @@
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
-        <option value="Interface" />
         <option value="Jsp File" />
+        <option value="Interface" />
         <option value="Class" />
       </list>
     </option>
@@ -49,6 +57,9 @@
   <component name="MarkdownSettingsMigration">
     <option name="stateVersion" value="1" />
   </component>
+  <component name="ProjectColorInfo">{
+  &quot;associatedIndex&quot;: 2
+}</component>
   <component name="ProjectId" id="2YCzjmZhflILlI1E6uK1SCG4R9I" />
   <component name="ProjectLevelVcsManager" settingsEditedManually="true">
     <ConfirmationsSetting value="2" id="Add" />
@@ -56,32 +67,49 @@
   <component name="ProjectViewState">
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;last_opened_file_path&quot;: &quot;D:/Program Files/IntelliJ IDEA 2019.3.3/VIPJAVA/gn_oa_vip27/src/main/webapp&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;project.structure.last.edited&quot;: &quot;Modules&quot;,
-    &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
-    &quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;editor.preferences.fonts.default&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "last_opened_file_path": "D:/Program Files/IntelliJ IDEA 2019.3.3/VIPJAVA/gn_oa_vip27/src/main/webapp",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "project.structure.last.edited": "Modules",
+    "project.structure.proportion": "0.0",
+    "project.structure.side.proportion": "0.0",
+    "settings.editor.selected.configurable": "editor.preferences.fonts.default",
+    "vue.rearranger.settings.migration": "true"
   }
-}</component>
+}]]></component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
       <recent name="D:\Program Files\IntelliJ IDEA 2019.3.3\VIPJAVA\gn_oa_vip27\src\main\webapp" />
+      <recent name="D:\Program Files\IntelliJ IDEA 2019.3.3\VIPJAVA\gn_oa_vip27\src\main\java\com\sf\service" />
       <recent name="D:\Program Files\IntelliJ IDEA 2019.3.3\VIPJAVA\gn_oa_vip27\src\main\java\com\sf\servlet" />
       <recent name="D:\Program Files\IntelliJ IDEA 2019.3.3\VIPJAVA\gn_oa_vip27\src\main\resources" />
     </key>
+    <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="com.sf.service" />
+      <recent name="com.sf.service.impl" />
+      <recent name="com.sf.servlet" />
+    </key>
   </component>
   <component name="RunManager">
+    <configuration default="true" type="JetRunConfigurationType">
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration default="true" type="KotlinStandaloneScriptRunConfigurationType">
+      <option name="filePath" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
     <configuration name="Tomcat 9.0.70" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat 9.0.70" ALTERNATIVE_JRE_ENABLED="false" nameIsGenerated="true">
       <option name="UPDATING_POLICY" value="restart-server" />
       <deployment>
@@ -172,6 +200,14 @@
       <workItem from="1700897427369" duration="1241000" />
       <workItem from="1700960946081" duration="5342000" />
       <workItem from="1701917241072" duration="54000" />
+      <workItem from="1702000428562" duration="5082000" />
+      <workItem from="1702021878890" duration="1500000" />
+      <workItem from="1702082306029" duration="20000" />
+      <workItem from="1702082334499" duration="3000" />
+      <workItem from="1702082468084" duration="1343000" />
+      <workItem from="1702100767665" duration="12000" />
+      <workItem from="1702100791887" duration="53000" />
+      <workItem from="1702100877908" duration="11630000" />
     </task>
     <servers />
   </component>

+ 15 - 0
gn_oa_vip27/pom.xml

@@ -201,6 +201,21 @@
       <artifactId>xmlbeans</artifactId>
       <version>2.6.0</version>
     </dependency>
+
+    <!--验证码的依赖-->
+    <dependency>
+      <groupId>com.github.penggle</groupId>
+      <artifactId>kaptcha</artifactId>
+      <version>2.3.2</version>
+    </dependency>
+    <!-- https://mvnrepository.com/artifact/com.jhlabs/filters -->
+    <dependency>
+      <groupId>com.jhlabs</groupId>
+      <artifactId>filters</artifactId>
+      <version>2.0.235-1</version>
+    </dependency>
+
+
   </dependencies>
 
   <build>

+ 16 - 0
gn_oa_vip27/src/main/java/com/sf/dao/EmployeeDao.java

@@ -0,0 +1,16 @@
+package com.sf.dao;
+
+import com.sf.entity.Employee;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * 员工表的持久化层接口
+ */
+public interface EmployeeDao {
+
+//    查询
+    Employee getEmployee(Connection connection,Class<Employee> clazz ,String sql ,Object...args) throws SQLException, NoSuchFieldException, IllegalAccessException, InstantiationException;
+
+}

+ 18 - 0
gn_oa_vip27/src/main/java/com/sf/dao/impl/EmployeeDaoImpl.java

@@ -0,0 +1,18 @@
+package com.sf.dao.impl;
+
+import com.sf.dao.BaseDao;
+import com.sf.dao.EmployeeDao;
+import com.sf.entity.Employee;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * 员工表的持久化层接口的实现类
+ */
+public class EmployeeDaoImpl extends BaseDao<Employee> implements EmployeeDao {
+    @Override
+    public Employee getEmployee(Connection connection, Class<Employee> clazz, String sql, Object... args) throws SQLException, NoSuchFieldException, IllegalAccessException, InstantiationException {
+        return get(connection,clazz,sql,args);
+    }
+}

+ 132 - 0
gn_oa_vip27/src/main/java/com/sf/entity/Employee.java

@@ -0,0 +1,132 @@
+package com.sf.entity;
+
+import java.util.Date;
+
+/**
+ * 映射员工表的实体类
+ */
+public class Employee {
+
+    private Integer empId;
+    private String empName;
+    private Integer deptId;
+    private String gender;
+    private String phone;
+    private String qq;
+    private String email;
+    private Date hireTime;
+    private String empPassword;
+    private Integer roleId;
+
+    public Employee() {
+    }
+
+    public Employee(Integer empId, String empName, Integer deptId, String gender, String phone, String qq, String email, Date hireTime, String empPassword, Integer roleId) {
+        this.empId = empId;
+        this.empName = empName;
+        this.deptId = deptId;
+        this.gender = gender;
+        this.phone = phone;
+        this.qq = qq;
+        this.email = email;
+        this.hireTime = hireTime;
+        this.empPassword = empPassword;
+        this.roleId = roleId;
+    }
+
+    public Integer getEmpId() {
+        return empId;
+    }
+
+    public void setEmpId(Integer empId) {
+        this.empId = empId;
+    }
+
+    public String getEmpName() {
+        return empName;
+    }
+
+    public void setEmpName(String empName) {
+        this.empName = empName;
+    }
+
+    public Integer getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(Integer deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getQq() {
+        return qq;
+    }
+
+    public void setQq(String qq) {
+        this.qq = qq;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Date getHireTime() {
+        return hireTime;
+    }
+
+    public void setHireTime(Date hireTime) {
+        this.hireTime = hireTime;
+    }
+
+    public String getEmpPassword() {
+        return empPassword;
+    }
+
+    public void setEmpPassword(String empPassword) {
+        this.empPassword = empPassword;
+    }
+
+    public Integer getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Integer roleId) {
+        this.roleId = roleId;
+    }
+
+    @Override
+    public String toString() {
+        return "Employee{" +
+                "empId=" + empId +
+                ", empName='" + empName + '\'' +
+                ", deptId=" + deptId +
+                ", gender='" + gender + '\'' +
+                ", phone='" + phone + '\'' +
+                ", qq='" + qq + '\'' +
+                ", email='" + email + '\'' +
+                ", hireTime=" + hireTime +
+                ", empPassword='" + empPassword + '\'' +
+                ", roleId=" + roleId +
+                '}';
+    }
+}

+ 14 - 0
gn_oa_vip27/src/main/java/com/sf/service/EmployeeService.java

@@ -0,0 +1,14 @@
+package com.sf.service;
+
+import com.sf.dao.EmployeeDao;
+import com.sf.entity.Employee;
+
+import java.sql.SQLException;
+
+/**
+ * 员工表的service层
+ */
+public interface EmployeeService {
+    Employee  getEmployeeByEmailAndPassword(String email,String password) throws SQLException;
+
+}

+ 47 - 0
gn_oa_vip27/src/main/java/com/sf/service/impl/EmployeeServiceImpl.java

@@ -0,0 +1,47 @@
+package com.sf.service.impl;
+
+import com.sf.dao.EmployeeDao;
+import com.sf.dao.impl.EmployeeDaoImpl;
+import com.sf.entity.Employee;
+import com.sf.service.EmployeeService;
+import com.sf.utils.JdbcUtil;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * 员工表service表的实现类
+ */
+public class EmployeeServiceImpl implements EmployeeService {
+    private EmployeeDao employeeDao = new EmployeeDaoImpl();
+    @Override
+    public Employee getEmployeeByEmailAndPassword(String email, String password)  {
+//        获取数据库的连接
+        Connection connection = null;
+        try {
+            connection = JdbcUtil.getConnection();
+            connection.setAutoCommit(false);
+            String sql = "SELECT emp_id as empId,emp_name as empName ,dept_id as deptId ,gender as gender,email as email ,qq as qq ,hire_Time as hireTime,emp_password as empPassword,role_id as roleId FROM employee WHERE email = ? AND emp_password = ?";
+            Employee employee = employeeDao.getEmployee(connection, Employee.class, sql, email, password);
+            connection.commit();
+            return employee;
+        } catch (Exception e) {
+            e.printStackTrace();
+           if(connection != null){
+               try {
+                   connection.rollback();
+               } catch (SQLException ex) {
+                   throw new RuntimeException(ex);
+               }
+           }
+        }
+        finally {
+            try {
+                JdbcUtil.close();
+            } catch (SQLException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return null;
+    }
+}

+ 65 - 0
gn_oa_vip27/src/main/java/com/sf/servlet/LoginServlet.java

@@ -0,0 +1,65 @@
+package com.sf.servlet;
+
+import com.google.code.kaptcha.Constants;
+import com.sf.entity.Employee;
+import com.sf.service.EmployeeService;
+import com.sf.service.impl.EmployeeServiceImpl;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.*;
+import java.io.IOException;
+import java.sql.SQLException;
+
+/**
+ * 登录的servlet
+ */
+@WebServlet(name = "LoginServlet", value = "/LoginServlet")
+public class LoginServlet extends HttpServlet {
+    private EmployeeService employeeService = new EmployeeServiceImpl();
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        doPost(request,response);
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+//        获取登录页面传过来的参数
+        String email = request.getParameter("email");
+        String password = request.getParameter("password");
+        String captcha = request.getParameter("captcha");
+//        先验证验证码是都正确
+        if(captcha != null && captcha != ""){
+//           获取session中的验证码
+            String captchaBySession = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
+            if(captcha.equals(captchaBySession)){
+                if(email != null  && email != ""  && password != null && password != ""){
+                    try {
+                        Employee employee = employeeService.getEmployeeByEmailAndPassword(email, password);
+                        if(employee != null){
+                            request.getSession().setAttribute("empName",employee.getEmpName());
+//                           跳转到首页
+                            request.getRequestDispatcher("/index.jsp").forward(request,response);
+                        }else {
+                            request.setAttribute("msg","用户名或密码错误,请重新输入");
+                            request.getRequestDispatcher("/login.jsp").forward(request,response);
+                        }
+                    } catch (SQLException e) {
+                        e.printStackTrace();
+                        throw new RuntimeException(e);
+                    }
+                }else {
+                    request.setAttribute("msg","用户名或密码不能为空");
+                    request.getRequestDispatcher("/login.jsp").forward(request,response);
+                }
+
+            }else {
+                request.setAttribute("msg","验证码错误,请重新输入");
+                request.getRequestDispatcher("/login.jsp").forward(request,response);
+            }
+        }else {
+            request.setAttribute("msg","验证码不能为空");
+            request.getRequestDispatcher("/login.jsp").forward(request,response);
+        }
+    }
+}

+ 56 - 0
gn_oa_vip27/src/main/java/com/sf/servlet/VerifyCodeServlet.java

@@ -0,0 +1,56 @@
+package com.sf.servlet;
+
+import com.google.code.kaptcha.Constants;
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+
+import javax.imageio.ImageIO;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.*;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * 生成验证码的servlet
+ */
+@WebServlet(name = "VerifyCodeServlet", value = "/VerifyCodeServlet")
+public class VerifyCodeServlet extends HttpServlet {
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        doPost(request,response);
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setDateHeader("Expires",0);
+//        设置响应头信息   没有缓存
+        response.setHeader("Cache-Control","no-store,no-cache,must-revalidate");
+        response.setHeader("Pragma","no-cache");
+//        设置验证码的内容格式
+        response.setContentType("image/jpeg");
+
+//        创建kaptcha对象
+        DefaultKaptcha kaptcha = new DefaultKaptcha();
+        Properties properties = new Properties();
+//        设置验证码的属性信息
+        properties.setProperty("kaptcha.border","yes");
+        properties.setProperty("kaptcha.border.color","105,179,90");
+        Config config = new Config(properties);
+        kaptcha.setConfig(config);
+//        随机生成验证码
+        String text = kaptcha.createText();
+        System.out.println("当前验证码为====="+text);
+//        将验证码存到session域中
+        HttpSession session = request.getSession();
+        session.setAttribute(Constants.KAPTCHA_SESSION_KEY,text);
+//        将验证码text格式   生成图片格式
+        BufferedImage kaptchaImage = kaptcha.createImage(text);
+//        将图片验证码生成输出流
+        ServletOutputStream outputStream = response.getOutputStream();
+        ImageIO.write(kaptchaImage,"jpg",outputStream);
+        outputStream.flush();
+        outputStream.close();
+    }
+}

+ 302 - 205
gn_oa_vip27/src/main/webapp/index.jsp

@@ -1,221 +1,219 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html lang="zh">
 <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
-    <title>首页 - 光年(角色列表)OA管理系统</title>
-    <link rel="icon" href="favicon.ico" type="image/ico">
-    <meta name="keywords" content="ukoko.cn">
-    <meta name="description" content="解决中小企业...">
-    <meta name="author" content="夜泊">
-    <link href="css/bootstrap.min.css" rel="stylesheet">
-    <link href="css/materialdesignicons.min.css" rel="stylesheet">
-    <link href="css/style.min.css" rel="stylesheet">
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
+<title>首页 - 光年(首页)OA管理系统</title>
+<link rel="icon" href="favicon.ico" type="image/ico">
+<meta name="keywords" content="ukoko.cn">
+<meta name="description" content="解决中小企业...">
+<meta name="author" content="夜泊">
+<link href="css/bootstrap.min.css" rel="stylesheet">
+<link href="css/materialdesignicons.min.css" rel="stylesheet">
+<link href="css/style.min.css" rel="stylesheet">
 </head>
-
+  
 <body>
-<div class="lyear-layout-web">
-    <div class="lyear-layout-container">
-        <!--左侧导航-->
-        <aside class="lyear-layout-sidebar">
+<%
+  String empName = (String) session.getAttribute("empName");
+  if(empName == null || empName == ""){
+    response.sendRedirect("login.jsp");
+  }
+%>
 
-            <!-- logo -->
-            <div id="logo" class="sidebar-header">
-                <a href="index.html"><img src="images/logo-sidebar.png" title="LightYear" alt="LightYear" /></a>
+<div class="lyear-layout-web">
+  <div class="lyear-layout-container">
+    <!--左侧导航-->
+    <aside class="lyear-layout-sidebar">
+      
+      <!-- logo -->
+      <div id="logo" class="sidebar-header">
+        <a href="index.html"><img src="images/logo-sidebar.png" title="LightYear" alt="LightYear" /></a>
+      </div>
+      <div class="lyear-layout-sidebar-scroll"> 
+        
+        <!-- 左侧菜单栏位置 -->
+      	<jsp:include page="menu.jsp"></jsp:include>
+      
+      
+      </div>
+      
+    </aside>
+    <!--End 左侧导航-->
+    
+    <!--头部信息-->
+    <header class="lyear-layout-header">
+      
+      <nav class="navbar navbar-default">
+        <div class="topbar">
+          
+          <div class="topbar-left">
+            <div class="lyear-aside-toggler">
+              <span class="lyear-toggler-bar"></span>
+              <span class="lyear-toggler-bar"></span>
+              <span class="lyear-toggler-bar"></span>
             </div>
-            <div class="lyear-layout-sidebar-scroll">
-
-<%--                这是左侧导航栏位置--%>
-                <jsp:include page="menu.jsp"></jsp:include>
+            <span class="navbar-page-title"> 后台首页 </span>
+          </div>
+          
+          <jsp:include page="user.jsp"></jsp:include>
+          
+        </div>
+      </nav>
+      
+    </header>
+    <!--End 头部信息-->
+    
+    <!--页面主要内容-->
+    <main class="lyear-layout-content">
+      <div class="container-fluid">
+        <div class="row">
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-primary">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">总收入</p>
+                  <p class="h3 text-white m-b-0">102,125.00</p>
+                </div>
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-currency-cny fa-1-5x"></i></span> </div>
+              </div>
             </div>
-
-        </aside>
-        <!--End 左侧导航-->
-
-        <!--头部信息-->
-        <header class="lyear-layout-header">
-
-            <nav class="navbar navbar-default">
-                <div class="topbar">
-
-                    <div class="topbar-left">
-                        <div class="lyear-aside-toggler">
-                            <span class="lyear-toggler-bar"></span>
-                            <span class="lyear-toggler-bar"></span>
-                            <span class="lyear-toggler-bar"></span>
-                        </div>
-                        <span class="navbar-page-title"> 后台首页 </span>
-                    </div>
-
-                    <ul class="topbar-right">
-                        <li class="dropdown dropdown-profile">
-                            <a href="javascript:void(0)" data-toggle="dropdown">
-                                <img class="img-avatar img-avatar-48 m-r-10" src="images/users/avatar.jpg" alt="笔下光年" />
-                                <span>笔下光年 <span class="caret"></span></span>
-                            </a>
-                            <ul class="dropdown-menu dropdown-menu-right">
-                                <li> <a href="lyear_pages_profile.html"><i class="mdi mdi-account"></i> 个人信息</a> </li>
-                                <li> <a href="lyear_pages_edit_pwd.html"><i class="mdi mdi-lock-outline"></i> 修改密码</a> </li>
-                                <li class="divider"></li>
-                                <li> <a href="login.html"><i class="mdi mdi-logout-variant"></i> 退出登录</a> </li>
-                            </ul>
-                        </li>
-                    </ul>
+          </div>
+          
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-danger">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">当月收入</p>
+                  <p class="h3 text-white m-b-0">920,000</p>
                 </div>
-            </nav>
-
-        </header>
-        <!--End 头部信息-->
-
-        <!--页面主要内容-->
-        <main class="lyear-layout-content">
-
-            <div class="container-fluid">
-
-                <div class="row">
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-primary">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">总收入</p>
-                                    <p class="h3 text-white m-b-0">102,125.00</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-currency-cny fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-danger">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">当月收入</p>
-                                    <p class="h3 text-white m-b-0">920,000</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-account fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-success">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">总新增学员</p>
-                                    <p class="h3 text-white m-b-0">3400</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-arrow-down-bold fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-purple">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">当月新增学员</p>
-                                    <p class="h3 text-white m-b-0">153</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-comment-outline fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-account fa-1-5x"></i></span> </div>
+              </div>
+            </div>
+          </div>
+          
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-success">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">总新增学员</p>
+                  <p class="h3 text-white m-b-0">3400</p>
                 </div>
-
-                <div class="row">
-
-                    <div class="col-lg-6">
-                        <div class="card">
-                            <div class="card-header">
-                                <h4>周新增人数</h4>
-                            </div>
-                            <div class="card-body">
-                                <canvas class="js-chartjs-bars"></canvas>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-lg-6">
-                        <div class="card">
-                            <div class="card-header">
-                                <h4>全年交易金额</h4>
-                            </div>
-                            <div class="card-body">
-                                <canvas class="js-chartjs-lines"></canvas>
-                            </div>
-                        </div>
-                    </div>
-
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-arrow-down-bold fa-1-5x"></i></span> </div>
+              </div>
+            </div>
+          </div>
+          
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-purple">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">当月新增学员</p>
+                  <p class="h3 text-white m-b-0">153</p>
                 </div>
-
-                <div class="row">
-
-                    <div class="col-lg-12">
-                        <div class="card">
-                            <div class="card-header">
-                                <h4>任务信息</h4>
-                            </div>
-                            <div class="card-body">
-                                <div class="table-responsive">
-                                    <table class="table table-hover">
-                                        <thead>
-                                        <tr>
-                                            <th>#</th>
-                                            <th>任务名称</th>
-                                            <th>开始日期</th>
-                                            <th>状态</th>
-                                            <th>操作</th>
-                                        </tr>
-                                        </thead>
-                                        <tbody>
-                                        <tr>
-                                            <td>1</td>
-                                            <td>设计新主题</td>
-                                            <td>10/02/2019</td>
-                                            <td><span class="label label-warning">待定</span></td>
-                                            <td>
-                                                <div class="progress progress-striped progress-sm">
-                                                    <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
-                                                </div>
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <td>1</td>
-                                            <td>设计新主题</td>
-                                            <td>10/02/2019</td>
-                                            <td><span class="label label-warning">待定</span></td>
-                                            <td>
-                                                <div class="progress progress-striped progress-sm">
-                                                    <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
-                                                </div>
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <td>1</td>
-                                            <td>设计新主题</td>
-                                            <td>10/02/2019</td>
-                                            <td><span class="label label-warning">待定</span></td>
-                                            <td>
-                                                <div class="progress progress-striped progress-sm">
-                                                    <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
-                                                </div>
-                                            </td>
-                                        </tr>
-                                        </tbody>
-                                    </table>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-comment-outline fa-1-5x"></i></span> </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        
+        <div class="row">
+          
+          <div class="col-lg-6"> 
+            <div class="card">
+              <div class="card-header">
+                <h4>月新增人数</h4>
+              </div>
+              <div class="card-body">
+                <!-- 柱状图位置 -->
+                <div id="container" style="min-width: 310px; height: 300px; margin: 0 auto"></div>
+              </div>
+            </div>
+          </div>
+          
+          <div class="col-lg-6"> 
+            <div class="card">
+              <div class="card-header">
+                <h4>全年交易金额</h4>
+              </div>
+              <div class="card-body">
+                <!-- 折线图位置 -->
+                <div id="container1" style="max-width:800px;height:300px"></div>
+              </div>
+            </div>
+          </div>
+           
+        </div>
+        
+        <div class="row">
+          
+          <div class="col-lg-12">
+            <div class="card">
+              <div class="card-header">
+                <h4>任务信息</h4>
+              </div>
+              <div class="card-body">
+                <div class="table-responsive">
+                  <table class="table table-hover">
+                    <thead>
+                      <tr>
+                        <th>#</th>
+                        <th>任务名称</th>
+                        <th>开始日期</th>
+                        <th>状态</th>
+                        <th>操作</th>
+                      </tr>
+                    </thead>
+                    <tbody>
+                      <tr>
+                        <td>1</td>
+                        <td>设计新主题</td>
+                        <td>10/02/2019</td>
+                        <td><span class="label label-warning">待定</span></td>
+                        <td>
+                          <div class="progress progress-striped progress-sm">
+                            <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
+                          </div>
+                        </td>
+                      </tr>
+                      <tr>
+                        <td>1</td>
+                        <td>设计新主题</td>
+                        <td>10/02/2019</td>
+                        <td><span class="label label-warning">待定</span></td>
+                        <td>
+                          <div class="progress progress-striped progress-sm">
+                            <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
+                          </div>
+                        </td>
+                      </tr>
+					  <tr>
+					    <td>1</td>
+					    <td>设计新主题</td>
+					    <td>10/02/2019</td>
+					    <td><span class="label label-warning">待定</span></td>
+					    <td>
+					      <div class="progress progress-striped progress-sm">
+					        <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
+					      </div>
+					    </td>
+					  </tr>
+                    </tbody>
+                  </table>
                 </div>
-
+              </div>
             </div>
-
-        </main>
-        <!--End 页面主要内容-->
-    </div>
+          </div>
+          
+        </div>
+        
+      </div>
+      
+    </main>
+    <!--End 页面主要内容-->
+  </div>
 </div>
 
 <script type="text/javascript" src="js/jquery.min.js"></script>
@@ -223,6 +221,105 @@
 <script type="text/javascript" src="js/perfect-scrollbar.min.js"></script>
 <script type="text/javascript" src="js/main.min.js"></script>
 
+<script type="text/javascript" src="${pageContext.request.contextPath }/js/highcharts.js"></script>
+<script type="text/javascript">
+
+	/* 通过AJAX获取前端图表数据  异步 */
+	
+	$.getJSON("ChartServlet",function(d){
+		/* 生成表格 */
+		Highcharts.chart('container', {
+		    chart: {
+		        type: 'column'
+		    },
+		    title: {
+		        text: ''
+		    },
+		    subtitle: {
+		        text: ''
+		    },
+		    xAxis: {
+		        type: 'category'
+		    },
+		    yAxis: {
+		        title: {
+		            text: '总人数'
+		        }
+		    },
+		    legend: {
+		        enabled: false
+		    },
+		    plotOptions: {
+		        series: {
+		            borderWidth: 0,
+		            dataLabels: {
+		                enabled: true
+		            }
+		        }
+		    },
+		    tooltip: {
+		        enabled:false
+		    },
+		    series: [{
+		        data: d.list
+		    }]
+		});
+		
+		
+		
+		
+		
+		Highcharts.chart('container1', {
+			title: {
+					text: ''
+			},
+			subtitle: {
+					text: ''
+			},
+			yAxis: {
+					title: {
+							text: '资金(¥)'
+					}
+			},
+			legend: {
+					layout: 'vertical',
+					align: 'right',
+					verticalAlign: 'middle'
+			},
+			plotOptions: {
+					series: {
+							label: {
+									connectorAllowed: false
+							},
+							pointStart: 2010
+					}
+			},
+			series: d.list2,
+			responsive: {
+					rules: [{
+							condition: {
+									maxWidth: 500
+							},
+							chartOptions: {
+									legend: {
+											layout: 'horizontal',
+											align: 'center',
+											verticalAlign: 'bottom'
+									}
+							}
+					}]
+			}
+		});
+		
+		
+	});
+	
+
+
+
+
+
 
+</script>
 </body>
 </html>

+ 94 - 0
gn_oa_vip27/src/main/webapp/login.jsp

@@ -0,0 +1,94 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html lang="zh">
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
+  <title>登录页面 - 光年(Light Year Admin)后台管理系统模板</title>
+  <link rel="icon" href="favicon.ico" type="image/ico">
+  <meta name="keywords" content="OA,光年OA管理系统">
+  <meta name="description" content="光年OA管理系统">
+  <meta name="author" content="yinqi">
+  <link href="css/bootstrap.min.css" rel="stylesheet">
+  <link href="css/materialdesignicons.min.css" rel="stylesheet">
+  <link href="css/style.min.css" rel="stylesheet">
+  <style>
+    .lyear-wrapper {
+      position: relative;
+    }
+    .lyear-login {
+      display: flex !important;
+      min-height: 100vh;
+      align-items: center !important;
+      justify-content: center !important;
+    }
+    .login-center {
+      background: #fff;
+      min-width: 38.25rem;
+      padding: 2.14286em 3.57143em;
+      border-radius: 5px;
+      margin: 2.85714em 0;
+    }
+    .login-header {
+      margin-bottom: 1.5rem !important;
+    }
+    .login-center .has-feedback.feedback-left .form-control {
+      padding-left: 38px;
+      padding-right: 12px;
+    }
+    .login-center .has-feedback.feedback-left .form-control-feedback {
+      left: 0;
+      right: auto;
+      width: 38px;
+      height: 38px;
+      line-height: 38px;
+      z-index: 4;
+      color: #dcdcdc;
+    }
+    .login-center .has-feedback.feedback-left.row .form-control-feedback {
+      left: 15px;
+    }
+  </style>
+</head>
+
+<body>
+<div class="row lyear-wrapper">
+  <div class="lyear-login">
+    <div class="login-center">
+      <div class="login-header text-center">
+        <a href="index.html"> <img alt="light year admin" src="images/logo-sidebar.png"> </a>
+      </div>
+      <form action="LoginServlet" method="post">
+        <div class="form-group has-feedback feedback-left">
+          <input type="email" placeholder="请输入您的用户名" class="form-control" name="email" id="username" />
+          <span class="mdi mdi-account form-control-feedback" aria-hidden="true"></span>
+        </div>
+        <div class="form-group has-feedback feedback-left">
+          <input type="password" placeholder="请输入密码" class="form-control" id="password" name="password" />
+          <span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
+        </div>
+        <div class="form-group has-feedback feedback-left row">
+          <div class="col-xs-7">
+            <input type="text" name="captcha" class="form-control" placeholder="验证码">
+            <span>${msg}</span>
+            <span class="mdi mdi-check-all form-control-feedback" aria-hidden="true"></span>
+          </div>
+          <div class="col-xs-5">
+            <img src="VerifyCodeServlet" class="pull-right" id="captcha" style="cursor: pointer;" onclick="this.src=this.src+'?d='+Math.random();" title="点击刷新" alt="captcha">
+          </div>
+        </div>
+        <div class="form-group">
+          <button class="btn btn-block btn-primary" type="submit">立即登录</button>
+        </div>
+      </form>
+      <hr>
+      <footer class="col-sm-12 text-center">
+        <p class="m-b-0">Copyright © 2019 <a href="http://lyear.itshubao.com">夜泊</a>. All right reserved</p>
+      </footer>
+    </div>
+  </div>
+</div>
+<script type="text/javascript" src="js/jquery.min.js"></script>
+<script type="text/javascript" src="js/bootstrap.min.js"></script>
+<script type="text/javascript">;</script>
+</body>
+</html>

+ 16 - 0
gn_oa_vip27/src/main/webapp/user.jsp

@@ -0,0 +1,16 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<ul class="topbar-right">
+  <li class="dropdown dropdown-profile">
+    <a href="javascript:void(0)" data-toggle="dropdown">
+      <img class="img-avatar img-avatar-48 m-r-10" src="images/users/avatar.jpg" alt="笔下光年" />
+      <span>${empName } <span class="caret"></span></span>
+    </a>
+    <ul class="dropdown-menu dropdown-menu-right">
+      <!-- <li> <a href="lyear_pages_profile.html"><i class="mdi mdi-account"></i> 个人信息</a> </li>
+      <li> <a href="lyear_pages_edit_pwd.html"><i class="mdi mdi-lock-outline"></i> 修改密码</a> </li> -->
+      <li class="divider"></li>
+      <li> <a href="${pageContext.request.contextPath }/LoginOutServlet"><i class="mdi mdi-logout-variant"></i> 退出登录</a> </li>
+    </ul>
+  </li>
+</ul>

BIN
gn_oa_vip27/target/classes/com/sf/dao/EmployeeDao.class


BIN
gn_oa_vip27/target/classes/com/sf/dao/impl/EmployeeDaoImpl.class


BIN
gn_oa_vip27/target/classes/com/sf/entity/Employee.class


BIN
gn_oa_vip27/target/classes/com/sf/service/EmployeeService.class


BIN
gn_oa_vip27/target/classes/com/sf/service/impl/EmployeeServiceImpl.class


BIN
gn_oa_vip27/target/classes/com/sf/servlet/LoginServlet.class


BIN
gn_oa_vip27/target/classes/com/sf/servlet/VerifyCodeServlet.class


BIN
gn_oa_vip27/target/gn_oa_vip27.war


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/dao/EmployeeDao.class


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/dao/impl/EmployeeDaoImpl.class


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/entity/Employee.class


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/service/EmployeeService.class


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/service/impl/EmployeeServiceImpl.class


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/servlet/LoginServlet.class


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/classes/com/sf/servlet/VerifyCodeServlet.class


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/lib/filters-2.0.235-1.jar


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/lib/javax.servlet-api-3.1.0.jar


BIN
gn_oa_vip27/target/gn_oa_vip27/WEB-INF/lib/kaptcha-2.3.2.jar


+ 302 - 205
gn_oa_vip27/target/gn_oa_vip27/index.jsp

@@ -1,221 +1,219 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html lang="zh">
 <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
-    <title>首页 - 光年(角色列表)OA管理系统</title>
-    <link rel="icon" href="favicon.ico" type="image/ico">
-    <meta name="keywords" content="ukoko.cn">
-    <meta name="description" content="解决中小企业...">
-    <meta name="author" content="夜泊">
-    <link href="css/bootstrap.min.css" rel="stylesheet">
-    <link href="css/materialdesignicons.min.css" rel="stylesheet">
-    <link href="css/style.min.css" rel="stylesheet">
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
+<title>首页 - 光年(首页)OA管理系统</title>
+<link rel="icon" href="favicon.ico" type="image/ico">
+<meta name="keywords" content="ukoko.cn">
+<meta name="description" content="解决中小企业...">
+<meta name="author" content="夜泊">
+<link href="css/bootstrap.min.css" rel="stylesheet">
+<link href="css/materialdesignicons.min.css" rel="stylesheet">
+<link href="css/style.min.css" rel="stylesheet">
 </head>
-
+  
 <body>
-<div class="lyear-layout-web">
-    <div class="lyear-layout-container">
-        <!--左侧导航-->
-        <aside class="lyear-layout-sidebar">
+<%
+  String empName = (String) session.getAttribute("empName");
+  if(empName == null || empName == ""){
+    response.sendRedirect("login.jsp");
+  }
+%>
 
-            <!-- logo -->
-            <div id="logo" class="sidebar-header">
-                <a href="index.html"><img src="images/logo-sidebar.png" title="LightYear" alt="LightYear" /></a>
+<div class="lyear-layout-web">
+  <div class="lyear-layout-container">
+    <!--左侧导航-->
+    <aside class="lyear-layout-sidebar">
+      
+      <!-- logo -->
+      <div id="logo" class="sidebar-header">
+        <a href="index.html"><img src="images/logo-sidebar.png" title="LightYear" alt="LightYear" /></a>
+      </div>
+      <div class="lyear-layout-sidebar-scroll"> 
+        
+        <!-- 左侧菜单栏位置 -->
+      	<jsp:include page="menu.jsp"></jsp:include>
+      
+      
+      </div>
+      
+    </aside>
+    <!--End 左侧导航-->
+    
+    <!--头部信息-->
+    <header class="lyear-layout-header">
+      
+      <nav class="navbar navbar-default">
+        <div class="topbar">
+          
+          <div class="topbar-left">
+            <div class="lyear-aside-toggler">
+              <span class="lyear-toggler-bar"></span>
+              <span class="lyear-toggler-bar"></span>
+              <span class="lyear-toggler-bar"></span>
             </div>
-            <div class="lyear-layout-sidebar-scroll">
-
-<%--                这是左侧导航栏位置--%>
-                <jsp:include page="menu.jsp"></jsp:include>
+            <span class="navbar-page-title"> 后台首页 </span>
+          </div>
+          
+          <jsp:include page="user.jsp"></jsp:include>
+          
+        </div>
+      </nav>
+      
+    </header>
+    <!--End 头部信息-->
+    
+    <!--页面主要内容-->
+    <main class="lyear-layout-content">
+      <div class="container-fluid">
+        <div class="row">
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-primary">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">总收入</p>
+                  <p class="h3 text-white m-b-0">102,125.00</p>
+                </div>
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-currency-cny fa-1-5x"></i></span> </div>
+              </div>
             </div>
-
-        </aside>
-        <!--End 左侧导航-->
-
-        <!--头部信息-->
-        <header class="lyear-layout-header">
-
-            <nav class="navbar navbar-default">
-                <div class="topbar">
-
-                    <div class="topbar-left">
-                        <div class="lyear-aside-toggler">
-                            <span class="lyear-toggler-bar"></span>
-                            <span class="lyear-toggler-bar"></span>
-                            <span class="lyear-toggler-bar"></span>
-                        </div>
-                        <span class="navbar-page-title"> 后台首页 </span>
-                    </div>
-
-                    <ul class="topbar-right">
-                        <li class="dropdown dropdown-profile">
-                            <a href="javascript:void(0)" data-toggle="dropdown">
-                                <img class="img-avatar img-avatar-48 m-r-10" src="images/users/avatar.jpg" alt="笔下光年" />
-                                <span>笔下光年 <span class="caret"></span></span>
-                            </a>
-                            <ul class="dropdown-menu dropdown-menu-right">
-                                <li> <a href="lyear_pages_profile.html"><i class="mdi mdi-account"></i> 个人信息</a> </li>
-                                <li> <a href="lyear_pages_edit_pwd.html"><i class="mdi mdi-lock-outline"></i> 修改密码</a> </li>
-                                <li class="divider"></li>
-                                <li> <a href="login.html"><i class="mdi mdi-logout-variant"></i> 退出登录</a> </li>
-                            </ul>
-                        </li>
-                    </ul>
+          </div>
+          
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-danger">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">当月收入</p>
+                  <p class="h3 text-white m-b-0">920,000</p>
                 </div>
-            </nav>
-
-        </header>
-        <!--End 头部信息-->
-
-        <!--页面主要内容-->
-        <main class="lyear-layout-content">
-
-            <div class="container-fluid">
-
-                <div class="row">
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-primary">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">总收入</p>
-                                    <p class="h3 text-white m-b-0">102,125.00</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-currency-cny fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-danger">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">当月收入</p>
-                                    <p class="h3 text-white m-b-0">920,000</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-account fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-success">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">总新增学员</p>
-                                    <p class="h3 text-white m-b-0">3400</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-arrow-down-bold fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-sm-6 col-lg-3">
-                        <div class="card bg-purple">
-                            <div class="card-body clearfix">
-                                <div class="pull-right">
-                                    <p class="h6 text-white m-t-0">当月新增学员</p>
-                                    <p class="h3 text-white m-b-0">153</p>
-                                </div>
-                                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-comment-outline fa-1-5x"></i></span> </div>
-                            </div>
-                        </div>
-                    </div>
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-account fa-1-5x"></i></span> </div>
+              </div>
+            </div>
+          </div>
+          
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-success">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">总新增学员</p>
+                  <p class="h3 text-white m-b-0">3400</p>
                 </div>
-
-                <div class="row">
-
-                    <div class="col-lg-6">
-                        <div class="card">
-                            <div class="card-header">
-                                <h4>周新增人数</h4>
-                            </div>
-                            <div class="card-body">
-                                <canvas class="js-chartjs-bars"></canvas>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="col-lg-6">
-                        <div class="card">
-                            <div class="card-header">
-                                <h4>全年交易金额</h4>
-                            </div>
-                            <div class="card-body">
-                                <canvas class="js-chartjs-lines"></canvas>
-                            </div>
-                        </div>
-                    </div>
-
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-arrow-down-bold fa-1-5x"></i></span> </div>
+              </div>
+            </div>
+          </div>
+          
+          <div class="col-sm-6 col-lg-3">
+            <div class="card bg-purple">
+              <div class="card-body clearfix">
+                <div class="pull-right">
+                  <p class="h6 text-white m-t-0">当月新增学员</p>
+                  <p class="h3 text-white m-b-0">153</p>
                 </div>
-
-                <div class="row">
-
-                    <div class="col-lg-12">
-                        <div class="card">
-                            <div class="card-header">
-                                <h4>任务信息</h4>
-                            </div>
-                            <div class="card-body">
-                                <div class="table-responsive">
-                                    <table class="table table-hover">
-                                        <thead>
-                                        <tr>
-                                            <th>#</th>
-                                            <th>任务名称</th>
-                                            <th>开始日期</th>
-                                            <th>状态</th>
-                                            <th>操作</th>
-                                        </tr>
-                                        </thead>
-                                        <tbody>
-                                        <tr>
-                                            <td>1</td>
-                                            <td>设计新主题</td>
-                                            <td>10/02/2019</td>
-                                            <td><span class="label label-warning">待定</span></td>
-                                            <td>
-                                                <div class="progress progress-striped progress-sm">
-                                                    <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
-                                                </div>
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <td>1</td>
-                                            <td>设计新主题</td>
-                                            <td>10/02/2019</td>
-                                            <td><span class="label label-warning">待定</span></td>
-                                            <td>
-                                                <div class="progress progress-striped progress-sm">
-                                                    <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
-                                                </div>
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <td>1</td>
-                                            <td>设计新主题</td>
-                                            <td>10/02/2019</td>
-                                            <td><span class="label label-warning">待定</span></td>
-                                            <td>
-                                                <div class="progress progress-striped progress-sm">
-                                                    <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
-                                                </div>
-                                            </td>
-                                        </tr>
-                                        </tbody>
-                                    </table>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-
+                <div class="pull-left"> <span class="img-avatar img-avatar-48 bg-translucent"><i class="mdi mdi-comment-outline fa-1-5x"></i></span> </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        
+        <div class="row">
+          
+          <div class="col-lg-6"> 
+            <div class="card">
+              <div class="card-header">
+                <h4>月新增人数</h4>
+              </div>
+              <div class="card-body">
+                <!-- 柱状图位置 -->
+                <div id="container" style="min-width: 310px; height: 300px; margin: 0 auto"></div>
+              </div>
+            </div>
+          </div>
+          
+          <div class="col-lg-6"> 
+            <div class="card">
+              <div class="card-header">
+                <h4>全年交易金额</h4>
+              </div>
+              <div class="card-body">
+                <!-- 折线图位置 -->
+                <div id="container1" style="max-width:800px;height:300px"></div>
+              </div>
+            </div>
+          </div>
+           
+        </div>
+        
+        <div class="row">
+          
+          <div class="col-lg-12">
+            <div class="card">
+              <div class="card-header">
+                <h4>任务信息</h4>
+              </div>
+              <div class="card-body">
+                <div class="table-responsive">
+                  <table class="table table-hover">
+                    <thead>
+                      <tr>
+                        <th>#</th>
+                        <th>任务名称</th>
+                        <th>开始日期</th>
+                        <th>状态</th>
+                        <th>操作</th>
+                      </tr>
+                    </thead>
+                    <tbody>
+                      <tr>
+                        <td>1</td>
+                        <td>设计新主题</td>
+                        <td>10/02/2019</td>
+                        <td><span class="label label-warning">待定</span></td>
+                        <td>
+                          <div class="progress progress-striped progress-sm">
+                            <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
+                          </div>
+                        </td>
+                      </tr>
+                      <tr>
+                        <td>1</td>
+                        <td>设计新主题</td>
+                        <td>10/02/2019</td>
+                        <td><span class="label label-warning">待定</span></td>
+                        <td>
+                          <div class="progress progress-striped progress-sm">
+                            <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
+                          </div>
+                        </td>
+                      </tr>
+					  <tr>
+					    <td>1</td>
+					    <td>设计新主题</td>
+					    <td>10/02/2019</td>
+					    <td><span class="label label-warning">待定</span></td>
+					    <td>
+					      <div class="progress progress-striped progress-sm">
+					        <div class="progress-bar progress-bar-warning" style="width: 45%;"></div>
+					      </div>
+					    </td>
+					  </tr>
+                    </tbody>
+                  </table>
                 </div>
-
+              </div>
             </div>
-
-        </main>
-        <!--End 页面主要内容-->
-    </div>
+          </div>
+          
+        </div>
+        
+      </div>
+      
+    </main>
+    <!--End 页面主要内容-->
+  </div>
 </div>
 
 <script type="text/javascript" src="js/jquery.min.js"></script>
@@ -223,6 +221,105 @@
 <script type="text/javascript" src="js/perfect-scrollbar.min.js"></script>
 <script type="text/javascript" src="js/main.min.js"></script>
 
+<script type="text/javascript" src="${pageContext.request.contextPath }/js/highcharts.js"></script>
+<script type="text/javascript">
+
+	/* 通过AJAX获取前端图表数据  异步 */
+	
+	$.getJSON("ChartServlet",function(d){
+		/* 生成表格 */
+		Highcharts.chart('container', {
+		    chart: {
+		        type: 'column'
+		    },
+		    title: {
+		        text: ''
+		    },
+		    subtitle: {
+		        text: ''
+		    },
+		    xAxis: {
+		        type: 'category'
+		    },
+		    yAxis: {
+		        title: {
+		            text: '总人数'
+		        }
+		    },
+		    legend: {
+		        enabled: false
+		    },
+		    plotOptions: {
+		        series: {
+		            borderWidth: 0,
+		            dataLabels: {
+		                enabled: true
+		            }
+		        }
+		    },
+		    tooltip: {
+		        enabled:false
+		    },
+		    series: [{
+		        data: d.list
+		    }]
+		});
+		
+		
+		
+		
+		
+		Highcharts.chart('container1', {
+			title: {
+					text: ''
+			},
+			subtitle: {
+					text: ''
+			},
+			yAxis: {
+					title: {
+							text: '资金(¥)'
+					}
+			},
+			legend: {
+					layout: 'vertical',
+					align: 'right',
+					verticalAlign: 'middle'
+			},
+			plotOptions: {
+					series: {
+							label: {
+									connectorAllowed: false
+							},
+							pointStart: 2010
+					}
+			},
+			series: d.list2,
+			responsive: {
+					rules: [{
+							condition: {
+									maxWidth: 500
+							},
+							chartOptions: {
+									legend: {
+											layout: 'horizontal',
+											align: 'center',
+											verticalAlign: 'bottom'
+									}
+							}
+					}]
+			}
+		});
+		
+		
+	});
+	
+
+
+
+
+
 
+</script>
 </body>
 </html>

+ 94 - 0
gn_oa_vip27/target/gn_oa_vip27/login.jsp

@@ -0,0 +1,94 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html lang="zh">
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
+  <title>登录页面 - 光年(Light Year Admin)后台管理系统模板</title>
+  <link rel="icon" href="favicon.ico" type="image/ico">
+  <meta name="keywords" content="OA,光年OA管理系统">
+  <meta name="description" content="光年OA管理系统">
+  <meta name="author" content="yinqi">
+  <link href="css/bootstrap.min.css" rel="stylesheet">
+  <link href="css/materialdesignicons.min.css" rel="stylesheet">
+  <link href="css/style.min.css" rel="stylesheet">
+  <style>
+    .lyear-wrapper {
+      position: relative;
+    }
+    .lyear-login {
+      display: flex !important;
+      min-height: 100vh;
+      align-items: center !important;
+      justify-content: center !important;
+    }
+    .login-center {
+      background: #fff;
+      min-width: 38.25rem;
+      padding: 2.14286em 3.57143em;
+      border-radius: 5px;
+      margin: 2.85714em 0;
+    }
+    .login-header {
+      margin-bottom: 1.5rem !important;
+    }
+    .login-center .has-feedback.feedback-left .form-control {
+      padding-left: 38px;
+      padding-right: 12px;
+    }
+    .login-center .has-feedback.feedback-left .form-control-feedback {
+      left: 0;
+      right: auto;
+      width: 38px;
+      height: 38px;
+      line-height: 38px;
+      z-index: 4;
+      color: #dcdcdc;
+    }
+    .login-center .has-feedback.feedback-left.row .form-control-feedback {
+      left: 15px;
+    }
+  </style>
+</head>
+
+<body>
+<div class="row lyear-wrapper">
+  <div class="lyear-login">
+    <div class="login-center">
+      <div class="login-header text-center">
+        <a href="index.html"> <img alt="light year admin" src="images/logo-sidebar.png"> </a>
+      </div>
+      <form action="LoginServlet" method="post">
+        <div class="form-group has-feedback feedback-left">
+          <input type="email" placeholder="请输入您的用户名" class="form-control" name="email" id="username" />
+          <span class="mdi mdi-account form-control-feedback" aria-hidden="true"></span>
+        </div>
+        <div class="form-group has-feedback feedback-left">
+          <input type="password" placeholder="请输入密码" class="form-control" id="password" name="password" />
+          <span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
+        </div>
+        <div class="form-group has-feedback feedback-left row">
+          <div class="col-xs-7">
+            <input type="text" name="captcha" class="form-control" placeholder="验证码">
+            <span>${msg}</span>
+            <span class="mdi mdi-check-all form-control-feedback" aria-hidden="true"></span>
+          </div>
+          <div class="col-xs-5">
+            <img src="VerifyCodeServlet" class="pull-right" id="captcha" style="cursor: pointer;" onclick="this.src=this.src+'?d='+Math.random();" title="点击刷新" alt="captcha">
+          </div>
+        </div>
+        <div class="form-group">
+          <button class="btn btn-block btn-primary" type="submit">立即登录</button>
+        </div>
+      </form>
+      <hr>
+      <footer class="col-sm-12 text-center">
+        <p class="m-b-0">Copyright © 2019 <a href="http://lyear.itshubao.com">夜泊</a>. All right reserved</p>
+      </footer>
+    </div>
+  </div>
+</div>
+<script type="text/javascript" src="js/jquery.min.js"></script>
+<script type="text/javascript" src="js/bootstrap.min.js"></script>
+<script type="text/javascript">;</script>
+</body>
+</html>

+ 16 - 0
gn_oa_vip27/target/gn_oa_vip27/user.jsp

@@ -0,0 +1,16 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<ul class="topbar-right">
+  <li class="dropdown dropdown-profile">
+    <a href="javascript:void(0)" data-toggle="dropdown">
+      <img class="img-avatar img-avatar-48 m-r-10" src="images/users/avatar.jpg" alt="笔下光年" />
+      <span>${empName } <span class="caret"></span></span>
+    </a>
+    <ul class="dropdown-menu dropdown-menu-right">
+      <!-- <li> <a href="lyear_pages_profile.html"><i class="mdi mdi-account"></i> 个人信息</a> </li>
+      <li> <a href="lyear_pages_edit_pwd.html"><i class="mdi mdi-lock-outline"></i> 修改密码</a> </li> -->
+      <li class="divider"></li>
+      <li> <a href="${pageContext.request.contextPath }/LoginOutServlet"><i class="mdi mdi-logout-variant"></i> 退出登录</a> </li>
+    </ul>
+  </li>
+</ul>