Quellcode durchsuchen

第三次提交

ftebox vor 3 Jahren
Commit
412ce52bb9
100 geänderte Dateien mit 8920 neuen und 0 gelöschten Zeilen
  1. 39 0
      .gitignore
  2. 8 0
      .idea/.gitignore
  3. 12 0
      .idea/dataSources.xml
  4. 8 0
      .idea/encodings.xml
  5. 18 0
      .idea/inspectionProfiles/Project_Default.xml
  6. 6 0
      .idea/jsLibraryMappings.xml
  7. 25 0
      .idea/misc.xml
  8. 6 0
      .idea/sqldialects.xml
  9. 124 0
      .idea/uiDesigner.xml
  10. 6 0
      .idea/vcs.xml
  11. 10 0
      .idea/webContexts.xml
  12. 262 0
      pom.xml
  13. 41 0
      src/main/java/cn/ftebox/controller/BloggerController.java
  14. 39 0
      src/main/java/cn/ftebox/controller/SystemAdminController.java
  15. 105 0
      src/main/java/cn/ftebox/controller/admin/BlogAdminController.java
  16. 101 0
      src/main/java/cn/ftebox/controller/admin/BlogTypeAdminController.java
  17. 49 0
      src/main/java/cn/ftebox/dao/BlogDao.java
  18. 30 0
      src/main/java/cn/ftebox/dao/BlogTypeDao.java
  19. 12 0
      src/main/java/cn/ftebox/dao/BloggerDao.java
  20. 142 0
      src/main/java/cn/ftebox/entity/Blog.java
  21. 50 0
      src/main/java/cn/ftebox/entity/BlogType.java
  22. 74 0
      src/main/java/cn/ftebox/entity/Blogger.java
  23. 35 0
      src/main/java/cn/ftebox/entity/PageBean.java
  24. 45 0
      src/main/java/cn/ftebox/realm/MyRealm.java
  25. 32 0
      src/main/java/cn/ftebox/service/BlogService.java
  26. 29 0
      src/main/java/cn/ftebox/service/BlogTypeService.java
  27. 7 0
      src/main/java/cn/ftebox/service/BloggerService.java
  28. 58 0
      src/main/java/cn/ftebox/service/impl/BlogServiceImpl.java
  29. 52 0
      src/main/java/cn/ftebox/service/impl/BlogTypeServiceImpl.java
  30. 19 0
      src/main/java/cn/ftebox/service/impl/BloggerServiceImpl.java
  31. 37 0
      src/main/java/cn/ftebox/service/impl/InitComponent.java
  32. 9 0
      src/main/java/cn/ftebox/util/Const.java
  33. 16 0
      src/main/java/cn/ftebox/util/CryptographyUtil.java
  34. 36 0
      src/main/java/cn/ftebox/util/DateJsonValueProcessor.java
  35. 19 0
      src/main/java/cn/ftebox/util/ResponseUtil.java
  36. 20 0
      src/main/java/cn/ftebox/util/StringUtil.java
  37. 104 0
      src/main/resources/applicationContext.xml
  38. 110 0
      src/main/resources/cn/ftebox/mappers/BlogMapper.xml
  39. 66 0
      src/main/resources/cn/ftebox/mappers/BlogTypeMapper.xml
  40. 19 0
      src/main/resources/cn/ftebox/mappers/BloggerMapper.xml
  41. 15 0
      src/main/resources/log4j.properties
  42. 11 0
      src/main/resources/mybatis-config.xml
  43. 33 0
      src/main/resources/spring-mvc.xml
  44. BIN
      src/main/webapp/WEB-INF/lib/json-lib-2.4-jdk15.jar
  45. BIN
      src/main/webapp/WEB-INF/lib/json.jar
  46. BIN
      src/main/webapp/WEB-INF/lib/ueditor-1.1.2.jar
  47. 79 0
      src/main/webapp/WEB-INF/web.xml
  48. 1 0
      src/main/webapp/_menu.json
  49. 0 0
      src/main/webapp/_tree.json
  50. 5 0
      src/main/webapp/a.jsp
  51. 103 0
      src/main/webapp/about.html
  52. 83 0
      src/main/webapp/admin/blogManage.jsp
  53. 145 0
      src/main/webapp/admin/blogTypeManage.jsp
  54. 277 0
      src/main/webapp/admin/main.jsp
  55. 100 0
      src/main/webapp/admin/modifyBlog.jsp
  56. 35 0
      src/main/webapp/admin/temp/datagrid.json
  57. 55 0
      src/main/webapp/admin/temp/datagrid.php
  58. 267 0
      src/main/webapp/admin/temp/layout1.jsp
  59. 252 0
      src/main/webapp/admin/temp/layout2.jsp
  60. 22 0
      src/main/webapp/admin/temp/layout3.jsp
  61. 51 0
      src/main/webapp/admin/temp/menu.json
  62. 51 0
      src/main/webapp/admin/temp/menu.php
  63. 49 0
      src/main/webapp/admin/temp/tree.json
  64. 49 0
      src/main/webapp/admin/temp/tree.php
  65. 15 0
      src/main/webapp/admin/welcome.jsp
  66. 84 0
      src/main/webapp/admin/writeBlog.jsp
  67. 347 0
      src/main/webapp/article.html
  68. 250 0
      src/main/webapp/article_detail.html
  69. 191 0
      src/main/webapp/board.html
  70. BIN
      src/main/webapp/favicon.ico
  71. 254 0
      src/main/webapp/index.html
  72. 254 0
      src/main/webapp/index.jsp
  73. 224 0
      src/main/webapp/login.jsp
  74. 240 0
      src/main/webapp/mood.html
  75. 432 0
      src/main/webapp/static/css/common.css
  76. 3066 0
      src/main/webapp/static/css/icon.css
  77. BIN
      src/main/webapp/static/css/icons/DeleteRed.png
  78. BIN
      src/main/webapp/static/css/icons/accept.png
  79. BIN
      src/main/webapp/static/css/icons/add.png
  80. BIN
      src/main/webapp/static/css/icons/add1.png
  81. BIN
      src/main/webapp/static/css/icons/advancedsettings.png
  82. BIN
      src/main/webapp/static/css/icons/advancedsettings2.png
  83. BIN
      src/main/webapp/static/css/icons/anchor.png
  84. BIN
      src/main/webapp/static/css/icons/application.png
  85. BIN
      src/main/webapp/static/css/icons/application_add.png
  86. BIN
      src/main/webapp/static/css/icons/application_cascade.png
  87. BIN
      src/main/webapp/static/css/icons/application_delete.png
  88. BIN
      src/main/webapp/static/css/icons/application_double.png
  89. BIN
      src/main/webapp/static/css/icons/application_edit.png
  90. BIN
      src/main/webapp/static/css/icons/application_error.png
  91. BIN
      src/main/webapp/static/css/icons/application_form.png
  92. BIN
      src/main/webapp/static/css/icons/application_form_add.png
  93. BIN
      src/main/webapp/static/css/icons/application_form_delete.png
  94. BIN
      src/main/webapp/static/css/icons/application_form_edit.png
  95. BIN
      src/main/webapp/static/css/icons/application_form_magnify.png
  96. BIN
      src/main/webapp/static/css/icons/application_get.png
  97. BIN
      src/main/webapp/static/css/icons/application_go.png
  98. BIN
      src/main/webapp/static/css/icons/application_home.png
  99. BIN
      src/main/webapp/static/css/icons/application_key.png
  100. BIN
      src/main/webapp/static/css/icons/application_lightning.png

+ 39 - 0
.gitignore

@@ -0,0 +1,39 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
+/src/main/java/cn/ftebox/entity/Comment.java

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 12 - 0
.idea/dataSources.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
+    <data-source source="LOCAL" name="db_blog@localhost" uuid="22f6a5e9-fba4-4f75-adcb-26bbbae843b4">
+      <driver-ref>mysql.8</driver-ref>
+      <synchronize>true</synchronize>
+      <jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
+      <jdbc-url>jdbc:mysql://localhost:3306/db_blog</jdbc-url>
+      <working-dir>$ProjectFileDir$</working-dir>
+    </data-source>
+  </component>
+</project>

+ 8 - 0
.idea/encodings.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/webapp/index.jsp" charset="UTF-8" />
+  </component>
+</project>

+ 18 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,18 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="HtmlUnknownAttribute" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="myValues">
+        <value>
+          <list size="3">
+            <item index="0" class="java.lang.String" itemvalue="iconcls" />
+            <item index="1" class="java.lang.String" itemvalue="iframe" />
+            <item index="2" class="java.lang.String" itemvalue="url" />
+          </list>
+        </value>
+      </option>
+      <option name="myCustomValuesEnabled" value="true" />
+    </inspection_tool>
+    <inspection_tool class="SqlNoDataSourceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+  </profile>
+</component>

+ 6 - 0
.idea/jsLibraryMappings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptLibraryMappings">
+    <file url="file://$PROJECT_DIR$" libraries="{jquery}" />
+  </component>
+</project>

+ 25 - 0
.idea/misc.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="FrameworkDetectionExcludesConfiguration">
+    <file type="web" url="file://$PROJECT_DIR$" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+  <component name="ProjectType">
+    <option name="id" value="jpab" />
+  </component>
+  <component name="SwUserDefinedSpecifications">
+    <option name="specTypeByUrl">
+      <map />
+    </option>
+  </component>
+</project>

+ 6 - 0
.idea/sqldialects.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SqlDialectMappings">
+    <file url="file://$PROJECT_DIR$/src/main/resources/cn/ftebox/mappers/BloggerMapper.xml" dialect="GenericSQL" />
+  </component>
+</project>

+ 124 - 0
.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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 10 - 0
.idea/webContexts.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="WebContextManager">
+    <option name="state">
+      <map>
+        <entry key="file://$PROJECT_DIR$/src/main/webapp/admin/main.jsp" value="file://$PROJECT_DIR$/src/main/webapp/admin" />
+      </map>
+    </option>
+  </component>
+</project>

+ 262 - 0
pom.xml

@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.example</groupId>
+  <artifactId>my_blog</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>war</packaging>
+
+  <name>my_blog Maven Webapp</name>
+  <!-- FIXME change it to the project's website -->
+  <url>http://www.example.com</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.7</maven.compiler.source>
+    <maven.compiler.target>1.7</maven.compiler.target>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+
+    <!-- 添加servlet支持 -->
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+      <version>4.0.1</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- 添加jstl支持 -->
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>jstl</artifactId>
+      <version>1.2</version>
+    </dependency>
+
+    <!-- 添加Spring支持 -->
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-core</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-beans</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-tx</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context-support</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-web</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-webmvc</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-aop</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-aspects</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-jdbc</artifactId>
+      <version>5.3.19</version>
+    </dependency>
+    <dependency>
+      <groupId>org.mybatis</groupId>
+      <artifactId>mybatis-spring</artifactId>
+      <version>2.0.7</version>
+    </dependency>
+
+    <!-- 添加日志支持 -->
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.17</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-log4j12</artifactId>
+      <version>2.0.0-alpha7</version>
+    </dependency>
+
+    <!-- 添加mybatis支持 -->
+    <dependency>
+      <groupId>org.mybatis</groupId>
+      <artifactId>mybatis</artifactId>
+      <version>3.5.9</version>
+    </dependency>
+
+    <!-- 添加JDBC驱动支持 -->
+    <dependency>
+      <groupId>mysql</groupId>
+      <artifactId>mysql-connector-java</artifactId>
+      <version>8.0.28</version>
+    </dependency>
+
+    <!-- 添加shiro支持 -->
+    <dependency>
+      <groupId>org.apache.shiro</groupId>
+      <artifactId>shiro-core</artifactId>
+      <version>1.9.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.shiro</groupId>
+      <artifactId>shiro-web</artifactId>
+      <version>1.9.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.shiro</groupId>
+      <artifactId>shiro-spring</artifactId>
+      <version>1.9.0</version>
+    </dependency>
+
+    <!-- 添加ueditor编辑器支持 -->
+    <dependency>
+      <groupId>commons-fileupload</groupId>
+      <artifactId>commons-fileupload</artifactId>
+      <version>1.4</version>
+    </dependency>
+
+    <!-- 添加apache公共包 -->
+    <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+      <version>1.15</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.6</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-beanutils</groupId>
+      <artifactId>commons-beanutils</artifactId>
+      <version>1.9.4</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-collections</groupId>
+      <artifactId>commons-collections</artifactId>
+      <version>3.2.2</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>net.sf.ezmorph</groupId>
+      <artifactId>ezmorph</artifactId>
+      <version>1.0.6</version>
+    </dependency>
+    <!-- 添加lucene支持 -->
+    <dependency>
+      <groupId>org.apache.lucene</groupId>
+      <artifactId>lucene-core</artifactId>
+      <version>9.1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.lucene</groupId>
+      <artifactId>lucene-analyzers-common</artifactId>
+      <version>8.11.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.lucene</groupId>
+      <artifactId>lucene-analyzers-smartcn</artifactId>
+      <version>8.11.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.lucene</groupId>
+      <artifactId>lucene-queryparser</artifactId>
+      <version>9.1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.lucene</groupId>
+      <artifactId>lucene-highlighter</artifactId>
+      <version>9.1.0</version>
+    </dependency>
+
+    <!-- 添加连接池druid支持 -->
+    <dependency>
+      <groupId>com.alibaba</groupId>
+      <artifactId>druid</artifactId>
+      <version>1.2.9</version>
+    </dependency>
+
+    <!-- 添加jsoup支持 -->
+    <dependency>
+      <groupId>org.jsoup</groupId>
+      <artifactId>jsoup</artifactId>
+      <version>1.8.3</version>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <finalName>my_blog</finalName>
+    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
+      <plugins>
+        <plugin>
+          <artifactId>maven-clean-plugin</artifactId>
+          <version>3.1.0</version>
+        </plugin>
+        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
+        <plugin>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.0.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.8.0</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.22.1</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-war-plugin</artifactId>
+          <version>3.2.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-install-plugin</artifactId>
+          <version>2.5.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>2.8.2</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>

+ 41 - 0
src/main/java/cn/ftebox/controller/BloggerController.java

@@ -0,0 +1,41 @@
+package cn.ftebox.controller;
+
+import cn.ftebox.entity.Blogger;
+import cn.ftebox.util.CryptographyUtil;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.subject.Subject;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 博主登录相关
+ */
+@Controller
+@RequestMapping("/blogger")
+public class BloggerController {
+    @RequestMapping("/login.do")
+    public String login(Blogger blogger,HttpServletRequest request) {
+        /**用户名*/
+        String userName = blogger.getUserName();
+        /**密码*/
+        String password = blogger.getPassword();
+        String pw = CryptographyUtil.md5(password, "java1234");
+
+        /**Subject*/
+        Subject subject = SecurityUtils.getSubject();
+        UsernamePasswordToken token = new UsernamePasswordToken(userName, pw);
+        try {
+            // 传递token个shiro的realm
+            subject.login(token);
+            return "redirect:/admin/main.jsp";
+        }catch (Exception e){
+            e.printStackTrace();
+            request.setAttribute("blogger",blogger);
+            request.setAttribute("errorInfo","用户名密码错误!");
+        }
+        return "login";
+    }
+}

+ 39 - 0
src/main/java/cn/ftebox/controller/SystemAdminController.java

@@ -0,0 +1,39 @@
+package cn.ftebox.controller;
+
+import cn.ftebox.entity.BlogType;
+import cn.ftebox.service.BlogTypeService;
+import cn.ftebox.util.Const;
+import cn.ftebox.util.ResponseUtil;
+import org.json.JSONObject;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.support.RequestContextUtils;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
+
+@Controller
+@RequestMapping({"/admin/system"})
+public class SystemAdminController {
+    @Resource
+    private BlogTypeService blogTypeService;
+    /**
+     * 刷新系统缓存
+     */
+    @RequestMapping({"refreshSystem.do"})
+    public String refreshSystem(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        ServletContext application = Objects.requireNonNull(RequestContextUtils.findWebApplicationContext(request)).getServletContext();
+        List<BlogType> list = blogTypeService.countList();
+        assert application != null;
+        application.setAttribute(Const.BLOG_TYPE_COUNT_LIST,list);
+        JSONObject result = new JSONObject();
+        result.put("success",Boolean.TRUE);
+        ResponseUtil.write(response,result);
+        return null;
+    }
+}

+ 105 - 0
src/main/java/cn/ftebox/controller/admin/BlogAdminController.java

@@ -0,0 +1,105 @@
+package cn.ftebox.controller.admin;
+
+import cn.ftebox.entity.Blog;
+import cn.ftebox.entity.PageBean;
+import cn.ftebox.service.BlogService;
+import cn.ftebox.util.DateJsonValueProcessor;
+import cn.ftebox.util.ResponseUtil;
+import cn.ftebox.util.StringUtil;
+import net.sf.json.JSONArray;
+import net.sf.json.JsonConfig;
+import org.json.JSONObject;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.crypto.Data;
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 博客信息管理
+ */
+
+@Controller
+@RequestMapping({"/admin/blog"})
+public class BlogAdminController {
+    @Resource
+    private BlogService blogService;
+
+    /**
+     * 保存一条博客信息
+     */
+    @RequestMapping({"/save.do"})
+    public String save(Blog blog, HttpServletResponse response) throws IOException {
+        int resultTotal = 0;
+        if (blog.getId() == null){
+            resultTotal = blogService.add(blog);
+        }else {
+            resultTotal = blogService.update(blog);
+        }
+        JSONObject result = new JSONObject();
+        if (resultTotal > 0) {
+            result.put("success", Boolean.valueOf(true));
+        } else {
+            result.put("success", Boolean.valueOf(false));
+        }
+        ResponseUtil.write(response, result);
+        return null;
+    }
+
+    /**
+     * 查询博客信息列表
+     */
+    @RequestMapping({"/list.do"})
+    public String list(@RequestParam(value = "page", required = false) String page, @RequestParam(value = "rows", required = false) String rows,Blog blog,HttpServletResponse response) throws IOException {
+        PageBean pageBean = new PageBean(Integer.parseInt(page),Integer.parseInt(rows));
+        Map<String,Object> map = new HashMap<>();
+        map.put("start",pageBean.getStart());
+        map.put("size",pageBean.getPageSize());
+        map.put("title", StringUtil.formatLike(blog.getTitle()));
+        // 分页查询博客信息列表
+        List<Blog> list = blogService.list(map);
+        // 获取共有多少条博客信息
+        long total = blogService.getTotal(map);
+        JSONObject result = new JSONObject();
+        JsonConfig config = new JsonConfig();
+        config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd"));
+        JSONArray jsonArray = JSONArray.fromObject(list,config);
+        result.put("rows",jsonArray);
+        result.put("total",total);
+        ResponseUtil.write(response,result);
+        return null;
+    }
+
+    /**
+     * 根据主键查询一条博客信息
+     */
+    @RequestMapping({"/findById.do"})
+    public String findById(@RequestParam("id")String id,HttpServletResponse response) throws IOException {
+        Blog blog = blogService.findById(Integer.parseInt(id));
+        JSONObject result = new JSONObject(blog);
+        ResponseUtil.write(response,result);
+        return null;
+    }
+
+    /**
+     * 根据主键删除一条博客信息
+     */
+    @RequestMapping({"/delete.do"})
+    public String delete(@RequestParam("ids")String ids,HttpServletResponse response) throws IOException {
+        String[] idsStr = ids.split(",");
+        for (String i : idsStr) {
+            blogService.delete(Integer.parseInt(i));
+        }
+        JSONObject result = new JSONObject();
+        result.put("success",Boolean.valueOf(true));
+        ResponseUtil.write(response,result);
+        return null;
+    }
+}

+ 101 - 0
src/main/java/cn/ftebox/controller/admin/BlogTypeAdminController.java

@@ -0,0 +1,101 @@
+package cn.ftebox.controller.admin;
+
+import cn.ftebox.entity.BlogType;
+import cn.ftebox.entity.PageBean;
+import cn.ftebox.service.BlogService;
+import cn.ftebox.service.BlogTypeService;
+import cn.ftebox.util.ResponseUtil;
+import net.sf.json.JSONArray;
+import org.json.JSONObject;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 博客类型管理
+ */
+@Controller
+@RequestMapping({"/admin/blogType"})
+public class BlogTypeAdminController {
+    @Resource
+    private BlogTypeService blogTypeService;
+
+    @Resource
+    private BlogService blogService;
+
+    /**
+     * 博客类型列表
+     */
+    @RequestMapping({"/list.do"})
+    public String list(@RequestParam(value = "page", required = false) String page, @RequestParam(value = "rows", required = false) String rows, HttpServletResponse response) throws IOException {
+        PageBean pageBean = new PageBean(Integer.parseInt(page), Integer.parseInt(rows));
+        Map<String, Object> map = new HashMap<>();
+        map.put("start", pageBean.getStart());
+        map.put("size", pageBean.getPageSize());
+        // 查询博客类型列表
+        List<BlogType> blogTypeList = blogTypeService.list(map);
+        // 查询总共有多少条数据
+        Long total = blogTypeService.getTotal(map);
+        // 将数据写入response
+        JSONObject result = new JSONObject();
+        JSONArray jsonArray = JSONArray.fromObject(blogTypeList);
+        result.put("rows", jsonArray);
+        result.put("total", total);
+        ResponseUtil.write(response, result);
+        return null;
+    }
+
+    /**
+     * 保存博客类别信息
+     */
+    @RequestMapping({"/save.do"})
+    public String save(BlogType blogType, HttpServletResponse response) throws IOException {
+        int resultTotal = 0;
+        if (blogType.getId() == null) {
+            // 添加
+            resultTotal = blogTypeService.add(blogType);
+        } else {
+            // 更新
+            resultTotal = blogTypeService.update(blogType);
+        }
+
+        // 将数据写入response
+        JSONObject result = new JSONObject();
+        if (resultTotal > 0) {
+            result.put("success", Boolean.valueOf(true));
+        } else {
+            result.put("success", Boolean.valueOf(true));
+        }
+        ResponseUtil.write(response, result);
+        return null;
+    }
+
+    /**
+     * 删除博客类型
+     */
+    @RequestMapping({"/delete.do"})
+    public String delete(@RequestParam("ids") String ids, HttpServletResponse response) throws IOException {
+        String[] idsStr = ids.split(",");
+        JSONObject result = new JSONObject();
+        for (String id : idsStr) {
+            int sum = blogService.getBlogByTypeId(Integer.valueOf(id));
+            System.out.println(sum);
+            if (sum > 0) {
+                result.put("exists", "删除失败!此博客类型下文章不为空!");
+            } else {
+                blogTypeService.delete(Integer.valueOf(id));
+                result.put("success", Boolean.TRUE);
+            }
+        }
+        ResponseUtil.write(response, result);
+        return null;
+    }
+
+}

+ 49 - 0
src/main/java/cn/ftebox/dao/BlogDao.java

@@ -0,0 +1,49 @@
+package cn.ftebox.dao;
+
+import cn.ftebox.entity.Blog;
+
+import java.util.List;
+import java.util.Map;
+
+public interface BlogDao {
+
+    /**
+     * 无参数查询所有博客列表
+     */
+    public List<Blog> countList();
+
+    /**
+     * 根据id查询一条博客
+     */
+    public Blog findById(Integer id);
+
+    /**
+     * 不固定参数查询博客列表
+     */
+    public List<Blog> list(Map<String, Object> paramMap);
+
+    /**
+     * 不固定参数查询博客数
+     */
+    public Long getTotal(Map<String, Object> paramMap);
+
+    /**
+     * 添加一条博客
+     */
+    public Integer add(Blog blog);
+
+    /**
+     * 修改一条博客
+     */
+    public Integer update(Blog blog);
+
+    /**
+     * 删除一条博客
+     */
+    public Integer delete(Integer id);
+
+    /**
+     * 根据类型查询博客数量
+     */
+    public Integer getBlogByTypeId(Integer typeId);
+}

+ 30 - 0
src/main/java/cn/ftebox/dao/BlogTypeDao.java

@@ -0,0 +1,30 @@
+package cn.ftebox.dao;
+
+import cn.ftebox.entity.BlogType;
+
+import java.util.List;
+import java.util.Map;
+
+public interface BlogTypeDao {
+
+    /** 无参数查询所有博客类型列表 */
+    public List<BlogType> countList();
+
+    /** 根据id查询一条博客类型 */
+    public BlogType findById(Integer id);
+
+    /** 不固定参数查询博客类型列表 */
+    public List<BlogType> list(Map<String,Object> paramMap);
+
+    /** 不固定参数查询博客类型数 */
+    public Long getTotal(Map<String,Object> paramMap);
+
+    /** 添加一条博客类型 */
+    public Integer add(BlogType blogType);
+
+    /** 修改一条博客类型 */
+    public Integer update(BlogType blogType);
+
+    /** 删除一条博客类型 */
+    public Integer delete(Integer id);
+}

+ 12 - 0
src/main/java/cn/ftebox/dao/BloggerDao.java

@@ -0,0 +1,12 @@
+package cn.ftebox.dao;
+
+import cn.ftebox.entity.Blogger;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 博主相关
+ */
+
+public interface BloggerDao {
+    public Blogger getByUserName(@Param("userName")String userName);
+}

+ 142 - 0
src/main/java/cn/ftebox/entity/Blog.java

@@ -0,0 +1,142 @@
+package cn.ftebox.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class Blog implements Serializable {
+    /** 序列化id */
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Integer id;
+
+    /** 标题 */
+    private String title;
+
+    /** 摘要 */
+    private String summary;
+
+    /** 发表时间 */
+    private Date releaseDate;
+
+    /** 点击数 */
+    private Integer clickHit;
+
+    /** 评论数 */
+    private Integer replyHit;
+
+    /** 内容 */
+    private String content;
+
+    /** 所属博客类型 */
+    private BlogType blogType;
+
+    /** 关键字 */
+    private String keyWord;
+
+    public String getKeyWord() {
+        return keyWord;
+    }
+
+    public void setKeyWord(String keyWord) {
+        this.keyWord = keyWord;
+    }
+
+    /** 纯文本格式内容 */
+    private String contentNoTag;
+
+    /** 发表时间 */
+    private String releaseDataStr;
+
+    /** 博客数量 */
+    private Integer blogCount;
+
+    public Integer getBlogCount() {
+        return blogCount;
+    }
+
+    public void setBlogCount(Integer blogCount) {
+        this.blogCount = blogCount;
+    }
+
+    public String getContentNoTag() {
+        return contentNoTag;
+    }
+
+    public void setContentNoTag(String contentNoTag) {
+        this.contentNoTag = contentNoTag;
+    }
+
+    public String getReleaseDataStr() {
+        return releaseDataStr;
+    }
+
+    public void setReleaseDataStr(String releaseDataStr) {
+        this.releaseDataStr = releaseDataStr;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getSummary() {
+        return summary;
+    }
+
+    public void setSummary(String summary) {
+        this.summary = summary;
+    }
+
+    public Date getReleaseDate() {
+        return releaseDate;
+    }
+
+    public void setReleaseDate(Date releaseDate) {
+        this.releaseDate = releaseDate;
+    }
+
+    public Integer getClickHit() {
+        return clickHit;
+    }
+
+    public void setClickHit(Integer clickHit) {
+        this.clickHit = clickHit;
+    }
+
+    public Integer getReplyHit() {
+        return replyHit;
+    }
+
+    public void setReplyHit(Integer replyHit) {
+        this.replyHit = replyHit;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public BlogType getBlogType() {
+        return blogType;
+    }
+
+    public void setBlogType(BlogType blogType) {
+        this.blogType = blogType;
+    }
+
+}

+ 50 - 0
src/main/java/cn/ftebox/entity/BlogType.java

@@ -0,0 +1,50 @@
+package cn.ftebox.entity;
+
+import java.io.Serializable;
+
+public class BlogType implements Serializable {
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+    /**主键*/
+    private Integer id;
+    /**类型名称*/
+    private String typeName;
+    /**序号*/
+    private String orderNo;
+    /**本类型博客数量*/
+    private Integer blogCount;
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Integer getBlogCount() {
+        return blogCount;
+    }
+
+    public void setBlogCount(Integer blogCount) {
+        this.blogCount = blogCount;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+}

+ 74 - 0
src/main/java/cn/ftebox/entity/Blogger.java

@@ -0,0 +1,74 @@
+package cn.ftebox.entity;
+
+public class Blogger {
+    /**主键*/
+    private Integer id;
+    /**登录名*/
+    private String userName;
+    /**密码*/
+    private String password;
+    /**个人信息*/
+    private String profile;
+    /**昵称*/
+    private String nickName;
+    /**个性签名*/
+    private String sign;
+    /**头像地址*/
+    private String imageName;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getProfile() {
+        return profile;
+    }
+
+    public void setProfile(String profile) {
+        this.profile = profile;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+    public String getImageName() {
+        return imageName;
+    }
+
+    public void setImageName(String imageName) {
+        this.imageName = imageName;
+    }
+}

+ 35 - 0
src/main/java/cn/ftebox/entity/PageBean.java

@@ -0,0 +1,35 @@
+package cn.ftebox.entity;
+
+public class PageBean {
+    /**当前第几页,从1开始*/
+    private int page;
+    /** 页面大小 */
+    private int pageSize;
+    /** 从第几条开始查询 */
+    private int start;
+
+    public PageBean(int page, int pageSize) {
+        this.page = page;
+        this.pageSize = pageSize;
+    }
+
+    public int getPage() {
+        return page;
+    }
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public int getStart() {
+        return (this.page - 1) * this.pageSize;
+    }
+}

+ 45 - 0
src/main/java/cn/ftebox/realm/MyRealm.java

@@ -0,0 +1,45 @@
+package cn.ftebox.realm;
+
+import cn.ftebox.entity.Blogger;
+import cn.ftebox.service.BloggerService;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.AuthenticationException;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+
+import javax.annotation.Resource;
+
+public class MyRealm extends AuthorizingRealm {
+    @Resource
+    private BloggerService bloggerService;
+
+    /**
+     * 获得授权
+     */
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+        return null;
+    }
+
+    /**
+     * 登录验证
+     * token:令牌,基于用户名密码的令牌
+
+     */
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
+        // 从令牌中取出用户名
+        String userName = (String) token.getPrincipal();
+        //让Shiro去验证账号密码
+        Blogger blogger = bloggerService.getByUserName(userName);
+        if (blogger!=null){
+            SecurityUtils.getSubject().getSession().setAttribute("currentUser",blogger);
+            return new SimpleAuthenticationInfo(blogger.getUserName(),blogger.getPassword(),getName());
+        }
+        return null;
+    }
+}

+ 32 - 0
src/main/java/cn/ftebox/service/BlogService.java

@@ -0,0 +1,32 @@
+package cn.ftebox.service;
+
+import cn.ftebox.entity.Blog;
+
+import java.util.List;
+import java.util.Map;
+
+public interface BlogService {
+    /** 无参数查询所有博客列表 */
+    public List<Blog> countList();
+
+    /** 根据id查询一条博客 */
+    public Blog findById(Integer id);
+
+    /** 不固定参数查询博客列表 */
+    public List<Blog> list(Map<String,Object> paramMap);
+
+    /** 不固定参数查询博客数 */
+    public Long getTotal(Map<String,Object> paramMap);
+
+    /** 添加一条博客 */
+    public Integer add(Blog blog);
+
+    /** 修改一条博客 */
+    public Integer update(Blog blog);
+
+    /** 删除一条博客 */
+    public Integer delete(Integer id);
+
+    /** 根据类型查询博客数量 */
+    public  Integer getBlogByTypeId(Integer typeId);
+}

+ 29 - 0
src/main/java/cn/ftebox/service/BlogTypeService.java

@@ -0,0 +1,29 @@
+package cn.ftebox.service;
+
+import cn.ftebox.entity.BlogType;
+
+import java.util.List;
+import java.util.Map;
+
+public interface BlogTypeService {
+    /** 无参数查询所有博客类型列表 */
+    public List<BlogType> countList();
+
+    /** 根据id查询一条博客类型 */
+    public BlogType findById(Integer id);
+
+    /** 不固定参数查询博客类型列表 */
+    public List<BlogType> list(Map<String,Object> paramMap);
+
+    /** 不固定参数查询博客类型数 */
+    public Long getTotal(Map<String,Object> paramMap);
+
+    /** 添加一条博客类型 */
+    public Integer add(BlogType blogType);
+
+    /** 修改一条博客类型 */
+    public Integer update(BlogType blogType);
+
+    /** 删除一条博客类型 */
+    public Integer delete(Integer id);
+}

+ 7 - 0
src/main/java/cn/ftebox/service/BloggerService.java

@@ -0,0 +1,7 @@
+package cn.ftebox.service;
+
+import cn.ftebox.entity.Blogger;
+
+public interface BloggerService {
+    public Blogger getByUserName(String userName);
+}

+ 58 - 0
src/main/java/cn/ftebox/service/impl/BlogServiceImpl.java

@@ -0,0 +1,58 @@
+package cn.ftebox.service.impl;
+
+import cn.ftebox.dao.BlogDao;
+import cn.ftebox.entity.Blog;
+import cn.ftebox.service.BlogService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service("blogService")
+public class BlogServiceImpl implements BlogService {
+    @Resource
+    private BlogDao blogDao;
+
+    @Override
+    public List<Blog> countList() {
+        return blogDao.countList();
+    }
+
+    @Override
+    public Blog findById(Integer id) {
+        return blogDao.findById(id);
+    }
+
+    @Override
+    public List<Blog> list(Map<String, Object> paramMap) {
+        return blogDao.list(paramMap);
+    }
+
+    @Override
+    public Long getTotal(Map<String, Object> paramMap) {
+        return blogDao.getTotal(paramMap);
+    }
+
+    @Override
+    public Integer add(Blog blog) {
+        return blogDao.add(blog);
+    }
+
+    @Override
+    public Integer update(Blog blog) {
+        return blogDao.update(blog);
+    }
+
+    @Override
+    public Integer delete(Integer id) {
+        return blogDao.delete(id);
+    }
+
+    @Override
+    public Integer getBlogByTypeId(Integer typeId) {
+        return blogDao.getBlogByTypeId(typeId);
+    }
+
+
+}

+ 52 - 0
src/main/java/cn/ftebox/service/impl/BlogTypeServiceImpl.java

@@ -0,0 +1,52 @@
+package cn.ftebox.service.impl;
+
+import cn.ftebox.dao.BlogTypeDao;
+import cn.ftebox.entity.BlogType;
+import cn.ftebox.service.BlogTypeService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service("blogTypeService")
+public class BlogTypeServiceImpl implements BlogTypeService {
+
+    @Resource
+    private BlogTypeDao blogTypeDao;
+
+    @Override
+    public List<BlogType> countList() {
+        return blogTypeDao.countList();
+    }
+
+    @Override
+    public BlogType findById(Integer id) {
+        return blogTypeDao.findById(id);
+    }
+
+    @Override
+    public List<BlogType> list(Map<String, Object> paramMap) {
+        return blogTypeDao.list(paramMap);
+    }
+
+    @Override
+    public Long getTotal(Map<String, Object> paramMap) {
+        return blogTypeDao.getTotal(paramMap);
+    }
+
+    @Override
+    public Integer add(BlogType blogType) {
+        return blogTypeDao.add(blogType);
+    }
+
+    @Override
+    public Integer update(BlogType blogType) {
+        return blogTypeDao.update(blogType);
+    }
+
+    @Override
+    public Integer delete(Integer id) {
+        return blogTypeDao.delete(id);
+    }
+}

+ 19 - 0
src/main/java/cn/ftebox/service/impl/BloggerServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.ftebox.service.impl;
+
+import cn.ftebox.dao.BloggerDao;
+import cn.ftebox.entity.Blogger;
+import cn.ftebox.service.BloggerService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service("bloggerService")
+public class BloggerServiceImpl implements BloggerService {
+    @Resource
+    private BloggerDao bloggerDao;
+
+    @Override
+    public Blogger getByUserName(String userName) {
+        return bloggerDao.getByUserName(userName);
+    }
+}

+ 37 - 0
src/main/java/cn/ftebox/service/impl/InitComponent.java

@@ -0,0 +1,37 @@
+package cn.ftebox.service.impl;
+
+import cn.ftebox.entity.BlogType;
+import cn.ftebox.service.BlogTypeService;
+import cn.ftebox.util.Const;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import java.util.List;
+
+@Component
+public class InitComponent implements ServletContextListener,ApplicationContextAware{
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        InitComponent.applicationContext = applicationContext;
+    }
+
+    @Override
+    public void contextInitialized(ServletContextEvent sce) {
+        ServletContext application = sce.getServletContext();
+        BlogTypeService blogTypeService = (BlogTypeService) applicationContext.getBean("blogTypeService");
+        List<BlogType> blogTypeList = blogTypeService.countList();
+        System.out.println(blogTypeList);
+        application.setAttribute(Const.BLOG_TYPE_COUNT_LIST,blogTypeList);
+    }
+
+    @Override
+    public void contextDestroyed(ServletContextEvent sce) {
+    }
+}

+ 9 - 0
src/main/java/cn/ftebox/util/Const.java

@@ -0,0 +1,9 @@
+package cn.ftebox.util;
+
+
+/**
+ * 公共参数类
+ */
+public class Const {
+    public static final String BLOG_TYPE_COUNT_LIST = "blogTypeCountList";
+}

+ 16 - 0
src/main/java/cn/ftebox/util/CryptographyUtil.java

@@ -0,0 +1,16 @@
+package cn.ftebox.util;
+
+import org.apache.shiro.crypto.hash.Md5Hash;
+
+public class CryptographyUtil {
+    /**
+     * md5加密
+     */
+    public static String md5(String str,String salt){
+        return new Md5Hash(str,salt).toString();
+    }
+
+    public static void main(String[] args) {
+        System.out.println(md5("1123","java1234"));
+    }
+}

+ 36 - 0
src/main/java/cn/ftebox/util/DateJsonValueProcessor.java

@@ -0,0 +1,36 @@
+package cn.ftebox.util;
+
+import net.sf.json.JsonConfig;
+import net.sf.json.processors.JsonValueProcessor;
+
+import javax.xml.crypto.Data;
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class DateJsonValueProcessor implements JsonValueProcessor {
+    private String format;
+
+    public DateJsonValueProcessor(String format) {
+        this.format = format;
+    }
+
+    @Override
+    public Object processArrayValue(Object o, JsonConfig jsonConfig) {
+        return null;
+    }
+
+    @Override
+    public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
+        if (value == null){
+            return "";
+        }
+        if (value instanceof Timestamp){
+            return new SimpleDateFormat(this.format).format((Timestamp)value);
+        }
+        if (value instanceof Date){
+            return new SimpleDateFormat(this.format).format((Date)value);
+        }
+        return value.toString();
+    }
+}

+ 19 - 0
src/main/java/cn/ftebox/util/ResponseUtil.java

@@ -0,0 +1,19 @@
+package cn.ftebox.util;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * 写入response的工具类
+ */
+
+public class ResponseUtil {
+    public static void write(HttpServletResponse response,Object o) throws IOException {
+        response.setContentType("text/html;charset=utf-8");
+        PrintWriter out = response.getWriter();
+        out.println(o.toString());
+        out.flush();
+        out.close();
+    }
+}

+ 20 - 0
src/main/java/cn/ftebox/util/StringUtil.java

@@ -0,0 +1,20 @@
+package cn.ftebox.util;
+
+public class StringUtil {
+    /**
+     * 在字符串前后加%
+     */
+    public static String formatLike(String str) {
+        if (isNotEmpty(str)){
+            return "%"+str+"%";
+        }
+        return null;
+    }
+
+    /**
+     * 判断字符串是否为空
+     */
+    private static boolean isNotEmpty(String str) {
+        return str != null && !"".equals(str.trim());
+    }
+}

+ 104 - 0
src/main/resources/applicationContext.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:aop="http://www.springframework.org/schema/aop"
+       xmlns:tx="http://www.springframework.org/schema/tx"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+        https://www.springframework.org/schema/beans/spring-beans.xsd
+        http://www.springframework.org/schema/context
+        http://www.springframework.org/schema/context/spring-context-4.3.xsd
+        http://www.springframework.org/schema/aop
+        http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
+        http://www.springframework.org/schema/tx
+        http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
+">
+    <!-- 配置数据源 -->
+    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
+        <property name="url" value="jdbc:mysql://localhost:3306/db_blog?useUnicode=true&amp;characterEncoding=UTF-8"/>
+        <property name="username" value="root"/>
+        <property name="password" value="root"/>
+    </bean>
+
+    <!-- 配置MyBatis的sqlSessionFactory -->
+    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
+        <property name="dataSource" ref="dataSource"/>
+        <!-- 自动扫描mapper.xml文件 -->
+        <property name="mapperLocations" value="classpath:cn/ftebox/mappers/*.xml"/>
+        <!-- MyBatis配置文件 -->
+        <property name="configLocation" value="classpath:mybatis-config.xml"/>
+    </bean>
+
+    <!-- DAO接口所在包名,Spring会自动扫描这个包下面的类 -->
+    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
+        <property name="basePackage" value="cn.ftebox.dao"/>
+        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
+    </bean>
+    
+    <!-- 事务管理 -->
+    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
+        <property name="dataSource" ref="dataSource"/>
+    </bean>
+
+    <!-- 自定义Realm -->
+    <bean id="myRealm" class="cn.ftebox.realm.MyRealm"/>
+
+    <!-- 安全管理器 -->
+    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
+        <property name="realm" ref="myRealm"/>
+    </bean>
+
+    <!-- shiro过滤器 -->
+    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
+        <!-- shiro的核心安全接口 -->
+        <property name="securityManager" ref="securityManager"/>
+        <!-- 验证失败跳转的页面 -->
+        <property name="loginUrl" value="/login.jsp"/>
+        <property name="filterChainDefinitions">
+            <value>
+                /login=anon
+                /admin/**=authc
+            </value>
+        </property>
+    </bean>
+
+    <!-- 保证实现了shiro内部lifecycle函数bean执行 -->
+    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
+
+    <!-- 开启shiro注解 -->
+    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
+
+    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
+        <property name="securityManager" ref="securityManager"/>
+    </bean>
+
+    <!-- 配置事务通知属性 -->
+    <tx:advice id="txAdvice" transaction-manager="transactionManager">
+        <!-- 定义事务的传播属性 -->
+        <tx:attributes>
+            <tx:method name="insert*" propagation="REQUIRED"/>
+            <tx:method name="update*" propagation="REQUIRED"/>
+            <tx:method name="edit*" propagation="REQUIRED"/>
+            <tx:method name="save*" propagation="REQUIRED"/>
+            <tx:method name="add*" propagation="REQUIRED"/>
+            <tx:method name="new*" propagation="REQUIRED"/>
+            <tx:method name="remove*" propagation="REQUIRED"/>
+            <tx:method name="delete*" propagation="REQUIRED"/>
+            <tx:method name="change*" propagation="REQUIRED"/>
+            <tx:method name="check*" propagation="REQUIRED"/>
+            <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
+            <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
+            <tx:method name="load*" propagation="REQUIRED" read-only="true"/>
+            <tx:method name="*" propagation="REQUIRED" read-only="true"/>
+        </tx:attributes>
+    </tx:advice>
+
+    <!-- 配置事务切面 -->
+    <aop:config>
+        <aop:pointcut id="serviceOperation" expression="execution(* cn.ftebox.service.*.*(..))"/>
+        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/>
+    </aop:config>
+
+    <!-- 配置自动扫描 -->
+    <context:component-scan base-package="cn.ftebox.service"/>
+</beans>

+ 110 - 0
src/main/resources/cn/ftebox/mappers/BlogMapper.xml

@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.ftebox.dao.BlogDao">
+    <resultMap id="BlogResult" type="Blog">
+        <result property="id" column="id"/>
+        <result property="title" column="title"/>
+        <result property="summary" column="summary"/>
+        <result property="releaseDate" column="releaseDate"/>
+        <result property="clickHit" column="clickHit"/>
+        <result property="replyHit" column="replyHit"/>
+        <result property="content" column="content"/>
+        <result property="keyWord" column="keyWord"/>
+        <association property="blogType" column="typeId" select="cn.ftebox.dao.BlogTypeDao.findById"/>
+    </resultMap>
+
+    <select id="countList" resultMap="BlogResult">
+        select date_format(releaseDate, '%Y年%m月') as releaseDataStr, count(*) as blogCount
+        from t_blog
+        group by date_format(releaseDate, '%Y年%m月')
+        order by date_format(releaseDate, '%Y年%m月') desc
+    </select>
+
+    <select id="list" parameterType="Map" resultMap="BlogResult">
+        select * from t_blog
+        <where>
+            <if test="title!=null and title!=''">
+                and title like #{title}
+            </if>
+            <if test="typeId!=null and typeId!=''">
+                and typeId = #{typeId}
+            </if>
+            <if test="releaseDateStr!=null and releaseDateStr!=''">
+                and date_fromat(releaseDate,'%Y年%m月')=#{releaseDateStr}
+            </if>
+        </where>
+        order by releaseDate desc
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
+
+    <select id="getTotal" parameterType="Map" resultType="long">
+        select count(*)
+        from t_blog
+        <where>
+            <if test="title!=null and title!=''">
+                and title like #{title}
+            </if>
+            <if test="typeId!=null and typeId!=''">
+                and typeId = #{typeId}
+            </if>
+            <if test="releaseDateStr!=null and releaseDateStr!=''">
+                and date_fromat(releaseDate,'%Y年%m月')=#{releaseDateStr}
+            </if>
+        </where>
+    </select>
+
+    <select id="findById" parameterType="Integer" resultMap="BlogResult">
+        select *
+        from t_blog
+        where id = #{id}
+    </select>
+
+    <insert id="add" useGeneratedKeys="true" keyProperty="id" parameterType="Blog">
+        insert into t_blog
+        values (null, #{title}, #{summary}, now(), 0, 0, #{content}, #{blogType.id}, #{keyWord})
+    </insert>
+
+    <update id="update" parameterType="Blog">
+        update t_blog
+        <set>
+            <if test="title!=null and title!=''">
+                title=#{title},
+            </if>
+            <if test="summary!=null and summary!=''">
+                summary=#{summary},
+            </if>
+            <if test="content!=null and content!=''">
+                content=#{content},
+            </if>
+            <if test="blogType.id!=null">
+                typeId=#{blogType.id},
+            </if>
+            <if test="clickHit!=null">
+                clickHit=#{clickHit},
+            </if>
+            <if test="replyHit!=null">
+                replyHit=#{replyHit},
+            </if>
+            <if test="keyWord!=null and keyWord!=''">
+                keyWord=#{keyWord},
+            </if>
+        </set>
+        where id=#{id}
+    </update>
+
+    <delete id="delete" parameterType="Integer">
+        delete
+        from t_blog
+        where id = #{id}
+    </delete>
+
+    <select id="getBlogByTypeId" parameterType="Integer" resultType="Integer">
+        select count(*)
+        from t_blog
+        where typeId = #{typeId}
+    </select>
+</mapper>

+ 66 - 0
src/main/resources/cn/ftebox/mappers/BlogTypeMapper.xml

@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.ftebox.dao.BlogTypeDao">
+    <resultMap id="BlogTypeResult" type="BlogType">
+        <result property="id" column="id"/>
+        <result property="typeName" column="typeName"/>
+        <result property="orderNo" column="orderNo"/>
+        <result property="blogCount" column="blogCount"/>
+    </resultMap>
+    <select id="countList" parameterType="String" resultMap="BlogTypeResult">
+        select t2.id, t2.typeName, count(t1.id) as blogCount
+        from t_blog t1
+                 right join t_blogtype t2 on t1.typeId = t2.id
+        group by t2.typeName
+        order by t2.orderNo
+    </select>
+
+    <select id="findById" parameterType="Integer" resultMap="BlogTypeResult">
+        select *
+        from t_blogtype
+        where id = #{id}
+    </select>
+
+    <select id="list" parameterType="Map" resultMap="BlogTypeResult">
+        select * from t_blogtype
+        order by orderNo
+        <if test="typeName!=null and typeName!=''">
+            where typeName = #{typeName}
+        </if>
+        <if test="start!=null and size!=null">
+            limit #{start},${size}
+        </if>
+    </select>
+
+    <select id="getTotal" parameterType="Integer" resultType="long">
+        select count(*)
+        from t_blogType
+    </select>
+
+    <insert id="add" parameterType="BlogType">
+        insert into t_blogtype(typeName, orderNo)
+        values (#{typeName}, #{orderNo})
+    </insert>
+
+    <update id="update" parameterType="BlogType">
+        update t_blogtype
+        <set>
+            <if test="typeName!=null and typeName!=''">
+                typeName=#{typeName},
+            </if>
+            <if test="orderNo!=null and orderNo!=''">
+                orderNo=#{orderNo},
+            </if>
+        </set>
+        where id=#{id}
+    </update>
+
+    <delete id="delete" parameterType="Integer">
+        delete
+        from t_blogtype
+        where id = #{id}
+    </delete>
+
+</mapper>

+ 19 - 0
src/main/resources/cn/ftebox/mappers/BloggerMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.ftebox.dao.BloggerDao">
+    <resultMap id="BloggerResult" type="Blogger">
+        <result property="id" column="id"/>
+        <result property="userName" column="userName"/>
+        <result property="password" column="password"/>
+        <result property="nickName" column="nickName"/>
+        <result property="sign" column="sign"/>
+        <result property="profile" column="profile"/>
+        <result property="imageName" column="imageName"/>
+    </resultMap>
+    <select id="getByUserName" parameterType="String" resultMap="BloggerResult">
+        select * from  t_blogger where userName=#{userName}
+    </select>
+
+</mapper>

+ 15 - 0
src/main/resources/log4j.properties

@@ -0,0 +1,15 @@
+
+log4j.rootLogger=DEBUG,Console
+
+log4j.appender.Console=org.apache.log4j.ConsoleAppender
+
+log4j.appender.Console.layout=org.apache.log4j.PatternLayout
+
+log4j.appender.Console.layout.ConversionPattern=%d [%t] [%p] [%c] - %m%n
+
+log4j.logger.java.sql.ResulSet=INFO
+log4j.logger.org.apche=INFO
+log4j.logger.java.sql.Connection=DEBUG
+log4j.logger.java.sql.Statement=DEBUG
+log4j.logger.java.sql.PreparedStatement=DEBUG
+

+ 11 - 0
src/main/resources/mybatis-config.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuration
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
+
+<configuration>
+    <!-- 别名 -->
+    <typeAliases>
+        <package name="cn.ftebox.entity"/>
+    </typeAliases>
+</configuration>

+ 33 - 0
src/main/resources/spring-mvc.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:mvc="http://www.springframework.org/schema/mvc"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+        https://www.springframework.org/schema/beans/spring-beans.xsd
+        http://www.springframework.org/schema/context
+        http://www.springframework.org/schema/context/spring-context-4.3.xsd
+        http://www.springframework.org/schema/mvc
+        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
+">
+    <!-- 注解驱动,使得访问路径与方法的匹配 可以通过注解配置 -->
+    <mvc:annotation-driven/>
+
+    <!-- 处理静态资源 -->
+    <mvc:resources mapping="/static/**" location="/static"/>
+
+    <!-- 视图解析器 -->
+    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+        <property name="prefix" value="/"/>
+        <property name="suffix" value=".jsp"/>
+    </bean>
+
+    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
+        <property name="defaultEncoding" value="UTF-8"/>
+        <property name="maxInMemorySize" value="1000000"/>
+    </bean>
+
+    <!--    使用注解的包,包括子集-->
+    <context:component-scan base-package="cn.ftebox.controller"/>
+
+</beans>

BIN
src/main/webapp/WEB-INF/lib/json-lib-2.4-jdk15.jar


BIN
src/main/webapp/WEB-INF/lib/json.jar


BIN
src/main/webapp/WEB-INF/lib/ueditor-1.1.2.jar


+ 79 - 0
src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+         version="3.1"
+         metadata-complete="true">
+
+  <display-name>my_blog</display-name>
+  <!-- shiro过滤器定义 -->
+  <filter>
+    <filter-name>shiroFilter</filter-name>
+    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
+    <init-param>
+      <param-name>targetFilterLifecycle</param-name>
+      <param-value>true</param-value>
+    </init-param>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>shiroFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <!-- spring配置文件 -->
+  <context-param>
+    <param-name>contextConfigLocation</param-name>
+    <param-value>classpath:applicationContext.xml</param-value>
+  </context-param>
+
+  <!-- 编码过滤器 -->
+  <filter>
+    <filter-name>encodingFilter</filter-name>
+    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+    <async-supported>true</async-supported>
+    <init-param>
+      <param-name>encoding</param-name>
+      <param-value>UTF-8</param-value>
+    </init-param>
+  </filter>
+  <filter-mapping>
+    <filter-name>encodingFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  
+  <!-- spring监听器 -->
+  <listener>
+    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+  </listener>
+  <listener>
+    <listener-class>cn.ftebox.service.impl.InitComponent</listener-class>
+  </listener>
+
+  <!-- springmvc的支持 -->
+  <servlet>
+    <servlet-name>springMVC</servlet-name>
+    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+    <init-param>
+      <param-name>contextConfigLocation</param-name>
+      <param-value>classpath:spring-mvc.xml</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+    <async-supported>true</async-supported>
+  </servlet>
+  
+  <servlet-mapping>
+    <servlet-name>springMVC</servlet-name>
+    <url-pattern>*.do</url-pattern>
+  </servlet-mapping>
+  
+<!--  <servlet-mapping>-->
+<!--    <servlet-name>springMVC</servlet-name>-->
+<!--    <url-pattern>*.html</url-pattern>-->
+<!--  </servlet-mapping>-->
+
+
+
+
+</web-app>

+ 1 - 0
src/main/webapp/_menu.json

@@ -0,0 +1 @@
+{"code":"success","data":[{"dataName":"demo.html","dataSrc":"plugin/Hui-iconfont/1.0.8/demo.html"},{"dataName":"demo.html","dataSrc":"plugin/tagEditor/demo.html"},{"dataName":"about.html","dataSrc":"about.html"},{"dataName":"article.html","dataSrc":"article.html"},{"dataName":"article_detail.html","dataSrc":"article_detail.html"},{"dataName":"board.html","dataSrc":"board.html"},{"dataName":"index.html","dataSrc":"index.html"},{"dataName":"mood.html","dataSrc":"mood.html"}]}

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/_tree.json


+ 5 - 0
src/main/webapp/a.jsp

@@ -0,0 +1,5 @@
+<%@ page language="java" contentType="text/html; charset=utf-8"
+         pageEncoding="utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<jsp:include page="/index"></jsp:include>

+ 103 - 0
src/main/webapp/about.html

@@ -0,0 +1,103 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>关于我 —  一个站在java开发之路上的草根程序员个人博客网站</title>
+<meta charset="utf-8">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+<meta name="keywords" content="个人博客,王风宇个人博客,个人博客系统,老王博客,王风宇">
+<meta name="description" content="Lao王博客系统,一个站在java开发之路上的草根程序员个人博客网站。">
+<LINK rel="Bookmark" href="favicon.ico" >
+<LINK rel="Shortcut Icon" href="favicon.ico" />
+<!--[if lt IE 9]>
+<script type="text/javascript" src="/staticRes/js/html5shiv.js"></script>
+<script type="text/javascript" src="/staticRes/js/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="plugin/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="plugin/Hui-iconfont/1.0.8/iconfont.min.css" />
+<link rel="stylesheet" type="text/css" href="css/common.css" />
+<link rel="stylesheet" type="text/css" href="plugin/pifu/pifu.css" />
+<!--[if lt IE 9]>
+<link href="/staticRes/lib/h-ui/css/H-ui.ie.css" rel="stylesheet" type="text/css" />
+<![endif]-->
+<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } function showSide(){$('.navbar-nav').toggle();}</script>
+</head>
+<body>
+<header class="navbar-wrapper">
+    <div class="navbar navbar-fixed-top">
+        <div class="container cl">
+            <a class="navbar-logo hidden-xs" href="index">
+                <img class="logo" src="img/logo.png" alt="Lao王博客" />
+            </a>
+            <a class="logo navbar-logo-m visible-xs" href="index.html">Lao王博客</a>
+            <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:void(0);" onclick="showSide();">&#xe667;</a>
+            <nav class="nav navbar-nav nav-collapse w_menu" role="navigation">
+                <ul class="cl">
+                    <li class="active"> <a href="index" data-hover="首页">首页</a> </li>
+                    <li> <a href="about.html" data-hover="关于我">关于我</a> </li>
+                    <li> <a href="mood.html" data-hover="碎言碎语">碎言碎语</a> </li>
+                    <li><a href="article.html" data-hover="学无止尽">学无止尽</a></li>
+                    <li> <a href="board.html" data-hover="留言板">留言板</a> </li>
+                </ul>
+            </nav>
+            <nav class="navbar-nav navbar-userbar hidden-xs hidden-sm " style="top: 0;">
+                <ul class="cl">
+                    <li class="userInfo dropDown dropDown_hover">
+                            <!--<a href="javascript:;" ><img class="avatar radius" src="img/40.jpg" alt="丶似浅 "></a>
+                            <ul class="dropDown-menu menu radius box-shadow">
+                                <li><a href="/app/loginOut">退出</a></li>
+                            </ul>-->
+                            <a href="/app/qq" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登入">登入</a>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+    </div>
+</header>
+
+<!--导航条-->
+<nav class="breadcrumb">
+    <div class="container"> <i class="Hui-iconfont">&#xe67f;</i> <a href="index.html" class="c-primary">首页</a> <span class="c-gray en">&gt;</span>  <span class="c-gray">关于</span> </div>
+</nav>
+
+<section class="container">
+    <div class="container-fluid">
+        <div class="about">
+            <h2>Just about me</h2>
+            <ul>
+                <p>一枚正在努力进步的javaWeb程序员。专长领域为Web开发、服务器端开发,目前正在向全栈工程师进发。。。</p>
+            </ul>
+            <h2>About my blog</h2>
+            <ul>
+                <p>域  名:wfyvv.com 注册于2017年02月02日</p>
+                <p>服务器:腾讯云服务器 ,于2017年02月23日完成备案</p>
+                <p>备案号:皖ICP备17002922号</p>
+                <p>本站定位为IT技术博客站,博客内容主要涉及编程语言、前端开发、服务端开发及一些热门技术等方面,同时分享实用的开发资料。</p>
+            </ul>
+            <h2>Contact  me</h2>
+            <ul>
+                <p><i class="Hui-iconfont">&#xe67b;</i>qq : *********暂不公开 : (</p>
+                <p><i class="Hui-iconfont">&#xe6d1;</i>git:https://git.oschina.net/wilco</p>
+                <p><i class="Hui-iconfont">&#xe63b;</i>email : wfyv@qq.com</p>
+            </ul>
+        </div>
+
+    </div>
+</section>
+<footer class="footer mt-20">
+    <div class="container-fluid" id="foot">
+        <p>Copyright &copy; 2016-2017 www.wfyvv.com <br>
+            <a href="#" target="_blank">皖ICP备17002922号</a>  更多模板:<a href="http://www.cssmoban.com/" target="_blank">模板之家</a><br>
+        </p>
+    </div>
+</footer>
+<script type="text/javascript" src="plugin/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="plugin/layer/3.0/layer.js"></script>
+<script type="text/javascript" src="plugin/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="plugin/pifu/pifu.js"></script>
+<script type="text/javascript" src="js/common.js"></script>
+<script> $(function(){ $(window).on("scroll",backToTopFun); backToTopFun(); }); </script>
+</body>
+</html>

+ 83 - 0
src/main/webapp/admin/blogManage.jsp

@@ -0,0 +1,83 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/8
+  Time: 10:02
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+<script type="text/javascript">
+
+    function formatBlogType(val, row) {
+        return val.typeName;
+    }
+
+    /**
+     * 根据标题查询
+     */
+    function searchBlog() {
+        $("#dg").datagrid('load', {"title": $("#s_title").val()});
+    }
+
+    /**
+     * 修改一条博客信息
+     */
+    function openBlogModifyTab() {
+        var selectedRows = $("#dg").datagrid("getSelections");
+        if (selectedRows.length != 1) {
+            $.messager.alert("系统提示", "请选择一个要修改的博客!");
+            return;
+        }
+        var row = selectedRows[0];
+        window.parent.addTab("修改博客", "modifyBlog.jsp?id=" + row.id, "icon-writeBlog");
+    }
+
+    /**
+     * 删除一条博客信息
+     */
+    function deleteBlog() {
+        var selectedRows = $("#dg").datagrid("getSelections");
+        if (selectedRows.length == 0) {
+            $.messager.alert("系统提示", "请选择要删除的博客!");
+            return;
+        }
+        var strIds = [];
+        for (var i = 0; i < selectedRows.length; i++) {
+            strIds.push(selectedRows[i].id);
+        }
+        var ids = strIds.join(",");
+        $.messager.confirm("系统提示!", "你确定要删除<font color=red>" + selectedRows.length + "<font>条数据吗?", function (r) {
+            if (r) {
+                $.post("${pageContext.request.contextPath}/admin/blog/delete.do", {ids: ids}, function (result) {
+                    if (result.success) {
+                        $.messager.alert("系统提示", "数据已经成功删除!");
+                        $("#dg").datagrid("reload");
+                    } else {
+                        $.messager.alert("系统提示", "数据删除失败!");
+                    }
+                }, "json");
+            }
+        });
+    }
+</script>
+<table id="dg" title="博客管理" class="easyui-datagrid" fitcolumns="true" pagination="true" rownumber="true"
+       toolbar="#tb" url="${pageContext.request.contextPath}/admin/blog/list.do">
+    <thead>
+    <tr>
+        <th field="cb" checkbox="true" align="center"></th>
+        <th field="id" width="20" align="center">编号</th>
+        <th field="title" width="200" align="center">标题</th>
+        <th field="releaseDate" width="50" align="center">发布日期</th>
+        <th field="blogType" width="50" align="center" formatter="formatBlogType">博客类型</th>
+    </tr>
+    </thead>
+</table>
+<div id="tb">
+    <div>
+        <a href="javascript:openBlogModifyTab()" class="easyui-linkbutton" iconCls="icon-edit" plain="true">修改</a>
+        <a href="javascript:deleteBlog()" class="easyui-linkbutton" iconCls="icon-remove" plain="true">删除</a>
+    </div>
+    &nbsp;标题:&nbsp;<input type="text" id="s_title" size="20" onkeydown="if (event.keyCode===13) searchBlog()"/>
+    <a href="javascript:searchBlog()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜索</a>
+</div>

+ 145 - 0
src/main/webapp/admin/blogTypeManage.jsp

@@ -0,0 +1,145 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/6
+  Time: 20:29
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<script>
+    var url;
+
+    /**
+     * "添加"按钮的事件
+     */
+    function openBlogTypeAddDialog() {
+        $("#dlg").dialog("open").dialog("setTitle", "添加博客类别信息");
+        url = "${pageContext.request.contextPath}/admin/blogType/save.do";
+    }
+
+    /**
+     * "修改"按钮的事件
+     */
+    function openBlogTypeModifyDialog() {
+        var selectedRows = $("#dg").datagrid("getSelections");
+        if (selectedRows.length != 1) {
+            $.messager.alert("系统提示", "请选择一条要编辑的数据!")
+            return;
+        }
+        var row = selectedRows[0];
+        $("#dlg").dialog("open").dialog("setTitle", "修改博客类别信息");
+        $("#fm").form("load", row);
+        url = "${pageContext.request.contextPath}/admin/blogType/save.do?id=" + row.id;
+    }
+
+    /**
+     * 删除按钮事件
+     */
+    function deleteBlogType() {
+        var selectedRows = $("#dg").datagrid("getSelections");
+        if (selectedRows.length == 0) {
+            $.messager.alert("系统提示", "请至少选择一条要编辑的数据!");
+            return;
+        }
+        var strIds = [];
+        for (var i = 0; i < selectedRows.length; i++) {
+            strIds.push(selectedRows[i].id);
+        }
+        var ids = strIds.join(",");
+        $.messager.confirm("系统提示", "您确定要删除这<font color=red>" + selectedRows.length + "</font>条数据吗?", function (r) {
+            if (r) {
+                $.post("${pageContext.request.contextPath}/admin/blogType/delete.do", {ids: ids}, function (result) {
+                    if (result.success) {
+                        $.messager.alert("系统提示", "数据已经成功删除!");
+                        $("#dg").datagrid("reload");
+                    } else if (result.exists) {
+                        $.messager.alert("系统提示", result.exists);
+                    } else {
+                        $.messager.alert("系统提示", "数据删除失败!");
+                    }
+                }, "json");
+            }
+        });
+    }
+
+    /**
+     * "保存"按钮事件
+     */
+    function saveBlogType() {
+        $("#fm").form("submit", {
+            url: url,
+            onSubmit: function () {
+                return $(this).form("validate");
+            },
+            success: function (result) {
+                var result = eval('(' + result + ')');
+                if (result.success) {
+                    $.messager.alert("系统提示", "保存成功!");
+                    resetValue();
+                    $("#dlg").dialog("close");
+                    $("#dg").datagrid("reload");
+                } else {
+                    $.messager.alert("系统提示", "保存失败!");
+                    return;
+                }
+            }
+        });
+    }
+
+    /**
+     * "关闭"按钮事件
+     */
+    function closeBlogTypeDialog() {
+        $("#dlg").dialog("close");
+        resetValue();
+    }
+
+    /**
+     * 重置弹出对话框
+     */
+    function resetValue() {
+        $("#typeName").val("");
+        $("#orderNo").val("");
+    }
+</script>
+<table id="dg" title="博客类别管理" class="easyui-datagrid" fitcolumns="true" pagination="true" rownumbers="true"
+       url="${pageContext.request.contextPath}/admin/blogType/list.do" fit="true" toolbar="#tb">
+    <thead>
+    <tr>
+        <th field="cb" checkbox="true" align="center"></th>
+        <th field="id" width="30" align="center">编号</th>
+        <th field="typeName" width="100" align="center">博客类型名称</th>
+        <th field="orderNo" width="100" align="center">排序序号</th>
+    </tr>
+    </thead>
+</table>
+
+<div id="tb">
+    <a href="javascript:openBlogTypeAddDialog()" class="easyui-linkbutton" iconcls="icon-add" plain="true">添加</a>
+    <a href="javascript:openBlogTypeModifyDialog()" class="easyui-linkbutton" iconcls="icon-edit" plain="true">修改</a>
+    <a href="javascript:deleteBlogType()" class="easyui-linkbutton" iconcls="icon-remove" plain="true">删除</a>
+</div>
+
+<div id="dlg" class="easyui-dialog" style="width: 350px;height: 200px;padding: 10px 20px;" closed="true"
+     buttons="dlg-buttons">
+    <form id="fm" method="post">
+        <table cellpadding="8px" style="font-size: 14px">
+            <tr>
+                <td>博客类别名称:</td>
+                <td><input type="text" id="typeName" name="typeName" class="easyui-validatebox" required="true"/>
+                </td>
+            </tr>
+            <tr>
+                <td>博客类别排序:</td>
+                <td><input type="text" id="orderNo" name="orderNo" class="easyui-validatebox" required="true"/></td>
+            </tr>
+            <tr>注意:类别根据排序序号从小到大排序</tr>
+        </table>
+    </form>
+    <div id="dlg-buttons">
+        <a href="javascript:saveBlogType();" class="easyui-linkbutton" iconcls="icon-ok" style="margin-left: 14%">保存</a>
+        <a href="javascript:closeBlogTypeDialog();" class="easyui-linkbutton" iconcls="icon-cancel"
+           style="margin-left: 14%">取消</a>
+    </div>
+</div>
+

+ 277 - 0
src/main/webapp/admin/main.jsp

@@ -0,0 +1,277 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/5
+  Time: 22:28
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title>后台管理</title>
+    <link rel="stylesheet" type="text/css"
+          href="${pageContext.request.contextPath}/static/easyui/1.3.4/themes/default/easyui.css"/>
+    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/css/wu.css"/>
+    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/css/icon.css"/>
+    <script type="text/javascript" src="${pageContext.request.contextPath}/static/js/jquery.min.js"></script>
+    <script type="text/javascript"
+            src="${pageContext.request.contextPath}/static/easyui/1.3.4/jquery.easyui.min.js"></script>
+    <script type="text/javascript"
+            src="${pageContext.request.contextPath}/static/easyui/1.3.4/locale/easyui-lang-zh_CN.js">
+    </script>
+    <script type="text/javascript"
+            src="${pageContext.request.contextPath}/static/ueditor/ueditor.config.js">
+    </script>
+    <script type="text/javascript"
+            src="${pageContext.request.contextPath}/static/ueditor/ueditor.all.min.js"></script>
+    <script type="text/javascript"
+            src="${pageContext.request.contextPath}/static/ueditor/ueditor.parse.min.js"></script>
+    <script type="text/javascript">
+        /** 刷新系统缓存 */
+        function refreshSystem() {
+            $.post("${pageContext.request.contextPath}/admin/system/refreshSystem.do", {}, function (result) {
+                if (result.success) {
+                    $.messager.alert("系统提示", "已成功刷新缓存!");
+                } else {
+                    $.messager.alert("系统提示", "刷新失败!!");
+                }
+            },"json");
+        }
+    </script>
+</head>
+<body class="easyui-layout">
+
+<!-- begin of header -->
+<div class="wu-header" data-options="region:'north',border:false,split:true">
+    <div class="wu-header-left">
+        <h1>博客后台管理</h1>
+    </div>
+    <div class="wu-header-right">
+        <p><strong class="easyui-tooltip" title="2条未读消息">admin</strong>,欢迎您!</p>
+        <p><a href="#">网站首页</a>|<a href="#">安全退出</a></p>
+    </div>
+</div>
+<!-- end of header -->
+<!-- begin of sidebar -->
+<div class="wu-sidebar" data-options="region:'west',split:true,border:true,title:'导航菜单'">
+    <div class="easyui-accordion" data-options="border:false,fit:true">
+        <div title="博客管理" data-options="iconCls:'icon-application-cascade'" style="padding:5px;">
+            <ul class="easyui-tree wu-side-tree">
+                <li iconCls="icon-chart-organisation">
+                    <a id="op" href="javascript:void(0)" data-icon="icon-chart-organisation"
+                       data-link="writeBlog.jsp" iframe="0">写博客</a>
+                </li>
+                <li iconCls="icon-users">
+                    <a href="javascript:void(0)" data-icon="icon-users" data-link="blogManage.jsp"
+                       iframe="0">博客信息管理</a>
+                </li>
+            </ul>
+        </div>
+
+        <div title="博客类别管理" data-options="iconCls:'icon-application-form-edit'" style="padding:5px;">
+            <ul class="easyui-tree wu-side-tree">
+                <li iconCls="icon-chart-organisation">
+                    <a href="javascript:void(0)" data-icon="icon-chart-organisation"
+                       data-link="blogTypeManage.jsp" iframe="0">博客类别信息管理</a>
+                </li>
+            </ul>
+        </div>
+
+        <div title="评论管理" data-options="iconCls:'icon-creditcards'" style="padding:5px;">
+            <ul class="easyui-tree wu-side-tree">
+                <li iconCls="icon-chart-organisation">
+                    <a href="javascript:void(0)" data-icon="icon-chart-organisation"
+                       data-link="commentReview.jsp" iframe="0">评论审核</a>
+                </li>
+                <li iconCls="icon-users">
+                    <a href="javascript:void(0)" data-icon="icon-users"
+                       data-link="commentManage.jsp" iframe="0">评论信息管理</a>
+                </li>
+            </ul>
+        </div>
+
+        <div title="个人信息管理" data-options="iconCls:'icon-cart'" style="padding:5px;">
+            <ul class="easyui-tree wu-side-tree">
+                <li iconCls="icon-chart-organisation">
+                    <a href="javascript:void(0)" data-icon="icon-chart-organisation"
+                       data-link="modifyInfo.jsp" iframe="0">修改个人信息</a>
+                </li>
+            </ul>
+        </div>
+        <div title="系统管理" data-options="iconCls:'icon-bricks'" style="padding:5px;">
+            <a href="javascript:addTab('友情链接管理','123.jsp','icon-edit')" class="easyui-linkbutton"
+               data-options="plain:true"
+               iconCls="icon-edit">友情链接管理</a>
+            <a href="javascript:addTab('修改密码','123.jsp','icon-edit')" class="easyui-linkbutton"
+               data-options="plain:true"
+               iconCls="icon-edit">修改密码</a>
+            <a iconCls="icon-refresh" href="javascript:refreshSystem()" data-options="plain:true"
+               class="easyui-linkbutton">刷新系统缓存</a>
+            <a href="javascript:addTab('安全退出','123.jsp','icon-edit')" class="easyui-linkbutton"
+               data-options="plain:true"
+               iconCls="icon-edit">安全退出</a>
+        </div>
+        <%--        <div title="报表中心" data-options="iconCls:'icon-chart-curve'" style="padding:5px;">--%>
+        <%--            <ul class="easyui-tree wu-side-tree">--%>
+        <%--                <li iconCls="icon-chart-organisation">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-chart-organisation"--%>
+        <%--                       data-link="layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-users">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-users"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-user-group">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-user-group"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-book">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-book"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-cog">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-cog" data-link="temp/layout-3.html"--%>
+        <%--                       iframe="0">导航标题</a></li>--%>
+        <%--                <li iconCls="icon-application-osx-error">--%>
+        <%--                    <a href="javascript:void(0)"--%>
+        <%--                       data-icon="icon-application-osx-error"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--            </ul>--%>
+        <%--        </div>--%>
+        <%--        <div title="系统设置" data-options="iconCls:'icon-wrench'" style="padding:5px;">--%>
+        <%--            <ul class="easyui-tree wu-side-tree">--%>
+        <%--                <li iconCls="icon-chart-organisation">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-chart-organisation"--%>
+        <%--                       data-link="layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-users">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-users"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-user-group">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-user-group"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-book">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-book"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-cog">--%>
+        <%--                    <a href="javascript:void(0)" data-icon="icon-cog" data-link="temp/layout-3.html"--%>
+        <%--                       iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--                <li iconCls="icon-application-osx-error">--%>
+        <%--                    <a href="javascript:void(0)"--%>
+        <%--                       data-icon="icon-application-osx-error"--%>
+        <%--                       data-link="temp/layout-3.html" iframe="0">导航标题</a>--%>
+        <%--                </li>--%>
+        <%--            </ul>--%>
+        <%--        </div>--%>
+    </div>
+</div>
+<!-- end of sidebar -->
+<!-- begin of main -->
+<div class="wu-main" data-options="region:'center'">
+    <div id="wu-tabs" class="easyui-tabs" data-options="border:false,fit:true">
+        <div title="首页" data-options="href:'welcome.jsp',closable:false,iconCls:'icon-tip',cls:'pd3'"></div>
+    </div>
+</div>
+<!-- end of main -->
+<!-- begin of footer -->
+<div class="wu-footer" data-options="region:'south',border:true,split:true">
+    &copy; 2022 纳进财基于SSM实现的博客系统
+</div>
+<!-- end of footer -->
+<script type="text/javascript">
+    $(function () {
+        $('.wu-side-tree a').bind("click", function () {
+            var title = $(this).text();
+            var url = $(this).attr('data-link');
+            var iconCls = $(this).attr('data-icon');
+            var iframe = $(this).attr('iframe') == 1 ? true : false;
+            addTab(title, url, iconCls, iframe);
+        });
+    })
+
+    /**
+     * Name 载入树形菜单
+     */
+    $('#wu-side-tree').tree({
+        url: 'temp/menu.php',
+        cache: false,
+        onClick: function (node) {
+            var url = node.attributes['url'];
+            if (url == null || url == "") {
+                return false;
+            } else {
+                addTab(node.text, url, '', node.attributes['iframe']);
+            }
+        }
+    });
+
+    /**
+     * Name 选项卡初始化
+     */
+    $('#wu-tabs').tabs({
+        tools: [{
+            iconCls: 'icon-reload',
+            border: false,
+            handler: function () {
+                $('#wu-datagrid').datagrid('reload');
+            }
+        }]
+    });
+
+    /**
+     * Name 添加菜单选项
+     * Param title 名称
+     * Param href 链接
+     * Param iconCls 图标样式
+     * Param iframe 链接跳转方式(true为iframe,false为href)
+     */
+    function addTab(title, href, iconCls, iframe) {
+        var tabPanel = $('#wu-tabs');
+        if (!tabPanel.tabs('exists', title)) {
+            var content = '<iframe scrolling="auto" frameborder="0"  src="' + href + '" style="width:100%;height:100%;"></iframe>';
+            if (iframe) {
+                tabPanel.tabs('add', {
+                    title: title,
+                    content: content,
+                    iconCls: iconCls,
+                    fit: true,
+                    cls: 'pd3',
+                    closable: true
+                });
+            } else {
+                tabPanel.tabs('add', {
+                    title: title,
+                    href: href,
+                    iconCls: iconCls,
+                    fit: true,
+                    cls: 'pd3',
+                    closable: true
+                });
+            }
+        } else {
+            tabPanel.tabs('select', title);
+        }
+    }
+
+    /**
+     * Name 移除菜单选项
+     */
+    function removeTab() {
+        var tabPanel = $('#wu-tabs');
+        var tab = tabPanel.tabs('getSelected');
+        if (tab) {
+            var index = tabPanel.tabs('getTabIndex', tab);
+            tabPanel.tabs('close', index);
+        }
+    }
+</script>
+</body>
+</html>
+

+ 100 - 0
src/main/webapp/admin/modifyBlog.jsp

@@ -0,0 +1,100 @@
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/8
+  Time: 18:34
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<script type="text/javascript">
+    /**
+     * 发布博客
+     */
+    function submitData() {
+        var title = $("#title").val();
+        var blogTypeId = $("#blogTypeId").combobox("getValue");
+        var content = UE.getEditor('editor').getContent();
+        var keyWord = $("#keyWord").val();
+        if (title == null || title === '') {
+            $.messager.alert("系统提示", "请输入标题!");
+        } else if (blogTypeId == null || blogTypeId === '') {
+            $.messager.alert("系统提示", "请输入内容!")
+        } else if (content == null || content === '') {
+            $.messager.alert("系统提示", "请输入内容!");
+        } else {
+            $.post("${pageContext.request.contextPath}/admin/blog/save.do", {
+                'id': '${param.id}',
+                'title': title,
+                'blogType.id': blogTypeId,
+                'content': content,
+                'summary': UE.getEditor('editor').getContentTxt().substr(0, 155),
+                'keyWord': keyWord
+            }, function (result) {
+                if (result.success) {
+                    $.messager.alert("系统提示", "博客发布成功!");
+                } else {
+                    $.messager.alert("系统提示", "博客发布失败!");
+                }
+            }, "json");
+        }
+    }
+</script>
+<div id="p" class="easyui-panel" title="修改博客" style="padding: 10px">
+    <table cellspacing="20px">
+        <tr>
+            <td width="80px">博客标题</td>
+            <td><input type="text" id="title" name="title" style="width: 400px;"/></td>
+        </tr>
+        <tr>
+            <td>所属类别:</td>
+            <td>
+                <select class="easyui-combobox" id="blogTypeId" name="blogType.id" style="width: 154px;"
+                        editable="false" panelHeight="auto">
+                    <option value="">请选择博客类别...</option>
+                    <c:forEach var="blogType" items="${blogTypeCountList}">
+                        <option value="${blogType.id}">${blogType.typeName}</option>
+                    </c:forEach>
+                </select>
+            </td>
+        </tr>
+        <tr>
+            <td>博客内容:</td>
+            <td>
+                <script id="editor" type="text/plain" style="width: 100%;height: 500px;"></script>
+            </td>
+        </tr>
+        <tr>
+            <td>关键字:</td>
+            <td><input type="text" id="keyWord" name="keyWord" style="width: 400px;"/></td>
+        </tr>
+        <tr>
+            <td></td>
+            <td><a href="javascript:submitData()" class="easyui-lunkbutton"
+                   data-options="iconCls:'icon-submit'">提交修改</a></td>
+        </tr>
+    </table>
+</div>
+
+<script type="text/javascript">
+    // 实例化编辑器
+    var ue = UE.getEditor("editor");
+    ue.addListener("ready", function () {
+        // 通过ajax请求数据
+        UE.ajax.request("${pageContext.request.contextPath}/admin/blog/findById.do",
+            {
+                method: "post",
+                asyc: false,
+                data: {"id": "${param.id}"},
+                onsuccess: function (result) {
+                    result = eval("(" + result.responseText + ")");
+                    $("#title").val(result.title);
+                    $("#keyWord").val(result.keyWord);
+                    $("#blogTypeId").combobox("setValue", result.blogType.id);
+                    UE.getEditor("editor").setContent(result.content);
+                }
+            }
+        );
+    });
+</script>

+ 35 - 0
src/main/webapp/admin/temp/datagrid.json

@@ -0,0 +1,35 @@
+{
+	"total":30,
+	"rows":[
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
+	{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
+	{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
+	{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
+	]
+}

+ 55 - 0
src/main/webapp/admin/temp/datagrid.php

@@ -0,0 +1,55 @@
+{
+	"total":50,
+	"rows":[
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
+	{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
+	{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"},
+	{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
+	{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
+	{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
+	{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
+	{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
+	{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
+	{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
+	]
+}

+ 267 - 0
src/main/webapp/admin/temp/layout1.jsp

@@ -0,0 +1,267 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/6
+  Time: 17:12
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<div class="easyui-layout" data-options="fit:true">
+    <div data-options="region:'west',border:true,split:true," title="分类管理" style="width:150px; padding:5px;">
+        <ul id="wu-category-tree" class="easyui-tree"></ul>
+    </div>
+    <div data-options="region:'center',border:false">
+        <!-- Begin of toolbar -->
+        <div id="wu-toolbar">
+            <div class="wu-toolbar-button">
+                <a href="#" class="easyui-linkbutton" iconCls="icon-add" onclick="openAdd()" plain="true">添加</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-edit" onclick="openEdit()" plain="true">修改</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-remove" onclick="remove()" plain="true">删除</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-cancel" onclick="cancel()" plain="true">取消</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-reload" onclick="reload()" plain="true">刷新</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-print" onclick="openAdd()" plain="true">打印</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-help" onclick="openEdit()" plain="true">帮助</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-undo" onclick="remove()" plain="true">撤销</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-redo" onclick="cancel()" plain="true">重做</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-sum" onclick="reload()" plain="true">总计</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-back" onclick="reload()" plain="true">返回</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-tip" onclick="reload()" plain="true">提示</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-save" onclick="reload()" plain="true">保存</a>
+                <a href="#" class="easyui-linkbutton" iconCls="icon-cut" onclick="reload()" plain="true">剪切</a>
+            </div>
+            <div class="wu-toolbar-search">
+                <label>起始时间:</label><input class="easyui-datebox" style="width:100px">
+                <label>结束时间:</label><input class="easyui-datebox" style="width:100px">
+                <label>用户组:</label>
+                <select class="easyui-combobox" panelHeight="auto" style="width:100px">
+                    <option value="0">选择用户组</option>
+                    <option value="1">黄钻</option>
+                    <option value="2">红钻</option>
+                    <option value="3">蓝钻</option>
+                </select>
+                <label>关键词:</label><input class="wu-text" style="width:100px">
+                <a href="#" class="easyui-linkbutton" iconCls="icon-search">开始检索</a>
+            </div>
+        </div>
+        <!-- End of toolbar -->
+        <table id="wu-datagrid" toolbar="#wu-toolbar"></table>
+    </div>
+</div>
+<!-- Begin of easyui-dialog -->
+<div id="wu-dialog" class="easyui-dialog" data-options="closed:true,iconCls:'icon-save'" style="width:400px; padding:10px;">
+    <form id="wu-form" method="post">
+        <table>
+            <tr>
+                <td width="60" align="right">姓 名:</td>
+                <td><input type="text" name="name" class="wu-text" /></td>
+            </tr>
+            <tr>
+                <td align="right">邮 箱:</td>
+                <td><input type="text" name="email" class="wu-text" /></td>
+            </tr>
+            <tr>
+                <td align="right">主 题:</td>
+                <td><input type="text" name="subject" class="wu-text" /></td>
+            </tr>
+            <tr>
+                <td valign="top" align="right">内 容:</td>
+                <td><textarea name="content" rows="6" class="wu-textarea" style="width:260px"></textarea></td>
+            </tr>
+        </table>
+    </form>
+</div>
+<!-- End of easyui-dialog -->
+<script type="text/javascript">
+    /**
+     * Name 载入菜单树
+     */
+    $('#wu-category-tree').tree({
+        url:'temp/menu.php',
+        onClick:function(node){
+            alert(node.text);
+        }
+    });
+
+    /**
+     * Name 添加记录
+     */
+    function add(){
+        $('#wu-form').form('submit', {
+            url:'',
+            success:function(data){
+                if(data){
+                    $.messager.alert('信息提示','提交成功!','info');
+                    $('#wu-dialog').dialog('close');
+                }
+                else
+                {
+                    $.messager.alert('信息提示','提交失败!','info');
+                }
+            }
+        });
+    }
+
+    /**
+     * Name 修改记录
+     */
+    function edit(){
+        $('#wu-form').form('submit', {
+            url:'',
+            success:function(data){
+                if(data){
+                    $.messager.alert('信息提示','提交成功!','info');
+                    $('#wu-dialog').dialog('close');
+                }
+                else
+                {
+                    $.messager.alert('信息提示','提交失败!','info');
+                }
+            }
+        });
+    }
+
+    /**
+     * Name 删除记录
+     */
+    function remove(){
+        $.messager.confirm('信息提示','确定要删除该记录?', function(result){
+            if(result){
+                var items = $('#wu-datagrid').datagrid('getSelections');
+                var ids = [];
+                $(items).each(function(){
+                    ids.push(this.productid);
+                });
+                //alert(ids);return;
+                $.ajax({
+                    url:'',
+                    data:'',
+                    success:function(data){
+                        if(data){
+                            $.messager.alert('信息提示','删除成功!','info');
+                        }
+                        else
+                        {
+                            $.messager.alert('信息提示','删除失败!','info');
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    /**
+     * Name 打开添加窗口
+     */
+    function openAdd(){
+        $('#wu-form').form('clear');
+        $('#wu-dialog').dialog({
+            closed: false,
+            modal:true,
+            title: "添加信息",
+            buttons: [{
+                text: '确定',
+                iconCls: 'icon-ok',
+                handler: add
+            }, {
+                text: '取消',
+                iconCls: 'icon-cancel',
+                handler: function () {
+                    $('#wu-dialog').dialog('close');
+                }
+            }]
+        });
+    }
+
+    /**
+     * Name 打开修改窗口
+     */
+    function openEdit(){
+        $('#wu-form').form('clear');
+        var item = $('#wu-datagrid').datagrid('getSelected');
+        //alert(item.productid);return;
+        $.ajax({
+            url:'',
+            data:'',
+            success:function(data){
+                if(data){
+                    $('#wu-dialog').dialog('close');
+                }
+                else{
+                    //绑定值
+                    $('#wu-form').form('load', data)
+                }
+            }
+        });
+        $('#wu-dialog').dialog({
+            closed: false,
+            modal:true,
+            title: "修改信息",
+            buttons: [{
+                text: '确定',
+                iconCls: 'icon-ok',
+                handler: edit
+            }, {
+                text: '取消',
+                iconCls: 'icon-cancel',
+                handler: function () {
+                    $('#wu-dialog').dialog('close');
+                }
+            }]
+        });
+    }
+
+    /**
+     * Name 分页过滤器
+     */
+    function pagerFilter(data){
+        if (typeof data.length == 'number' && typeof data.splice == 'function'){// is array
+            data = {
+                total: data.length,
+                rows: data
+            }
+        }
+        var dg = $(this);
+        var opts = dg.datagrid('options');
+        var pager = dg.datagrid('getPager');
+        pager.pagination({
+            onSelectPage:function(pageNum, pageSize){
+                opts.pageNumber = pageNum;
+                opts.pageSize = pageSize;
+                pager.pagination('refresh',{pageNumber:pageNum,pageSize:pageSize});
+                dg.datagrid('loadData',data);
+            }
+        });
+        if (!data.originalRows){
+            data.originalRows = (data.rows);
+        }
+        var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
+        var end = start + parseInt(opts.pageSize);
+        data.rows = (data.originalRows.slice(start, end));
+        return data;
+    }
+
+    /**
+     * Name 载入数据
+     */
+    $('#wu-datagrid').datagrid({
+        url:'temp/datagrid.php',
+        loadFilter:pagerFilter,
+        rownumbers:true,
+        singleSelect:false,
+        pageSize:20,
+        pagination:true,
+        multiSort:true,
+        fitColumns:true,
+        fit:true,
+        columns:[[
+            { checkbox:true},
+            { field:'productid',title:'productid',width:100,sortable:true},
+            { field:'productname',title:'productname',width:180,sortable:true},
+            { field:'unitcost',title:'unitcost',width:100},
+            { field:'listprice',title:'listprice',width:100},
+            { field:'attr1',title:'attr1',width:100},
+            { field:'itemid',title:'itemid',width:100},
+            { field:'status',title:'status',width:100}
+        ]]
+    });
+</script>

+ 252 - 0
src/main/webapp/admin/temp/layout2.jsp

@@ -0,0 +1,252 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/6
+  Time: 17:19
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<div class="easyui-layout" data-options="fit:true">
+  <!-- Begin of toolbar -->
+  <div id="wu-toolbar-2">
+    <div class="wu-toolbar-button">
+      <a href="#" class="easyui-linkbutton" iconCls="icon-add" onclick="openAdd()" plain="true">添加</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-edit" onclick="openEdit()" plain="true">修改</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-remove" onclick="remove()" plain="true">删除</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-cancel" onclick="cancel()" plain="true">取消</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-reload" onclick="reload()" plain="true">刷新</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-print" onclick="openAdd()" plain="true">打印</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-help" onclick="openEdit()" plain="true">帮助</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-undo" onclick="remove()" plain="true">撤销</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-redo" onclick="cancel()" plain="true">重做</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-sum" onclick="reload()" plain="true">总计</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-back" onclick="reload()" plain="true">返回</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-tip" onclick="reload()" plain="true">提示</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-save" onclick="reload()" plain="true">保存</a>
+      <a href="#" class="easyui-linkbutton" iconCls="icon-cut" onclick="reload()" plain="true">剪切</a>
+    </div>
+    <div class="wu-toolbar-search">
+      <label>起始时间:</label><input class="easyui-datebox" style="width:100px">
+      <label>结束时间:</label><input class="easyui-datebox" style="width:100px">
+      <label>用户组:</label>
+      <select class="easyui-combobox" panelHeight="auto" style="width:100px">
+        <option value="0">选择用户组</option>
+        <option value="1">黄钻</option>
+        <option value="2">红钻</option>
+        <option value="3">蓝钻</option>
+      </select>
+      <label>关键词:</label><input class="wu-text" style="width:100px">
+      <a href="#" class="easyui-linkbutton" iconCls="icon-search">开始检索</a>
+    </div>
+  </div>
+  <!-- End of toolbar -->
+  <table id="wu-datagrid-2" class="easyui-datagrid" toolbar="#wu-toolbar-2"></table>
+</div>
+<!-- Begin of easyui-dialog -->
+<div id="wu-dialog-2" class="easyui-dialog" data-options="closed:true,iconCls:'icon-save'" style="width:400px; padding:10px;">
+  <form id="wu-form-2" method="post">
+    <table>
+      <tr>
+        <td width="60" align="right">姓 名:</td>
+        <td><input type="text" name="name" class="wu-text" /></td>
+      </tr>
+      <tr>
+        <td align="right">邮 箱:</td>
+        <td><input type="text" name="email" class="wu-text" /></td>
+      </tr>
+      <tr>
+        <td align="right">主 题:</td>
+        <td><input type="text" name="subject" class="wu-text" /></td>
+      </tr>
+      <tr>
+        <td valign="top" align="right">内 容:</td>
+        <td><textarea name="content" rows="6" class="wu-textarea" style="width:260px"></textarea></td>
+      </tr>
+    </table>
+  </form>
+</div>
+<!-- End of easyui-dialog -->
+<script type="text/javascript">
+  /**
+   * Name 添加记录
+   */
+  function add(){
+    $('#wu-form-2').form('submit', {
+      url:'',
+      success:function(data){
+        if(data){
+          $.messager.alert('信息提示','提交成功!','info');
+          $('#wu-dialog-2').dialog('close');
+        }
+        else
+        {
+          $.messager.alert('信息提示','提交失败!','info');
+        }
+      }
+    });
+  }
+
+  /**
+   * Name 修改记录
+   */
+  function edit(){
+    $('#wu-form-2').form('submit', {
+      url:'',
+      success:function(data){
+        if(data){
+          $.messager.alert('信息提示','提交成功!','info');
+          $('#wu-dialog-2').dialog('close');
+        }
+        else
+        {
+          $.messager.alert('信息提示','提交失败!','info');
+        }
+      }
+    });
+  }
+
+  /**
+   * Name 删除记录
+   */
+  function remove(){
+    $.messager.confirm('信息提示','确定要删除该记录?', function(result){
+      if(result){
+        var items = $('#wu-datagrid-2').datagrid('getSelections');
+        var ids = [];
+        $(items).each(function(){
+          ids.push(this.productid);
+        });
+        //alert(ids);return;
+        $.ajax({
+          url:'',
+          data:'',
+          success:function(data){
+            if(data){
+              $.messager.alert('信息提示','删除成功!','info');
+            }
+            else
+            {
+              $.messager.alert('信息提示','删除失败!','info');
+            }
+          }
+        });
+      }
+    });
+  }
+
+  /**
+   * Name 打开添加窗口
+   */
+  function openAdd(){
+    $('#wu-form-2').form('clear');
+    $('#wu-dialog-2').dialog({
+      closed: false,
+      modal:true,
+      title: "添加信息",
+      buttons: [{
+        text: '确定',
+        iconCls: 'icon-ok',
+        handler: add
+      }, {
+        text: '取消',
+        iconCls: 'icon-cancel',
+        handler: function () {
+          $('#wu-dialog-2').dialog('close');
+        }
+      }]
+    });
+  }
+
+  /**
+   * Name 打开修改窗口
+   */
+  function openEdit(){
+    $('#wu-form-2').form('clear');
+    var item = $('#wu-datagrid-2').datagrid('getSelected');
+    //alert(item.productid);return;
+    $.ajax({
+      url:'',
+      data:'',
+      success:function(data){
+        if(data){
+          $('#wu-dialog-2').dialog('close');
+        }
+        else{
+          //绑定值
+          $('#wu-form-2').form('load', data)
+        }
+      }
+    });
+    $('#wu-dialog-2').dialog({
+      closed: false,
+      modal:true,
+      title: "修改信息",
+      buttons: [{
+        text: '确定',
+        iconCls: 'icon-ok',
+        handler: edit
+      }, {
+        text: '取消',
+        iconCls: 'icon-cancel',
+        handler: function () {
+          $('#wu-dialog-2').dialog('close');
+        }
+      }]
+    });
+  }
+
+  /**
+   * Name 分页过滤器
+   */
+  function pagerFilter(data){
+    if (typeof data.length == 'number' && typeof data.splice == 'function'){// is array
+      data = {
+        total: data.length,
+        rows: data
+      }
+    }
+    var dg = $(this);
+    var opts = dg.datagrid('options');
+    var pager = dg.datagrid('getPager');
+    pager.pagination({
+      onSelectPage:function(pageNum, pageSize){
+        opts.pageNumber = pageNum;
+        opts.pageSize = pageSize;
+        pager.pagination('refresh',{pageNumber:pageNum,pageSize:pageSize});
+        dg.datagrid('loadData',data);
+      }
+    });
+    if (!data.originalRows){
+      data.originalRows = (data.rows);
+    }
+    var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
+    var end = start + parseInt(opts.pageSize);
+    data.rows = (data.originalRows.slice(start, end));
+    return data;
+  }
+
+  /**
+   * Name 载入数据
+   */
+  $('#wu-datagrid-2').datagrid({
+    url:'temp/datagrid.php',
+    loadFilter:pagerFilter,
+    rownumbers:true,
+    singleSelect:false,
+    pageSize:20,
+    pagination:true,
+    multiSort:true,
+    fitColumns:true,
+    fit:true,
+    columns:[[
+      { checkbox:true},
+      { field:'productid',title:'productid',width:100,sortable:true},
+      { field:'productname',title:'productname',width:180,sortable:true},
+      { field:'unitcost',title:'unitcost',width:100},
+      { field:'listprice',title:'listprice',width:100},
+      { field:'attr1',title:'attr1',width:100},
+      { field:'itemid',title:'itemid',width:100},
+      { field:'status',title:'status',width:100}
+    ]]
+  });
+</script>

+ 22 - 0
src/main/webapp/admin/temp/layout3.jsp

@@ -0,0 +1,22 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/6
+  Time: 17:21
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<div class="easyui-layout" data-options="fit:true">
+    <div class="easyui-panel pd5" data-options="fit:true,border:true">
+        <p style="font-size:14px">Here is the content loaded via AJAX.</p>
+        <ul>
+            <li>easyui is a collection of user-interface plugin based on jQuery.</li>
+            <li>easyui provides essential functionality for building modern, interactive, javascript applications.</li>
+            <li>using easyui you don't need to write many javascript code, writing some HTML markup.</li>
+            <li>complete framework for HTML5 web page.</li>
+            <li>easyui save your time and scales while developing your products.</li>
+            <li>easyui is very easy but powerful.</li>
+        </ul>
+    </div>
+</div>
+

+ 51 - 0
src/main/webapp/admin/temp/menu.json

@@ -0,0 +1,51 @@
+[{
+	"id":1,
+    "text":"首页",
+    "state":"",
+    "attributes":{
+		"url":"",
+		"icon":""
+	},
+    "children":[{
+    	"id":2,
+        "text":"系统管理",
+        "state":"",
+        "attributes":{
+            "url":"",
+            "icon":""
+        },
+        "children":[{
+        	"id":3,
+        	"text":"用户管理",
+            "state":"",
+            "attributes":{
+                "url":"datagrid.html",
+                "icon":""
+            }
+        },{
+        	"id":4,
+        	"text":"角色管理",
+            "state":"",
+            "attributes":{
+                "url":"_content.html",
+                "icon":""
+            }
+        },{
+        	"id":5,
+        	"text":"菜单管理",
+            "state":"",
+            "attributes":{
+                "url":"datagrid.html",
+                "icon":""
+            }
+        },{
+        	"id":6,
+        	"text":"权限管理",
+            "state":"",
+            "attributes":{
+                "url":"_content.html",
+                "icon":""
+            }
+        }]
+    }]
+}]

+ 51 - 0
src/main/webapp/admin/temp/menu.php

@@ -0,0 +1,51 @@
+[{
+	"id":1,
+    "text":"首页",
+    "state":"",
+    "attributes":{
+		"url":"",
+		"iframe":""
+	},
+    "children":[{
+    	"id":2,
+        "text":"系统管理",
+        "state":"",
+        "attributes":{
+            "url":"",
+			"iframe":""
+        },
+        "children":[{
+        	"id":3,
+        	"text":"用户管理",
+            "state":"",
+            "attributes":{
+                "url":"datagrid.html",
+				"iframe":""
+            }
+        },{
+        	"id":4,
+        	"text":"角色管理",
+            "state":"",
+            "attributes":{
+                "url":"_content.html",
+				"iframe":""
+            }
+        },{
+        	"id":5,
+        	"text":"菜单管理",
+            "state":"",
+            "attributes":{
+                "url":"datagrid.html",
+				"iframe":""
+            }
+        },{
+        	"id":6,
+        	"text":"权限管理",
+            "state":"",
+            "attributes":{
+                "url":"http://www.baidu.com",
+				"iframe":"true"
+            }
+        }]
+    }]
+}]

+ 49 - 0
src/main/webapp/admin/temp/tree.json

@@ -0,0 +1,49 @@
+[{
+	"id":1,
+	"text":"My Documents",
+	"children":[{
+		"id":11,
+		"text":"Photos",
+		"state":"closed",
+		"children":[{
+			"id":111,
+			"text":"Friend"
+		},{
+			"id":112,
+			"text":"Wife"
+		},{
+			"id":113,
+			"text":"Company"
+		}]
+	},{
+		"id":12,
+		"text":"Program Files",
+		"children":[{
+			"id":121,
+			"text":"Intel"
+		},{
+			"id":122,
+			"text":"Java",
+			"attributes":{
+				"p1":"Custom Attribute1",
+				"p2":"Custom Attribute2"
+			}
+		},{
+			"id":123,
+			"text":"Microsoft Office"
+		},{
+			"id":124,
+			"text":"Games",
+			"checked":true
+		}]
+	},{
+		"id":13,
+		"text":"index.html"
+	},{
+		"id":14,
+		"text":"about.html"
+	},{
+		"id":15,
+		"text":"welcome.html"
+	}]
+}]

+ 49 - 0
src/main/webapp/admin/temp/tree.php

@@ -0,0 +1,49 @@
+[{
+	"id":1,
+	"text":"My Documents",
+	"children":[{
+		"id":11,
+		"text":"Photos",
+		"state":"closed",
+		"children":[{
+			"id":111,
+			"text":"Friend"
+		},{
+			"id":112,
+			"text":"Wife"
+		},{
+			"id":113,
+			"text":"Company"
+		}]
+	},{
+		"id":12,
+		"text":"Program Files",
+		"children":[{
+			"id":121,
+			"text":"Intel"
+		},{
+			"id":122,
+			"text":"Java",
+			"attributes":{
+				"p1":"Custom Attribute1",
+				"p2":"Custom Attribute2"
+			}
+		},{
+			"id":123,
+			"text":"Microsoft Office"
+		},{
+			"id":124,
+			"text":"Games",
+			"checked":true
+		}]
+	},{
+		"id":13,
+		"text":"index.html"
+	},{
+		"id":14,
+		"text":"about.html"
+	},{
+		"id":15,
+		"text":"welcome.html"
+	}]
+}]

+ 15 - 0
src/main/webapp/admin/welcome.jsp

@@ -0,0 +1,15 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/6
+  Time: 20:20
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<div class="easyui-layout" data-options="fit:true">
+    <div class="easyui-panel pd5" data-options="fit:true,border:true">
+        <div style="width: 100%; height: 100%;">
+            <span style="font-size: 20px;">欢迎登录</span>
+        </div>
+    </div>
+</div>

+ 84 - 0
src/main/webapp/admin/writeBlog.jsp

@@ -0,0 +1,84 @@
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/7
+  Time: 16:36
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<script type="text/javascript">
+    /**
+     * 发布博客
+     */
+    function submitData() {
+        var title = $("#title").val();
+        var blogTypeId = $("#blogTypeId").combobox("getValue");
+        var content = UE.getEditor('editor').getContent();
+        var keyWord = $("#keyWord").val();
+
+        console.log(blogTypeId);
+        console.log(title);
+
+        if (title == null || title === '') {
+            $.messager.alert("系统提示", "请输入标题!");
+        }else if (content == null || content === '') {
+            $.messager.alert("系统提示", "请输入内容!");
+        } else {
+            $.post("${pageContext.request.contextPath}/admin/blog/save.do", {
+                'title': title,
+                'blogType.id': blogTypeId,
+                'content': content,
+                'summary': UE.getEditor('editor').getContentTxt().substr(0, 155),
+                'keyWord': keyWord
+            }, function (result) {
+                if (result.success) {
+                    $.messager.alert("系统提示", "博客发布成功!");
+                } else {
+                    $.messager.alert("系统提示", "博客发布失败!");
+                }
+            }, "json");
+        }
+    }
+</script>
+<div id="p" class="easyui-panel" title="编写博客" style="padding: 10px">
+    <table cellspacing="20px">
+        <tr>
+            <td width="80px">博客标题</td>
+            <td><input type="text" id="title" name="title" style="width: 400px;"/></td>
+        </tr>
+        <tr>
+            <td>所属类别:</td>
+            <td>
+                <select class="easyui-combobox" id="blogTypeId" name="blogType.id" style="width: 154px;"
+                        editable="false" panelHeight="auto">
+                    <option value="">请选择博客类别...</option>
+                    <c:forEach var="blogType" items="${blogTypeCountList}">
+                        <option value="${blogType.id}">${blogType.typeName}</option>
+                    </c:forEach>
+                </select>
+            </td>
+        </tr>
+        <tr>
+            <td>博客内容:</td>
+            <td>
+                <script id="editor" type="text/plain" style="width: 100%;height: 500px;"></script>
+            </td>
+        </tr>
+        <tr>
+            <td>关键字:</td>
+            <td><input type="text" id="keyWord" name="keyWord" style="width: 400px;"/></td>
+        </tr>
+        <tr>
+            <td></td>
+            <td><a href="javascript:submitData()" class="easyui-lunkbutton"
+                   data-options="iconCls:'icon-submit'">发布博客</a></td>
+        </tr>
+    </table>
+</div>
+
+<script type="text/javascript">
+    // 实例化编辑器
+    var ue = UE.getEditor("editor");
+</script>

+ 347 - 0
src/main/webapp/article.html

@@ -0,0 +1,347 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>学无止尽 — 一个站在java开发之路上的草根程序员个人博客网站</title>
+<meta charset="utf-8">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+<meta name="keywords" content="个人博客,王风宇个人博客,个人博客系统,老王博客,王风宇">
+<meta name="description" content="Lao王博客系统,一个站在java开发之路上的草根程序员个人博客网站。">
+<LINK rel="Bookmark" href="favicon.ico" >
+<LINK rel="Shortcut Icon" href="favicon.ico" />
+<!--[if lt IE 9]>
+<script type="text/javascript" src="/staticRes/js/html5shiv.js"></script>
+<script type="text/javascript" src="/staticRes/js/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="plugin/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="plugin/Hui-iconfont/1.0.8/iconfont.min.css" />
+<link rel="stylesheet" type="text/css" href="css/common.css" />
+<link rel="stylesheet" type="text/css" href="plugin/pifu/pifu.css" />
+<!--[if lt IE 9]>
+<link href="/staticRes/lib/h-ui/css/H-ui.ie.css" rel="stylesheet" type="text/css" />
+<![endif]-->
+<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } function showSide(){$('.navbar-nav').toggle();}</script>
+</head>
+<body>
+<header class="navbar-wrapper">
+    <div class="navbar navbar-fixed-top">
+        <div class="container cl">
+            <a class="navbar-logo hidden-xs" href="index.html">
+                <img class="logo" src="img/logo.png" alt="Lao王博客" />
+            </a>
+            <a class="logo navbar-logo-m visible-xs" href="index.html">Lao王博客</a>
+            <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:void(0);" onclick="showSide();">&#xe667;</a>
+            <nav class="nav navbar-nav nav-collapse w_menu" role="navigation">
+                <ul class="cl">
+                    <li class="active"> <a href="index" data-hover="首页">首页</a> </li>
+                    <li> <a href="about.html" data-hover="关于我">关于我</a> </li>
+                    <li> <a href="mood.html" data-hover="碎言碎语">碎言碎语</a> </li>
+                    <li><a href="article.html" data-hover="学无止尽">学无止尽</a></li>
+                    <li> <a href="board.html" data-hover="留言板">留言板</a> </li>
+                </ul>
+            </nav>
+            <nav class="navbar-nav navbar-userbar hidden-xs hidden-sm " style="top: 0;">
+                <ul class="cl">
+                    <li class="userInfo dropDown dropDown_hover">
+                            <!--<a href="javascript:;" ><img class="avatar radius" src="img/40.jpg" alt="丶似浅 "></a>
+                            <ul class="dropDown-menu menu radius box-shadow">
+                                <li><a href="/app/loginOut">退出</a></li>
+                            </ul>-->
+                            <a href="/app/qq" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登入">登入</a>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+    </div>
+</header>
+
+<!--导航条-->
+<nav class="breadcrumb">
+    <div class="container">
+        <i class="Hui-iconfont">&#xe67f;</i><a href="index.html" class="c-primary">首页</a>
+        <span class="c-gray en">&gt;</span> <a href="article.html" class="c-primary">学无止尽</a>
+        <span class="c-gray en">&gt;</span> <span class="c-gray"><i class="Hui-iconfont">&#xe64b;</i> nginx</span>
+    </div>
+</nav>
+
+<section class="container">
+  <!--left-->
+  <div class="col-sm-9 col-md-9 mt-20">
+  	
+  		
+  	<!--article list-->
+			<ul class="index_arc">
+				<li class="index_arc_item">
+					<a href="#" class="pic">
+						<img class="lazyload" data-original="temp/art.jpg" alt="应该选" />
+					</a>
+					<h4 class="title"><a href="article_detail.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2017-02-24</span>
+						<span><a href="/article-lists/10.html">程序人生</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc">不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				
+				<li class="index_arc_item no_pic">
+					<h4 class="title"><a href="/article/5.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2个月前</span>
+						<span><a href="/article-lists/10.html">建站</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276 °</p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span id="sourceId::105" class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc"> 不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				<li class="index_arc_item">
+	            <a href="/article/4" class="pic">
+	                <img class="lazyload" data-original="temp/art.jpg" alt="centos 6.5 nginx安装及配置" >
+	            </a>
+	        <h4 class="title"><a href="/article/4">centos 6.5 nginx安装及配置</a></h4>
+	        <div class="date_hits">
+	            <span>老王</span>
+	            <span>2017-3-15</span>
+	            <span>
+	                <a href="/article?t=1">程序人生</a>
+	            </span>
+	            <p class="hits"><i class="Hui-iconfont" title="点击量"></i> 13° </p>
+	            <p class="commonts"><i class="Hui-iconfont" title="评论"></i> <span class="cy_cmt_count">0</span></p>
+	        </div>
+	        <div class="desc">linux环境中nginx安装及配置简要概述。。。</div>
+	    </li>
+         
+         <li class="index_arc_item">
+					<a href="#" class="pic">
+						<img class="lazyload" data-original="temp/art.jpg" alt="应该选" />
+					</a>
+					<h4 class="title"><a href="article_detail.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2017-02-24</span>
+						<span><a href="/article-lists/10.html">程序人生</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc">不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				
+				<li class="index_arc_item no_pic">
+					<h4 class="title"><a href="/article/5.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2个月前</span>
+						<span><a href="/article-lists/10.html">建站</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276 °</p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span id="sourceId::105" class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc"> 不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				<li class="index_arc_item">
+	            <a href="/article/4" class="pic">
+	                <img class="lazyload" data-original="temp/art.jpg" alt="centos 6.5 nginx安装及配置" >
+	            </a>
+	        <h4 class="title"><a href="/article/4">centos 6.5 nginx安装及配置</a></h4>
+	        <div class="date_hits">
+	            <span>老王</span>
+	            <span>2017-3-15</span>
+	            <span>
+	                <a href="/article?t=1">程序人生</a>
+	            </span>
+	            <p class="hits"><i class="Hui-iconfont" title="点击量"></i> 13° </p>
+	            <p class="commonts"><i class="Hui-iconfont" title="评论"></i> <span class="cy_cmt_count">0</span></p>
+	        </div>
+	        <div class="desc">linux环境中nginx安装及配置简要概述。。。</div>
+	    </li>
+          
+          <li class="index_arc_item">
+					<a href="#" class="pic">
+						<img class="lazyload" data-original="temp/art.jpg" alt="应该选" />
+					</a>
+					<h4 class="title"><a href="article_detail.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2017-02-24</span>
+						<span><a href="/article-lists/10.html">程序人生</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc">不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				
+				<li class="index_arc_item no_pic">
+					<h4 class="title"><a href="/article/5.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2个月前</span>
+						<span><a href="/article-lists/10.html">建站</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276 °</p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span id="sourceId::105" class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc"> 不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				<li class="index_arc_item">
+	            <a href="/article/4" class="pic">
+	                <img class="lazyload" data-original="temp/art.jpg" alt="centos 6.5 nginx安装及配置" >
+	            </a>
+	        <h4 class="title"><a href="/article/4">centos 6.5 nginx安装及配置</a></h4>
+	        <div class="date_hits">
+	            <span>老王</span>
+	            <span>2017-3-15</span>
+	            <span>
+	                <a href="/article?t=1">程序人生</a>
+	            </span>
+	            <p class="hits"><i class="Hui-iconfont" title="点击量"></i> 13° </p>
+	            <p class="commonts"><i class="Hui-iconfont" title="评论"></i> <span class="cy_cmt_count">0</span></p>
+	        </div>
+	        <div class="desc">linux环境中nginx安装及配置简要概述。。。</div>
+	    </li>
+          
+          <li class="index_arc_item">
+					<a href="#" class="pic">
+						<img class="lazyload" data-original="temp/art.jpg" alt="应该选" />
+					</a>
+					<h4 class="title"><a href="article_detail.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2017-02-24</span>
+						<span><a href="/article-lists/10.html">程序人生</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc">不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				
+				<li class="index_arc_item no_pic">
+					<h4 class="title"><a href="/article/5.html">个人博客应该选择什么样的域名和域名后缀</a></h4>
+					<div class="date_hits">
+						<span>老王</span>
+						<span>2个月前</span>
+						<span><a href="/article-lists/10.html">建站</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276 °</p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span id="sourceId::105" class="cy_cmt_count">20</span></p>
+					</div>
+					<div class="desc"> 不论搭建什么样的网站,选择一个好的域名都是很有必要的,选择一个好的域名对网站的意义也是不言而喻的。每一个网站都有之对应的域名,就像人的名字一样。每个人都想自己有个好听的名字,网站也是一样。一个网站可以有多个域名,但是一个域名只能对应一个网站。&nbsp;一、域名要好记,方便输入&nbsp; &nbsp; &nbsp; &nbsp;域名本身的意义就是为了人们方便记忆才使用的,不然都用IP地址就好了。所以,网站域名一定要选择好记忆的。因为域名是</div>
+				</li>
+				
+				<li class="index_arc_item">
+	            <a href="/article/4" class="pic">
+	                <img class="lazyload" data-original="temp/art.jpg" alt="centos 6.5 nginx安装及配置" >
+	            </a>
+	        <h4 class="title"><a href="/article/4">centos 6.5 nginx安装及配置</a></h4>
+	        <div class="date_hits">
+	            <span>老王</span>
+	            <span>2017-3-15</span>
+	            <span>
+	                <a href="/article?t=1">程序人生</a>
+	            </span>
+	            <p class="hits"><i class="Hui-iconfont" title="点击量"></i> 13° </p>
+	            <p class="commonts"><i class="Hui-iconfont" title="评论"></i> <span class="cy_cmt_count">0</span></p>
+	        </div>
+	        <div class="desc">linux环境中nginx安装及配置简要概述。。。</div>
+	    </li>
+          
+				</ul>
+  		<div class="text-c mb-20" id="moreBlog">
+            <a class="btn  radius btn-block " href="javascript:" onclick="moreBlog('${blogType.id}','${tag.name}');">点击加载更多</a>
+            <a class="btn  radius btn-block hidden" href="javascript:">加载中……</a>
+        </div>		
+  </div>
+  
+  <!--right-->
+  <div class="col-sm-3 col-md-3 mt-20">
+  	
+  	<!--导航-->
+  	<div class="panel panel-primary mb-20">
+			<div class="panel-body">
+				<input class="btn btn-primary radius nav-btn" type="button" value="杂谈">
+				<input class="btn btn-primary-outline radius nav-btn" type="button" value="java">
+				<input class="btn btn-primary-outline radius nav-btn" type="button" value="框架">
+				<input class="btn btn-primary-outline radius nav-btn" type="button" value="服务域名">
+			</div>
+		</div>
+  	
+  	<!--热门推荐-->
+  	<div class="bg-fff box-shadow radius mb-20">
+			<div class="tab-category">
+				<a href=""><strong>热门推荐</strong></a>
+			</div>
+			<div class="tab-category-item">
+				<ul class="index_recd">
+					<li>
+						<a href="#">阻止a标签href默认跳转事件</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+					</li>
+					<li >
+						<a href="#">PHP面试题汇总</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+					</li>
+					<li >
+						<a href="#">阻止a标签href默认跳转事件</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+					</li>
+					<li >
+						<a href="#">阻止a标签href默认跳转事件</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+					</li>
+					<li >
+						<a href="#">PHP面试题汇总</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+					</li>
+				</ul>
+			</div>
+		</div>
+	
+<!--标签-->
+		<div class="bg-fff box-shadow radius mb-20">
+			<div class="tab-category">
+				<a href=""><strong>标签云</strong></a>
+			</div>
+			<div class="tab-category-item">
+				<div class="tags"> <a href="http://www.h-ui.net/">H-ui前端框架</a> <a href="http://www.h-ui.net/websafecolors.shtml">Web安全色</a> <a href="http://www.h-ui.net/Hui-4.4-Unslider.shtml">jQuery轮播插件</a> <a href="http://idc.likejianzhan.com/vhost/korea_hosting.php">韩国云虚拟主机</a> <a href="http://www.h-ui.net/bug.shtml">IEbug</a> <a href="http://www.h-ui.net/site.shtml">IT网址导航</a> <a href="http://www.h-ui.net/icon/index.shtml">网站常用小图标</a> <a href="http://www.h-ui.net/tools/jsformat.shtml">web工具箱</a> <a href="http://www.h-ui.net/bg/index.shtml">网站常用背景素材</a> <a href="http://www.h-ui.net/yuedu/chm.shtml">H-ui阅读</a> <a href="http://www.h-ui.net/easydialog-v2.0/index.html">弹出层插件</a> <a href="http://www.h-ui.net/SuperSlide2.1/demo.html">SuperSlide插件</a> <a href="http://www.h-ui.net/TouchSlide1.1/demo.html">TouchSlide</a></div>
+			</div>
+		</div>
+  </div>
+  
+</section>
+<footer class="footer mt-20">
+    <div class="container-fluid" id="foot">
+        <p>Copyright &copy; 2016-2017 www.wfyvv.com <br>
+            <a href="#" target="_blank">皖ICP备17002922号</a>  更多模板:<a href="http://www.cssmoban.com/" target="_blank">模板之家</a><br>
+        </p>
+    </div>
+</footer>
+<script type="text/javascript" src="plugin/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="plugin/layer/3.0/layer.js"></script>
+<script type="text/javascript" src="plugin/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="plugin/pifu/pifu.js"></script>
+<script type="text/javascript" src="js/common.js"></script>
+<script> $(function(){ $(window).on("scroll",backToTopFun); backToTopFun(); }); </script>
+<script>
+$(function(){
+//标签
+	$(".tags a").each(function(){
+		var x = 9;
+		var y = 0;
+		var rand = parseInt(Math.random() * (x - y + 1) + y);
+		$(this).addClass("tags"+rand)
+	});
+	
+	$("img.lazyload").lazyload({failurelimit : 3});
+});
+
+</script> 
+</body>
+</html>

+ 250 - 0
src/main/webapp/article_detail.html

@@ -0,0 +1,250 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>老王个人博客 — 一个站在java开发之路上的草根程序员个人博客网站</title>
+<meta charset="utf-8">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+<meta name="keywords" content="个人博客,王风宇个人博客,个人博客系统,老王博客,王风宇">
+<meta name="description" content="Lao王博客系统,一个站在java开发之路上的草根程序员个人博客网站。">
+<LINK rel="Bookmark" href="favicon.ico" >
+<LINK rel="Shortcut Icon" href="favicon.ico" />
+<!--[if lt IE 9]>
+<script type="text/javascript" src="/staticRes/js/html5shiv.js"></script>
+<script type="text/javascript" src="/staticRes/js/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="plugin/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="plugin/Hui-iconfont/1.0.8/iconfont.min.css" />
+<link rel="stylesheet" type="text/css" href="css/common.css" />
+<link rel="stylesheet" type="text/css" href="plugin/pifu/pifu.css" />
+<link rel="stylesheet" type="text/css" href="plugin/wangEditor/css/wangEditor.min.css">
+<!--[if lt IE 9]>
+<link href="/staticRes/lib/h-ui/css/H-ui.ie.css" rel="stylesheet" type="text/css" />
+<![endif]-->
+<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } function showSide(){$('.navbar-nav').toggle();}</script>
+</head>
+<body>
+<header class="navbar-wrapper">
+    <div class="navbar navbar-fixed-top">
+        <div class="container cl">
+            <a class="navbar-logo hidden-xs" href="index">
+                <img class="logo" src="img/logo.png" alt="Lao王博客" />
+            </a>
+            <a class="logo navbar-logo-m visible-xs" href="index.html">Lao王博客</a>
+            <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:void(0);" onclick="showSide();">&#xe667;</a>
+            <nav class="nav navbar-nav nav-collapse w_menu" role="navigation">
+                <ul class="cl">
+                    <li class="active"> <a href="index" data-hover="首页">首页</a> </li>
+                    <li> <a href="about.html" data-hover="关于我">关于我</a> </li>
+                    <li> <a href="mood.html" data-hover="碎言碎语">碎言碎语</a> </li>
+                    <li><a href="article.html" data-hover="学无止尽">学无止尽</a></li>
+                    <li> <a href="board.html" data-hover="留言板">留言板</a> </li>
+                </ul>
+            </nav>
+            <nav class="navbar-nav navbar-userbar hidden-xs hidden-sm " style="top: 0;">
+                <ul class="cl">
+                    <li class="userInfo dropDown dropDown_hover">
+                            <!--<a href="javascript:;" ><img class="avatar radius" src="img/40.jpg" alt="丶似浅 "></a>
+                            <ul class="dropDown-menu menu radius box-shadow">
+                                <li><a href="/app/loginOut">退出</a></li>
+                            </ul>-->
+                            <a href="/app/qq" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登入">登入</a>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+    </div>
+</header>
+
+<!--导航条-->
+<nav class="breadcrumb">
+  <div class="container"> <i class="Hui-iconfont">&#xe67f;</i> <a href="index.html" class="c-primary">首页</a> <span class="c-gray en">&gt;</span>  <span class="c-gray">文章</span> <span class="c-gray en">&gt;</span>  <span class="c-gray">个人博客应该选择什么样的域名和域名后缀</span></div>
+</nav>
+
+<section class="container pt-20">
+	
+	<div class="row w_main_row">
+				
+				
+				<div class="col-lg-9 col-md-9 w_main_left">
+					<div class="panel panel-default  mb-20">
+						<div class="panel-body pt-10 pb-10">
+							<h2 class="c_titile">我的个人博客之——阿里云空间选择</h2>
+							<p class="box_c"><span class="d_time">发布时间:2017-02-05</span><span>编辑:<a href="mailto:wfyv@qq.com">wilco</a></span><span>阅读(88646)</span></p>
+							<ul class="infos">
+								      <p>之前服务器放在电信机房, 联通用户访问速度很不稳定,经常出现访问速度慢的问题,换到阿里云解决了之前的问题。很多人都问我的博客选得什么空间,一年的费用得多少钱,今天我列个表出来,供大家参考。</p>
+								<p>&nbsp;<img src="temp/at1.png" alt="个人博客阿里云空间选择" width="700" height="886"></p>
+								<p>对于访问量不大,小型网站带宽可以选择1M的,每个月<span class="cny" style="margin: 0px 1px; padding: 0px; border: 0px; font-family: Arial; line-height: 20px; font-size: 20px; vertical-align: baseline; color: rgb(255, 102, 0); white-space: nowrap;">¥</span><span class="money" style="margin: 0px; padding: 0px; border: 0px; font-family: 微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体; line-height: 20px; font-size: 20px; vertical-align: baseline; color: rgb(255, 102, 0); white-space: nowrap;">56.80</span>一年也就568块钱,每天投入也就不到2块钱。</p>
+								<p><img src="temp/at2.png" alt="个人博客阿里云空间选择"></p>
+								<p><strong>1、为什么选Linux?</strong></p>
+								<p>程序用PHP,速度快,配置低(windows必选1G的内存Linux选512MB能同样达到要求)。Linux的系统安全性非常高。Linux服务器的维护与扩展到性价比和性能都高于Windows。</p>
+								<p>1) 最流行的服务器端操作系统,强大的安全性和稳定性</p>
+								<p>2) 免费且开源,轻松建立和编译源代码</p>
+								<p>3) 通过SSH方式远程访问您的云服务器</p>
+								<p>4) 一般用于高性能web等服务器应用,支持常见的PHP/Python等编程语言,支持MySQL等数据库(需自行安装)</p>
+								<p><strong>2、操作系统为什么选CentOS 安全加固版(推荐)?</strong></p>
+								<p>在原 CentOS镜像的基础上,系统进一步安全加固,安装了阿里云独有的入侵防御系统,系统中会出现aegis进程,该系统增加了实时后门,Webshell检测,更加智能的暴力破解防御和多种入侵行为监控,让服务器更加安全可靠。</p>
+								<p><a href="http://www.aliyun.com/product/ecs" target="_blank"><strong><span style="color: rgb(0, 0, 255);">前往阿里云官网购买&gt;&gt;</span></strong></a></p>
+								<p>&nbsp;</p><p align="center" class="pageLink"></p>
+								
+							</ul>
+															
+							<div class="keybq">
+						    	<p><span>关键字</span>:<a class="label label-default">个人博客</a><a class="label label-default">阿里云</a><a class="label label-default">空间</a></p>    
+						    </div>
+							
+							
+							
+							<div class="nextinfo">
+								<p class="last">上一篇:<a href="#">免费收录网站搜索引擎登录口大全</a></p>
+								<p class="next">下一篇:<a href="#">javascript显示年月日时间代码</a></p>
+						    </div>
+							
+						</div>
+					</div>
+					
+					<div class="panel panel-default  mb-20">
+						<div class="tab-category">
+                <a href=""><strong>评论区</strong></a>
+            </div>
+						<div class="panel-body">
+							<div class="panel-body" style="margin: 0 3%;">
+                    <div class="mb-20">
+                    	<ul class="commentList">
+                            <li class="item cl"> <a href="#"><i class="avatar size-L radius"><img alt="" src="http://qzapp.qlogo.cn/qzapp/101388738/1CF8425D24660DB8C3EBB76C03D95F35/100"></i></a>
+                                <div class="comment-main">
+                                    <header class="comment-header">
+                                        <div class="comment-meta"><a class="comment-author" href="#">老王</a>
+                                            <time title="2014年8月31日 下午3:20" datetime="2014-08-31T03:54:20" class="f-r">2014-8-31 15:20</time>
+                                        </div>
+                                    </header>
+                                    <div class="comment-body">
+                                        <p> 是的</p>
+                                    </div>
+                                </div>
+                            </li>
+                            <li class="item cl"> <a href="#"><i class="avatar size-L radius"><img alt="" src="http://qzapp.qlogo.cn/qzapp/101388738/696C8A17B3383B88804BA92ECBAA5D81/100"></i></a>
+                                <div class="comment-main">
+                                    <header class="comment-header">
+                                        <div class="comment-meta"><a class="comment-author" href="#">老王</a>
+                                            <time title="2014年8月31日 下午3:20" datetime="2014-08-31T03:54:20" class="f-r">2014-8-31 15:20</time>
+                                        </div>
+                                    </header>
+                                    <div class="comment-body">
+                                        <p> +1</p>
+                                    </div>
+                                </div>
+                            </li>
+
+                        </ul>
+    
+                    </div>
+                    <div class="line"></div>
+                    <!--用于评论-->
+                    <div class="mt-20" id="ct">
+                        <div id="err" class="Huialert Huialert-danger hidden radius">成功状态提示</div>
+                        <textarea id="textarea1" name="comment" style="height:200px;" placeholder="看完不留一发?"> </textarea>
+                        <div class="text-r mt-10">
+                            <button onclick="getPlainTxt()" class="btn btn-primary radius" > 发表评论</button>
+                        </div>
+                    </div>
+                    <!--用于回复-->
+                    <div class="comment hidden mt-20">
+                        <div id="err2" class="Huialert Huialert-danger hidden radius">成功状态提示</div>
+                            <textarea class="textarea" style="height:100px;" > </textarea>
+                            <button onclick="hf(this);" type="button" class="btn btn-primary radius mt-10">回复</button>
+                            <a class="cancelReply f-r mt-10">取消回复</a>
+                    </div>
+
+                </div>
+						</div>
+					</div>
+				</div>
+				<div class="col-lg-3 col-md-3">
+					<!--热门推荐-->
+  	<div class="bg-fff box-shadow radius mb-20">
+			<div class="tab-category">
+				<a href=""><strong>热门推荐</strong></a>
+			</div>
+			<div class="tab-category-item">
+				<ul class="index_recd">
+					<li>
+						<a href="#">阻止a标签href默认跳转事件</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe622;</i> 276 </p>
+					</li>
+					<li >
+						<a href="#">PHP面试题汇总</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe622;</i> 276 </p>
+					</li>
+					<li >
+						<a href="#">阻止a标签href默认跳转事件</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe622;</i> 276 </p>
+					</li>
+					<li >
+						<a href="#">阻止a标签href默认跳转事件</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe622;</i> 276 </p>
+					</li>
+					<li >
+						<a href="#">PHP面试题汇总</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe622;</i> 276 </p>
+					</li>
+				</ul>
+			</div>
+		</div>
+						
+					<!--图片-->
+		<div class="bg-fff box-shadow radius mb-20">
+			<div class="tab-category">
+				<a href=""><strong>扫我关注</strong></a>
+			</div>
+			<div class="tab-category-item">
+				<img data-original="temp/gg.jpg" class="img-responsive lazyload" alt="响应式图片">
+			</div>
+		</div>
+					
+				</div>
+			</div>
+	
+</section>
+<footer class="footer mt-20">
+		<p>Copyright &copy;2017 wfyvv.com All Rights Reserved. <br>
+			<a href="http://www.miitbeian.gov.cn/" target="_blank" rel="nofollow">皖ICP备17002922号</a>  更多模板:<a href="http://www.cssmoban.com/" target="_blank">模板之家</a><br>
+		</p>
+</footer>
+<script type="text/javascript" src="plugin/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="plugin/layer/3.0/layer.js"></script>
+<script type="text/javascript" src="plugin/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="plugin/pifu/pifu.js"></script>
+<script type="text/javascript" src="js/common.js"></script>
+<script> $(function(){ $(window).on("scroll",backToTopFun); backToTopFun(); }); </script>
+<script type="text/javascript" src="plugin/wangEditor/js/wangEditor.min.js"></script>
+<script type="text/javascript">
+    $(function () {
+    		$("img.lazyload").lazyload({failurelimit : 3});
+    	
+        wangEditor.config.printLog = false;
+        var editor1 = new wangEditor('textarea1');
+        editor1.config.menus = ['insertcode', 'quote', 'bold', '|', 'img', 'emotion', '|', 'undo', 'fullscreen'];
+        editor1.config.emotions = { 'default': { title: '老王表情', data: 'plugin/wangEditor/emotions1.data'}, 'default2': { title: '老王心情', data: 'plugin/wangEditor/emotions3.data'}, 'default3': { title: '顶一顶', data: 'plugin/wangEditor/emotions2.data'}};
+        editor1.create();
+
+        //show reply
+        $(".hf").click(function () {
+            pId = $(this).attr("name");
+            $(this).parents(".commentList").find(".cancelReply").trigger("click");
+            $(this).parent(".comment-body").append($(".comment").clone(true));
+            $(this).parent(".comment-body").find(".comment").removeClass("hidden");
+            $(this).hide();
+        });
+        //cancel reply
+        $(".cancelReply").on('click',function () {
+            $(this).parents(".comment-body").find(".hf").show();
+            $(this).parents(".comment-body").find(".comment").remove();
+        });
+    });
+
+</script>
+</body>
+</html>

+ 191 - 0
src/main/webapp/board.html

@@ -0,0 +1,191 @@
+<!DOCTYPE HTML>
+<html>
+<title>留言板 — 一个站在java开发之路上的草根程序员个人博客网站</title>
+<meta charset="utf-8">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+<meta name="keywords" content="个人博客,王风宇个人博客,个人博客系统,老王博客,王风宇">
+<meta name="description" content="Lao王博客系统,一个站在java开发之路上的草根程序员个人博客网站。">
+<LINK rel="Bookmark" href="favicon.ico" >
+<LINK rel="Shortcut Icon" href="favicon.ico" />
+<!--[if lt IE 9]>
+<script type="text/javascript" src="/staticRes/js/html5shiv.js"></script>
+<script type="text/javascript" src="/staticRes/js/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="plugin/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="plugin/Hui-iconfont/1.0.8/iconfont.min.css" />
+<link rel="stylesheet" type="text/css" href="css/common.css" />
+<link rel="stylesheet" type="text/css" href="plugin/pifu/pifu.css" />
+<link rel="stylesheet" type="text/css" href="plugin/wangEditor/css/wangEditor.min.css">
+<!--[if lt IE 9]>
+<link href="/staticRes/lib/h-ui/css/H-ui.ie.css" rel="stylesheet" type="text/css" />
+<![endif]-->
+<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } function showSide(){$('.navbar-nav').toggle();}</script>
+</head>
+<body>
+<header class="navbar-wrapper">
+    <div class="navbar navbar-fixed-top">
+        <div class="container cl">
+            <a class="navbar-logo hidden-xs" href="index">
+                <img class="logo" src="img/logo.png" alt="Lao王博客" />
+            </a>
+            <a class="logo navbar-logo-m visible-xs" href="index">Lao王博客</a>
+            <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:void(0);" onclick="showSide();">&#xe667;</a>
+            <nav class="nav navbar-nav nav-collapse w_menu" role="navigation">
+                <ul class="cl">
+                    <li class="active"> <a href="index.html" data-hover="首页">首页</a> </li>
+                    <li> <a href="about.html" data-hover="关于我">关于我</a> </li>
+                    <li> <a href="mood.html" data-hover="碎言碎语">碎言碎语</a> </li>
+                    <li><a href="article.html" data-hover="学无止尽">学无止尽</a></li>
+                    <li> <a href="board.html" data-hover="留言板">留言板</a> </li>
+                </ul>
+            </nav>
+            <nav class="navbar-nav navbar-userbar hidden-xs hidden-sm " style="top: 0;">
+                <ul class="cl">
+                    <li class="userInfo dropDown dropDown_hover">
+                            <!--<a href="javascript:;" ><img class="avatar radius" src="img/40.jpg" alt="丶似浅 "></a>
+                            <ul class="dropDown-menu menu radius box-shadow">
+                                <li><a href="/app/loginOut">退出</a></li>
+                            </ul>-->
+                            <a href="/app/qq" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登入">登入</a>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+    </div>
+</header>
+
+<!--导航条-->
+<nav class="breadcrumb">
+    <div class="container"> <i class="Hui-iconfont">&#xe67f;</i> <a href="index.html" class="c-primary">首页</a> <span class="c-gray en">&gt;</span>  <span class="c-gray">留言板</span> </div>
+</nav>
+
+<section class="container">
+    <div class="col-xs-12 col-md-10 col-md-offset-1 mt-20">
+        <!--用于评论-->
+        <div class="mt-20" id="ct">
+            <div id="err" class="Huialert Huialert-danger hidden radius">成功状态提示</div>
+            <textarea id="textarea1" name="comment" style="height:200px;" placeholder="看完不留一发?"> </textarea>
+            <div class="text-r mt-10">
+                <button onclick="getPlainTxt()" class="btn btn-primary radius" > 发表评论</button>
+            </div>
+        </div>
+
+        <div class="line"></div>
+
+        <ul class="commentList mt-50">
+
+          <li class="item cl"> <a href="#"><i class="avatar size-L radius"><img alt="" src="http://q.qlogo.cn/qqapp/101388738/1CF8425D24660DB8C3EBB76C03D95F35/100"></i></a>
+                <div class="comment-main">
+                    <header class="comment-header">
+                        <div class="comment-meta"><a class="comment-author" href="#">老王</a>
+                            <time title="2014年8月31日 下午3:20" datetime="2014-08-31T03:54:20" class="f-r">2014-8-31 15:20</time>
+                        </div>
+                    </header>
+                    <div class="comment-body">
+                        你是猴子派来的救兵吗?
+
+                        <ul class="commentList">
+                            <li class="item cl"> <a href="#"><i class="avatar size-L radius"><img alt="" src="http://qzapp.qlogo.cn/qzapp/101388738/1CF8425D24660DB8C3EBB76C03D95F35/100"></i></a>
+                                <div class="comment-main">
+                                    <header class="comment-header">
+                                        <div class="comment-meta"><a class="comment-author" href="#">老王</a>
+                                            <time title="2014年8月31日 下午3:20" datetime="2014-08-31T03:54:20" class="f-r">2014-8-31 15:20</time>
+                                        </div>
+                                    </header>
+                                    <div class="comment-body">
+                                        <p> 是的</p>
+                                    </div>
+                                </div>
+                            </li>
+                            <li class="item cl"> <a href="#"><i class="avatar size-L radius"><img alt="" src="http://qzapp.qlogo.cn/qzapp/101388738/696C8A17B3383B88804BA92ECBAA5D81/100"></i></a>
+                                <div class="comment-main">
+                                    <header class="comment-header">
+                                        <div class="comment-meta"><a class="comment-author" href="#">老王</a>
+                                            <time title="2014年8月31日 下午3:20" datetime="2014-08-31T03:54:20" class="f-r">2014-8-31 15:20</time>
+                                        </div>
+                                    </header>
+                                    <div class="comment-body">
+                                        <p> +1</p>
+                                    </div>
+                                </div>
+                            </li>
+
+                        </ul>
+
+                        <button class="hf f-r btn btn-default size-S mt-10" name="2">回复</button>
+
+                    </div>
+                </div>
+            </li>
+            <li class="item cl"> <a href="#"><i class="avatar size-L radius"><img alt="" src="http://qzapp.qlogo.cn/qzapp/101388738/1CF8425D24660DB8C3EBB76C03D95F35/100"></i></a>
+                <div class="comment-main">
+                    <header class="comment-header">
+                        <div class="comment-meta"><a class="comment-author" href="#">老王</a>
+                            <time title="2014年8月31日 下午3:20" datetime="2014-08-31T03:54:20" class="f-r">2014-8-31 15:20</time>
+                        </div>
+                    </header>
+                    <div class="comment-body">
+                        你是猴子派来的救兵吗?
+
+                        <button class="hf f-r btn btn-default size-S mt-10" name="3">回复</button>
+
+                    </div>
+                </div>
+            </li>
+
+        </ul>
+        <!--用于回复-->
+        <div class="comment hidden mt-20">
+            <div id="err2" class="Huialert Huialert-danger hidden radius">成功状态提示</div>
+            <textarea class="textarea" style="height:100px;" > </textarea>
+            <button onclick="hf(this);" type="button" class="btn btn-primary radius mt-10">回复</button>
+            <a class="cancelReply f-r mt-10">取消回复</a>
+        </div>
+
+    </div>
+</section>
+<footer class="footer mt-20">
+    <div class="container-fluid" id="foot">
+        <p>Copyright &copy; 2016-2017 www.wfyvv.com <br>
+            <a href="#" target="_blank">皖ICP备17002922号</a>  更多模板:<a href="http://www.cssmoban.com/" target="_blank">模板之家</a><br>
+        </p>
+    </div>
+</footer>
+<script type="text/javascript" src="plugin/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="plugin/layer/3.0/layer.js"></script>
+<script type="text/javascript" src="plugin/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="plugin/pifu/pifu.js"></script>
+<script type="text/javascript" src="js/common.js"></script>
+<script> $(function(){ $(window).on("scroll",backToTopFun); backToTopFun(); }); </script>
+<script type="text/javascript" src="plugin/wangEditor/js/wangEditor.min.js"></script>
+
+<script type="text/javascript">
+    $(function () {
+        wangEditor.config.printLog = false;
+        var editor1 = new wangEditor('textarea1');
+        editor1.config.menus = ['insertcode', 'quote', 'bold', '|', 'img', 'emotion', '|', 'undo', 'fullscreen'];
+        editor1.config.emotions = { 'default': { title: '老王表情', data: 'plugin/wangEditor/emotions1.data'}, 'default2': { title: '老王心情', data: 'plugin/wangEditor/emotions3.data'}, 'default3': { title: '顶一顶', data: 'plugin/wangEditor/emotions2.data'}};
+        editor1.create();
+
+        //show reply
+        $(".hf").click(function () {
+            pId = $(this).attr("name");
+            $(this).parents(".commentList").find(".cancelReply").trigger("click");
+            $(this).parent(".comment-body").append($(".comment").clone(true));
+            $(this).parent(".comment-body").find(".comment").removeClass("hidden");
+            $(this).hide();
+        });
+        //cancel reply
+        $(".cancelReply").on('click',function () {
+            $(this).parents(".comment-body").find(".hf").show();
+            $(this).parents(".comment-body").find(".comment").remove();
+        });
+    });
+
+</script>
+
+</body>
+</html>

BIN
src/main/webapp/favicon.ico


+ 254 - 0
src/main/webapp/index.html

@@ -0,0 +1,254 @@
+<%@ page language="java" contentType="text/html; charset=utf-8"
+		 pageEncoding="utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>老王个人博客 — 一个站在java开发之路上的草根程序员个人博客网站</title>
+<meta charset="utf-8">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+<meta name="keywords" content="个人博客,王风宇个人博客,个人博客系统,老王博客,王风宇">
+<meta name="description" content="Lao王博客系统,一个站在java开发之路上的草根程序员个人博客网站。">
+<LINK rel="Bookmark" href="favicon.ico" >
+<LINK rel="Shortcut Icon" href="favicon.ico" />
+<!--[if lt IE 9]>
+<script type="text/javascript" src="/staticRes/js/html5shiv.js"></script>
+<script type="text/javascript" src="/staticRes/js/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="plugin/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="plugin/Hui-iconfont/1.0.8/iconfont.min.css" />
+<link rel="stylesheet" type="text/css" href="css/common.css" />
+<link rel="stylesheet" type="text/css" href="plugin/pifu/pifu.css" />
+<!--[if lt IE 9]>
+<link href="/staticRes/lib/h-ui/css/H-ui.ie.css" rel="stylesheet" type="text/css" />
+<![endif]-->
+<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } function showSide(){$('.navbar-nav').toggle();}</script>
+</head>
+<body>
+<header class="navbar-wrapper">
+    <div class="navbar navbar-fixed-top">
+        <div class="container cl">
+            <a class="navbar-logo hidden-xs" href="index.html">
+                <img class="logo" src="img/logo.png" alt="Lao王博客" />
+            </a>
+            <a class="logo navbar-logo-m visible-xs" href="index.html">Lao王博客</a>
+            <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:void(0);" onclick="showSide();">&#xe667;</a>
+            <nav class="nav navbar-nav nav-collapse w_menu" role="navigation">
+                <ul class="cl">
+                    <li class="active"> <a href="index" data-hover="首页">首页</a> </li>
+                    <li> <a href="about.html" data-hover="关于我">关于我</a> </li>
+                    <li> <a href="mood.html" data-hover="碎言碎语">碎言碎语</a> </li>
+                    <li><a href="article.html" data-hover="学无止尽">学无止尽</a></li>
+                    <li> <a href="board.html" data-hover="留言板">留言板</a> </li>
+                </ul>
+            </nav>
+            <nav class="navbar-nav navbar-userbar hidden-xs hidden-sm " style="top: 0;">
+                <ul class="cl">
+                    <li class="userInfo dropDown dropDown_hover">
+                            <!--<a href="javascript:;" ><img class="avatar radius" src="img/40.jpg" alt="丶似浅 "></a>
+                            <ul class="dropDown-menu menu radius box-shadow">
+                                <li><a href="/app/loginOut">退出</a></li>
+                            </ul>-->
+                            <a href="/app/qq" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登入">登入</a>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+    </div>
+</header>
+
+<section class="container pt-20">
+	<!--<div class="Huialert Huialert-info"><i class="Hui-iconfont">&#xe6a6;</i>成功状态提示</div>-->
+  <!--left-->
+  <div class="col-sm-9 col-md-9">
+  	<!--滚动图-->
+  	<div class="slider_main">
+            <div class="slider">
+                <div class="bd">
+                    <ul>
+                        <li><a href="#" target="_blank"><img src="img/temp/banner1.jpg"></a></li>
+                        <li><a href="#" target="_blank"><img src="img/temp/banner8.png"></a></li>
+                    </ul>
+                </div>
+                <ol class="hd cl dots">
+                    <li>1</li>
+                    <li>2</li>
+                </ol>
+                <a class="slider-arrow prev" href="javascript:void(0)"></a>
+                <a class="slider-arrow next" href="javascript:void(0)"></a>
+            </div>
+        </div>
+  		
+		<div class="mt-20 bg-fff box-shadow radius mb-5">
+			<div class="tab-category">
+				<a href=""><strong class="current">最新发布</strong></a>
+			</div>
+		</div>
+		<div class="art_content">
+			<ul class="index_arc">
+				<!-- 开始 -->
+                <c:forEach items="${list}" var="news">
+				<li class="index_arc_item">
+					<a href="#" class="pic">
+						<img class="lazyload" data-original="${news.newsImg}" alt="应该选" />
+					</a>
+					<h4 class="title"><a href="article_detail.html">${news.newsTitle}</a></h4>
+					<div class="date_hits">
+						<span>${news.newsAuthor}</span>
+						<span>${news.newsDate}</span>
+						<span><a href="/article-lists/10.html">${news.newsSort}</a></span>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> ${news.newsHot}° </p>
+						<p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span class="cy_cmt_count">${news.newsComment}</span></p>
+					</div>
+					<div class="desc">${news.newsText}</div>
+				</li>
+                </c:forEach>
+				<!-- 结束 -->
+				</ul>
+  		<div class="text-c mb-20" id="moreBlog">
+	        <a class="btn  radius btn-block " href="javascript:" onclick="moreBlog();">点击加载更多</a>
+	        <a class="btn  radius btn-block hidden" href="javascript:">加载中……</a>
+	    </div>
+		</div>
+  </div>
+  
+  <!--right-->
+  <div class="col-sm-3 col-md-3">
+  	
+  	<!--站点声明-->
+        <div class="panel panel-default mb-20">
+            <div class="panel-body">
+                <i class="Hui-iconfont" style="float: left;">&#xe62f;&nbsp;</i>
+                <div class="slideTxtBox">
+                    <div class="bd">
+                        <ul>
+                            <li><a href="javascript:void(0);">Lao博客测试版上线,欢迎访问</a></li>
+                            <li><a href="javascript:void(0);">内容如有侵犯,请立即联系管理员删除</a></li>
+                            <li><a href="javascript:void(0);">本站内容仅供学习和参阅,不做任何商业用途</a></li>
+                        </ul>
+                    </div>
+                </div>
+            </div>
+        </div>
+        
+  	<!--博主信息-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>博主信息</strong></a>
+            </div>
+            <div class="tab-category-item">
+                <ul class="index_recd">
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe653;</i>姓名:${blogger.bloggerName}</li>
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe70d;</i>职业:${blogger.bloggerPro}</li>
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe63b;</i>邮箱:<a href="${blogger.bloggerEmail}">${blogger.bloggerEmail}</a></li>
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe671;</i>定位:${blogger.bloggerAddress}</li>
+                </ul>
+            </div>
+        </div>
+
+      <!--图片-->
+      <div class="bg-fff box-shadow radius mb-20">
+          <div class="tab-category">
+              <a href=""><strong>扫我关注</strong></a>
+          </div>
+          <div class="tab-category-item">
+              <img data-original="temp/gg.jpg" class="img-responsive lazyload" alt="响应式图片">
+          </div>
+      </div>
+  	
+  	<!--热门推荐-->
+  	<div class="bg-fff box-shadow radius mb-20">
+			<div class="tab-category">
+				<a href=""><strong>Linux相关</strong></a>
+			</div>
+			<div class="tab-category-item">
+				<ul class="index_recd">
+                    <c:forEach items="${lists}" var="news">
+					<li>
+						<a href="#">${news.newsTitle}</a>
+						<p class="hits"><i class="Hui-iconfont" title="点击量">&#xe622;</i>777  </p>
+					</li>
+                    </c:forEach>
+				</ul>
+			</div>
+		</div>
+		
+		<!--点击排行-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>代码相关</strong></a>
+            </div>
+            <div class="tab-category-item">
+                <ul class="index_recd clickTop">
+                    <li>
+                        <a href="#">AJAX的刷新和前进后退问题解决</a>
+                        <p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+                    </li>
+                </ul>
+            </div>
+        </div>
+		
+		<!--友情链接-->
+		<div class="bg-fff box-shadow radius mb-20">
+			<div class="tab-category">
+				<a href=""><strong>隔壁邻居</strong></a>
+			</div>
+			<div class="tab-category-item">
+				<span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">小破站</a></span>
+				<span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">GitHub</a></span>
+				<span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">恩山论坛</a></span>
+				<span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">个人网盘</a></span>
+			</div>
+		</div>
+
+		<!--分享-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>站点分享</strong></a>
+            </div>
+            <div class="panel-body">
+                <div class="bdsharebuttonbox Hui-share"><a href="#" class="bds_weixin Hui-iconfont" data-cmd="weixin" title="分享到微信">&#xe694;</a><a href="#" class="bds_qzone Hui-iconfont" data-cmd="qzone" title="分享到QQ空间">&#xe6c8;</a> <a href="#" class="bds_sqq Hui-iconfont" data-cmd="sqq" title="分享到QQ好友">&#xe67b;</a> <a href="#" class="bds_tsina Hui-iconfont" data-cmd="tsina" title="分享到新浪微博">&#xe6da;</a> <a href="#" class="bds_tqq Hui-iconfont" data-cmd="tqq" title="分享到腾讯微博">&#xe6d9;</a></div>
+            </div>
+        </div>
+  </div>
+  
+</section>
+<footer class="footer mt-20">
+    <div class="container-fluid" id="foot">
+        <p>Copyright &copy; 2016-2017 www.wfyvv.com <br>
+            <a href="#" target="_blank">皖ICP备17002922号</a>  更多模板:<a href="http://www.cssmoban.com/" target="_blank">模板之家</a><br>
+        </p>
+    </div>
+</footer>
+<script type="text/javascript" src="plugin/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="plugin/layer/3.0/layer.js"></script>
+<script type="text/javascript" src="plugin/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="plugin/pifu/pifu.js"></script>
+<script type="text/javascript" src="js/common.js"></script>
+<script> $(function(){ $(window).on("scroll",backToTopFun); backToTopFun(); }); </script>
+<script type="text/javascript" src="plugin/jquery.SuperSlide/2.1.1/jquery.SuperSlide.min.js"></script>
+
+<script>
+$(function(){
+//幻灯片
+jQuery(".slider_main .slider").slide({mainCell: ".bd ul", titCell: ".hd li", trigger: "mouseover", effect: "leftLoop", autoPlay: true, delayTime: 700, interTime: 2000, pnLoop: true, titOnClassName: "active"})
+//tips
+jQuery(".slideTxtBox").slide({titCell: ".hd ul", mainCell: ".bd ul", autoPage: true, effect: "top", autoPlay: true});
+//标签
+	$(".tags a").each(function(){
+		var x = 9;
+		var y = 0;
+		var rand = parseInt(Math.random() * (x - y + 1) + y);
+		$(this).addClass("tags"+rand)
+	});
+	
+	$("img.lazyload").lazyload({failurelimit : 3});
+});
+
+</script> 
+
+</body>
+</html>

+ 254 - 0
src/main/webapp/index.jsp

@@ -0,0 +1,254 @@
+<%@ page language="java" contentType="text/html; charset=utf-8"
+         pageEncoding="utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<!DOCTYPE HTML>
+<html>
+<head>
+    <title>老王个人博客 — 一个站在java开发之路上的草根程序员个人博客网站</title>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <meta name="keywords" content="个人博客,王风宇个人博客,个人博客系统,老王博客,王风宇">
+    <meta name="description" content="Lao王博客系统,一个站在java开发之路上的草根程序员个人博客网站。">
+    <LINK rel="Bookmark" href="favicon.ico" >
+    <LINK rel="Shortcut Icon" href="favicon.ico" />
+    <!--[if lt IE 9]>
+    <script type="text/javascript" src="/staticRes/js/html5shiv.js"></script>
+    <script type="text/javascript" src="/staticRes/js/respond.min.js"></script>
+    <![endif]-->
+    <link rel="stylesheet" type="text/css" href="plugin/h-ui/css/H-ui.min.css" />
+    <link rel="stylesheet" type="text/css" href="plugin/Hui-iconfont/1.0.8/iconfont.min.css" />
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="plugin/pifu/pifu.css" />
+    <!--[if lt IE 9]>
+    <link href="/staticRes/lib/h-ui/css/H-ui.ie.css" rel="stylesheet" type="text/css" />
+    <![endif]-->
+    <script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } function showSide(){$('.navbar-nav').toggle();}</script>
+</head>
+<body>
+<header class="navbar-wrapper">
+    <div class="navbar navbar-fixed-top">
+        <div class="container cl">
+            <a class="navbar-logo hidden-xs" href="index.html">
+                <img class="logo" src="img/logo.png" alt="Lao王博客" />
+            </a>
+            <a class="logo navbar-logo-m visible-xs" href="index.html">Lao王博客</a>
+            <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:void(0);" onclick="showSide();">&#xe667;</a>
+            <nav class="nav navbar-nav nav-collapse w_menu" role="navigation">
+                <ul class="cl">
+                    <li class="active"> <a href="index" data-hover="首页">首页</a> </li>
+                    <li> <a href="about.html" data-hover="关于我">关于我</a> </li>
+                    <li> <a href="mood.html" data-hover="碎言碎语">碎言碎语</a> </li>
+                    <li><a href="article.html" data-hover="学无止尽">学无止尽</a></li>
+                    <li> <a href="board.html" data-hover="留言板">留言板</a> </li>
+                </ul>
+            </nav>
+            <nav class="navbar-nav navbar-userbar hidden-xs hidden-sm " style="top: 0;">
+                <ul class="cl">
+                    <li class="userInfo dropDown dropDown_hover">
+                        <!--<a href="javascript:;" ><img class="avatar radius" src="img/40.jpg" alt="丶似浅 "></a>
+                        <ul class="dropDown-menu menu radius box-shadow">
+                            <li><a href="/app/loginOut">退出</a></li>
+                        </ul>-->
+                        <a href="/app/qq" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登入">登入</a>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+    </div>
+</header>
+
+<section class="container pt-20">
+    <!--<div class="Huialert Huialert-info"><i class="Hui-iconfont">&#xe6a6;</i>成功状态提示</div>-->
+    <!--left-->
+    <div class="col-sm-9 col-md-9">
+        <!--滚动图-->
+        <div class="slider_main">
+            <div class="slider">
+                <div class="bd">
+                    <ul>
+                        <li><a href="#" target="_blank"><img src="img/temp/banner1.jpg"></a></li>
+                        <li><a href="#" target="_blank"><img src="img/temp/banner8.png"></a></li>
+                    </ul>
+                </div>
+                <ol class="hd cl dots">
+                    <li>1</li>
+                    <li>2</li>
+                </ol>
+                <a class="slider-arrow prev" href="javascript:void(0)"></a>
+                <a class="slider-arrow next" href="javascript:void(0)"></a>
+            </div>
+        </div>
+
+        <div class="mt-20 bg-fff box-shadow radius mb-5">
+            <div class="tab-category">
+                <a href=""><strong class="current">最新发布</strong></a>
+            </div>
+        </div>
+        <div class="art_content">
+            <ul class="index_arc">
+                <!-- 开始 -->
+                <c:forEach items="${list}" var="news">
+                    <li class="index_arc_item">
+                        <a href="#" class="pic">
+                            <img class="lazyload" data-original="${news.newsImg}" alt="应该选" />
+                        </a>
+                        <h4 class="title"><a href="article_detail.html">${news.newsTitle}</a></h4>
+                        <div class="date_hits">
+                            <span>${news.newsAuthor}</span>
+                            <span>${news.newsDate}</span>
+                            <span><a href="/article-lists/10.html">${news.newsSort}</a></span>
+                            <p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> ${news.newsHot}° </p>
+                            <p class="commonts"><i class="Hui-iconfont" title="点击量">&#xe622;</i> <span class="cy_cmt_count">${news.newsComment}</span></p>
+                        </div>
+                        <div class="desc">${news.newsText}</div>
+                    </li>
+                </c:forEach>
+                <!-- 结束 -->
+            </ul>
+            <div class="text-c mb-20" id="moreBlog">
+                <a class="btn  radius btn-block " href="javascript:" onclick="moreBlog();">点击加载更多</a>
+                <a class="btn  radius btn-block hidden" href="javascript:">加载中……</a>
+            </div>
+        </div>
+    </div>
+
+    <!--right-->
+    <div class="col-sm-3 col-md-3">
+
+        <!--站点声明-->
+        <div class="panel panel-default mb-20">
+            <div class="panel-body">
+                <i class="Hui-iconfont" style="float: left;">&#xe62f;&nbsp;</i>
+                <div class="slideTxtBox">
+                    <div class="bd">
+                        <ul>
+                            <li><a href="javascript:void(0);">Lao博客测试版上线,欢迎访问</a></li>
+                            <li><a href="javascript:void(0);">内容如有侵犯,请立即联系管理员删除</a></li>
+                            <li><a href="javascript:void(0);">本站内容仅供学习和参阅,不做任何商业用途</a></li>
+                        </ul>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <!--博主信息-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>博主信息</strong></a>
+            </div>
+            <div class="tab-category-item">
+                <ul class="index_recd">
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe653;</i>姓名:${blogger.bloggerName}</li>
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe70d;</i>职业:${blogger.bloggerPro}</li>
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe63b;</i>邮箱:<a href="${blogger.bloggerEmail}">${blogger.bloggerEmail}</a></li>
+                    <li class="index_recd_item"><i class="Hui-iconfont">&#xe671;</i>定位:${blogger.bloggerAddress}</li>
+                </ul>
+            </div>
+        </div>
+
+        <!--图片-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>扫我关注</strong></a>
+            </div>
+            <div class="tab-category-item">
+                <img data-original="temp/gg.jpg" class="img-responsive lazyload" alt="响应式图片">
+            </div>
+        </div>
+
+        <!--热门推荐-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>Linux相关</strong></a>
+            </div>
+            <div class="tab-category-item">
+                <ul class="index_recd">
+                    <c:forEach items="${lists}" var="news">
+                        <li>
+                            <a href="#">${news.newsTitle}</a>
+                            <p class="hits"><i class="Hui-iconfont" title="点击量">&#xe622;</i>777  </p>
+                        </li>
+                    </c:forEach>
+                </ul>
+            </div>
+        </div>
+
+        <!--点击排行-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>代码相关</strong></a>
+            </div>
+            <div class="tab-category-item">
+                <ul class="index_recd clickTop">
+                    <li>
+                        <a href="#">AJAX的刷新和前进后退问题解决</a>
+                        <p class="hits"><i class="Hui-iconfont" title="点击量">&#xe6c1;</i> 276° </p>
+                    </li>
+                </ul>
+            </div>
+        </div>
+
+        <!--友情链接-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>隔壁邻居</strong></a>
+            </div>
+            <div class="tab-category-item">
+                <span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">小破站</a></span>
+                <span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">GitHub</a></span>
+                <span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">恩山论坛</a></span>
+                <span><i class="Hui-iconfont">&#xe6f1;</i><a href="#" class="btn-link">个人网盘</a></span>
+            </div>
+        </div>
+
+        <!--分享-->
+        <div class="bg-fff box-shadow radius mb-20">
+            <div class="tab-category">
+                <a href=""><strong>站点分享</strong></a>
+            </div>
+            <div class="panel-body">
+                <div class="bdsharebuttonbox Hui-share"><a href="#" class="bds_weixin Hui-iconfont" data-cmd="weixin" title="分享到微信">&#xe694;</a><a href="#" class="bds_qzone Hui-iconfont" data-cmd="qzone" title="分享到QQ空间">&#xe6c8;</a> <a href="#" class="bds_sqq Hui-iconfont" data-cmd="sqq" title="分享到QQ好友">&#xe67b;</a> <a href="#" class="bds_tsina Hui-iconfont" data-cmd="tsina" title="分享到新浪微博">&#xe6da;</a> <a href="#" class="bds_tqq Hui-iconfont" data-cmd="tqq" title="分享到腾讯微博">&#xe6d9;</a></div>
+            </div>
+        </div>
+    </div>
+
+</section>
+<footer class="footer mt-20">
+    <div class="container-fluid" id="foot">
+        <p>Copyright &copy; 2016-2017 www.wfyvv.com <br>
+            <a href="#" target="_blank">皖ICP备17002922号</a>  更多模板:<a href="http://www.cssmoban.com/" target="_blank">模板之家</a><br>
+        </p>
+    </div>
+</footer>
+<script type="text/javascript" src="plugin/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="plugin/layer/3.0/layer.js"></script>
+<script type="text/javascript" src="plugin/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="plugin/pifu/pifu.js"></script>
+<script type="text/javascript" src="js/common.js"></script>
+<script> $(function(){ $(window).on("scroll",backToTopFun); backToTopFun(); }); </script>
+<script type="text/javascript" src="plugin/jquery.SuperSlide/2.1.1/jquery.SuperSlide.min.js"></script>
+
+<script>
+    $(function(){
+//幻灯片
+        jQuery(".slider_main .slider").slide({mainCell: ".bd ul", titCell: ".hd li", trigger: "mouseover", effect: "leftLoop", autoPlay: true, delayTime: 700, interTime: 2000, pnLoop: true, titOnClassName: "active"})
+//tips
+        jQuery(".slideTxtBox").slide({titCell: ".hd ul", mainCell: ".bd ul", autoPage: true, effect: "top", autoPlay: true});
+//标签
+        $(".tags a").each(function(){
+            var x = 9;
+            var y = 0;
+            var rand = parseInt(Math.random() * (x - y + 1) + y);
+            $(this).addClass("tags"+rand)
+        });
+
+        $("img.lazyload").lazyload({failurelimit : 3});
+    });
+
+</script>
+
+</body>
+</html>

+ 224 - 0
src/main/webapp/login.jsp

@@ -0,0 +1,224 @@
+<%--@elvariable id="blogger" type="org.springframework.remoting.jaxws.JaxWsPortClientInterceptor"--%>
+<%--@elvariable id="errorInfo" type="cn"--%>
+<%--
+  Created by IntelliJ IDEA.
+  User: njc
+  Date: 2022/5/5
+  Time: 14:47
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>登录界面</title>
+    <script type="text/javascript" src="${pageContext.request.contextPath}/static/js/jquery.min.js"></script>
+    <style>
+        body {
+            background: #ebebeb;
+            font-family: "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei", "\9ED1\4F53", Arial, sans-serif;
+            color: #222;
+            font-size: 12px;
+        }
+
+        * {
+            padding: 0;
+            margin: 0;
+        }
+
+        .top_div {
+            background: #008ead;
+            width: 100%;
+            height: 400px;
+        }
+
+        .ipt {
+            border: 1px solid #d3d3d3;
+            width: 330px;
+            border-radius: 4px;
+            padding: 10px 10px 10px 40px;
+            -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+            box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+            -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+            -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+            transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s
+        }
+
+        .ipt:focus {
+            border-color: #66afe9;
+            outline: 0;
+            -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
+            box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6)
+        }
+
+        .u_logo {
+            background: url("${pageContext.request.contextPath}/static/img/username.png") no-repeat;
+            padding: 10px 10px;
+            position: absolute;
+            top: 43px;
+            left: 50px;
+
+        }
+
+        .p_logo {
+            background: url("${pageContext.request.contextPath}/static/img/password.png") no-repeat;
+            padding: 10px 10px;
+            position: absolute;
+            top: 12px;
+            left: 50px;
+        }
+
+        a {
+            text-decoration: none;
+        }
+
+        .tou {
+            background: url("${pageContext.request.contextPath}/static/img/tou.png") no-repeat;
+            width: 97px;
+            height: 92px;
+            position: absolute;
+            top: -87px;
+            left: 140px;
+        }
+
+        .left_hand {
+            background: url("${pageContext.request.contextPath}/static/img/left_hand.png") no-repeat;
+            width: 32px;
+            height: 37px;
+            position: absolute;
+            top: -38px;
+            left: 150px;
+        }
+
+        .right_hand {
+            background: url("${pageContext.request.contextPath}/static/img/right_hand.png") no-repeat;
+            width: 32px;
+            height: 37px;
+            position: absolute;
+            top: -38px;
+            right: -64px;
+        }
+
+        .initial_left_hand {
+            background: url("${pageContext.request.contextPath}/static/img/hand.png") no-repeat;
+            width: 30px;
+            height: 20px;
+            position: absolute;
+            top: -12px;
+            left: 100px;
+        }
+
+        .initial_right_hand {
+            background: url("${pageContext.request.contextPath}/static/img/hand.png") no-repeat;
+            width: 30px;
+            height: 20px;
+            position: absolute;
+            top: -12px;
+            right: -112px;
+        }
+
+        .left_handing {
+            background: url("${pageContext.request.contextPath}/static/img/left-handing.png") no-repeat;
+            width: 30px;
+            height: 20px;
+            position: absolute;
+            top: -24px;
+            left: 139px;
+        }
+
+        .right_handinging {
+            background: url("${pageContext.request.contextPath}/static/img/right_handing.png") no-repeat;
+            width: 30px;
+            height: 20px;
+            position: absolute;
+            top: -21px;
+            left: 210px;
+        }
+
+    </style>
+    <script type="text/javascript">
+        $(function () {
+            //得到焦点
+            $("#password").focus(function () {
+                $("#left_hand").animate({
+                    left: "150",
+                    top: " -38"
+                }, {
+                    step: function () {
+                        if (parseInt($("#left_hand").css("left")) > 140) {
+                            $("#left_hand").attr("class", "left_hand");
+                        }
+                    }
+                }, 2000);
+                $("#right_hand").animate({
+                    right: "-64",
+                    top: "-38px"
+                }, {
+                    step: function () {
+                        if (parseInt($("#right_hand").css("right")) > -70) {
+                            $("#right_hand").attr("class", "right_hand");
+                        }
+                    }
+                }, 2000);
+            });
+            //失去焦点
+            $("#password").blur(function () {
+                $("#left_hand").attr("class", "initial_left_hand");
+                $("#left_hand").attr("style", "left:100px;top:-12px;");
+                $("#right_hand").attr("class", "initial_right_hand");
+                $("#right_hand").attr("style", "right:-112px;top:-12px");
+            });
+        });
+
+        /**
+         * 用户密码验证
+         */
+        function checkForm() {
+            var userName = $("#userName").val();
+            console.log(userName);
+            var password = $("#password").val();
+            console.log(password);
+            if (userName == null || userName === "") {
+                alert("用户名不能为空!");
+                return false;
+            }
+            if (password == null || password === "") {
+                alert("密码不能为空!");
+                return false;
+            }
+            return true;
+        }
+    </script>
+</head>
+<body>
+<div class="top_div"></div>
+<form action="${pageContext.request.contextPath}/blogger/login.do" method="post" onsubmit="return checkForm()">
+    <div style="width: 400px;height: 200px;background: #ffffff;text-align: center;margin: -100px auto auto;border: 1px solid #e7e7e7">
+        <div style="width: 165px;height: 96px;position: absolute">
+            <div class="tou"></div>
+            <div id="left_hand" class="initial_left_hand"></div>
+            <div id="right_hand" class="initial_right_hand"></div>
+        </div>
+
+        <p style="padding: 30px 0 10px 0;position: relative;">
+            <span class="u_logo"></span>
+            <input class="ipt" type="text" name="userName" id="userName" placeholder="请输入用户名或邮箱" value="${blogger.userName}">
+        </p>
+        <p style="position: relative;">
+            <span class="p_logo"></span>
+            <input id="password" class="ipt" name="password" type="password" placeholder="请输入密码" value="${blogger.password}">
+        </p>
+
+        <div style="height: 50px;line-height: 50px;margin-top: 30px;border-top: 1px solid #e7e7e7;">
+            <p style="margin: 0 35px 20px 45px;">
+                <span style="float: left"><a href="${pageContext.request.contextPath}/index.jsp" style="color:#ccc;">返回主页</a></span>
+                <span><font color="red" id="error">${errorInfo}</font></span>
+                <span style="float: right">
+                    <a href="#" style="color:#ccc;margin-right:10px;">注册</a>
+                    <button type="submit" style="background: #008ead;padding: 7px 10px;border-radius: 4px;border: 1px solid #1a7598;color: #FFF;font-weight: bold;">登录</button>
+                </span>
+            </p>
+        </div>
+    </div>
+</form>
+</body>
+</html>

+ 240 - 0
src/main/webapp/mood.html

@@ -0,0 +1,240 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>碎言碎语 — 一个站在java开发之路上的草根程序员个人博客网站</title>
+<meta charset="utf-8">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+<meta name="keywords" content="个人博客,王风宇个人博客,个人博客系统,老王博客,王风宇">
+<meta name="description" content="Lao王博客系统,一个站在java开发之路上的草根程序员个人博客网站。">
+<LINK rel="Bookmark" href="favicon.ico" >
+<LINK rel="Shortcut Icon" href="favicon.ico" />
+<!--[if lt IE 9]>
+<script type="text/javascript" src="/staticRes/js/html5shiv.js"></script>
+<script type="text/javascript" src="/staticRes/js/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="plugin/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="plugin/Hui-iconfont/1.0.8/iconfont.min.css" />
+<link rel="stylesheet" type="text/css" href="css/common.css" />
+<link rel="stylesheet" type="text/css" href="plugin/pifu/pifu.css" />
+<link rel="stylesheet" type="text/css" href="css/timeline.css" />
+<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } function showSide(){$('.navbar-nav').toggle();}</script>
+</head>
+<body>
+<header class="navbar-wrapper">
+    <div class="navbar navbar-fixed-top">
+        <div class="container cl">
+            <a class="navbar-logo hidden-xs" href="/">
+                <img class="logo" src="img/logo.png" alt="Lao王博客" />
+            </a>
+            <a class="logo navbar-logo-m visible-xs" href="index">Lao王博客</a>
+            <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:void(0);" onclick="showSide();">&#xe667;</a>
+            <nav class="nav navbar-nav nav-collapse w_menu" role="navigation">
+                <ul class="cl">
+                    <li class="active"> <a href="index" data-hover="首页">首页</a> </li>
+                    <li> <a href="about.html" data-hover="关于我">关于我</a> </li>
+                    <li> <a href="mood.html" data-hover="碎言碎语">碎言碎语</a> </li>
+                    <li><a href="article.html" data-hover="学无止尽">学无止尽</a></li>
+                    <li> <a href="board.html" data-hover="留言板">留言板</a> </li>
+                </ul>
+            </nav>
+            <nav class="navbar-nav navbar-userbar hidden-xs hidden-sm " style="top: 0;">
+                <ul class="cl">
+                    <li class="userInfo dropDown dropDown_hover">
+                            <!--<a href="javascript:;" ><img class="avatar radius" src="img/40.jpg" alt="丶似浅 "></a>
+                            <ul class="dropDown-menu menu radius box-shadow">
+                                <li><a href="/app/loginOut">退出</a></li>
+                            </ul>-->
+                            <a href="/app/qq" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登入">登入</a>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+    </div>
+</header>
+
+<!--导航条-->
+<nav class="breadcrumb">
+    <div class="container"><i class="Hui-iconfont">&#xe67f;</i> <a href="index.html" class="c-primary">首页</a> <span class="c-gray en">&gt;</span> <span class="c-gray">碎言碎语</span></div>
+</nav>
+
+<section class="container mt-20">
+    <div class="container-fluid">
+        <div class="timeline">
+        	
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					<div class="cd-timeline-block">
+					    <div class="cd-timeline-img cd-picture">
+					        <img src="css/timeline/cd-icon-location.svg" alt="position">
+					    </div>
+					    <div class="cd-timeline-content">
+					        <h4>测试测试</h4>
+					        <p>Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。Lao王博客测试版本上线。。</p>
+					        <a href="http://www.wfyvv.com" class="f-r"><input class="btn btn-success size-S" type="button" value="更多"></a>
+					        <span class="cd-date">2017年1月01日</span>
+					    </div>
+					</div>
+					
+        </div>
+    </div>
+
+</section>
+<footer class="footer mt-20">
+    <div class="container-fluid" id="foot">
+        <p>Copyright &copy; 2016-2017 www.wfyvv.com <br>
+            <a href="#" target="_blank">皖ICP备17002922号</a>  更多模板:<a href="http://www.cssmoban.com/" target="_blank">模板之家</a><br>
+        </p>
+    </div>
+</footer>
+<script type="text/javascript" src="plugin/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="plugin/layer/3.0/layer.js"></script>
+<script type="text/javascript" src="plugin/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="plugin/pifu/pifu.js"></script>
+<script type="text/javascript" src="js/common.js"></script>
+<script> $(function(){ $(window).on("scroll",backToTopFun); backToTopFun(); }); </script>
+<script>
+    $(function () {
+        //on scolling, show/animate timeline blocks when enter the viewport
+        $(window).on('scroll', function () {
+            $('.cd-timeline-block').each(function () {
+                if ($(this).offset().top <= $(window).scrollTop() + $(window).height() * 0.75 && $(this).find('.cd-timeline-img').hasClass('is-hidden')) {
+                    $(this).find('.cd-timeline-img, .cd-timeline-content').removeClass('is-hidden').addClass('bounce-in');
+                }
+                if ($(window).scrollTop() - $(this).offset().top > 0) {
+                    $(this).find('.cd-timeline-img, .cd-timeline-content').addClass('is-hidden').removeClass('bounce-in');
+                }
+                
+            });
+           $('.cd-timeline-block').each(function(){
+                if($(this).offset().top < $(window).scrollTop()+$(window).height()*0.75) {
+                    $(this).find('.cd-timeline-img, .cd-timeline-content').removeClass('is-hidden');
+                }
+            });
+        });
+    });
+
+</script>
+</body>
+</html>

+ 432 - 0
src/main/webapp/static/css/common.css

@@ -0,0 +1,432 @@
+body {
+	background:url(../img/001.png) repeat 0 0;
+}
+a:hover{
+	text-decoration: none;
+}
+.container:after { /*优化container高度*/
+	content:""; 
+	display: block; 
+	clear: both; 
+} 
+/*导航条*/
+.navbar.navbar-fixed-top {
+    border-bottom: 1px #222 solid;
+}
+.navbar .container .navbar-userbar {
+    top: 8px;
+    right: 32px;
+}
+.nav ul li.active a {
+    color:#000;
+}
+.nav>ul>li>a {
+    padding: 0 30px;/*导航宽度*/
+    outline: none;
+    color: #838383;
+    text-decoration: none;
+    letter-spacing: 5px;
+    text-shadow: 0 0 1px rgba(255,255,255,0.3);
+    font-size: 1.25em;
+}
+.nav>ul>li>a::before {
+    color: #000;
+    content: attr(data-hover);
+    position: absolute;
+    opacity: 0;
+    text-shadow: 0 0 1px rgba(255,255,255,0.3);
+    -webkit-transform: scale(1.1) translateX(10px) translateY(-10px) rotate(4deg);
+    -moz-transform: scale(1.1) translateX(10px) translateY(-10px) rotate(4deg);
+    transform: scale(1.1) translateX(10px) translateY(-10px) rotate(4deg);
+    -webkit-transition: -webkit-transform 0.3s, opacity 0.3s;
+    -moz-transition: -moz-transform 0.3s, opacity 0.3s;
+    transition: transform 0.3s, opacity 0.3s;
+    pointer-events: none;
+}
+.nav>ul>li>a:hover::before,
+.nav>ul>li>a:focus::before {
+    -webkit-transform: scale(1) translateX(0px) translateY(0px) rotate(0deg);
+    -moz-transform: scale(1) translateX(0px) translateY(0px) rotate(0deg);
+    transform: scale(1) translateX(0px) translateY(0px) rotate(0deg);
+    opacity: 1;
+}
+/*user login*/
+.userInfo i {
+    font-size: 28px;
+    color: #838383;
+    position: absolute;
+    right: 33px;
+}
+.userInfo img.radius{
+    border: 2px #777 solid;
+    box-shadow:0 1px 3px rgba(0, 0, 0, 0.22);
+    -webkit-transition:.4s all ease-in-out;-moz-transition:.4s all ease-in-out;-o-transition:.4s all ease-in-out;transition:.4s all ease-in-out;
+}
+.userInfo img.radius:hover {
+    -webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);
+}
+
+/*slider height*/
+.slider .bd img {
+    height: 230px;
+}
+/*分享*/
+.Hui-share .Hui-iconfont {
+    font-size: 30px;
+}
+/*面板头部*/
+.tab-category a {
+    display: inline-block;
+    border-bottom: 3px solid #9E9E9E;
+    margin: 0 5px;
+    pointer-events: none;
+}
+.tab-category strong{
+	color: #fff;
+    background-color: #555555;
+    margin: -1px 0 5px 0;
+    display: inline-block;
+    padding: 4px 15px;
+    font-size: 14px;
+}
+/*tip*/
+.slideTxtBox li a {
+    line-height: 15px;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    font-size: 12px;
+}
+/*文章列表*/
+.index_arc li {
+    position: relative;
+    height: 110px;
+    margin-bottom: 15px;
+    padding: 15px 15px 15px 200px;
+    list-style: none;
+    background-color: #fff;
+    border: solid 1px #ddd;
+    box-shadow: 0 8px 18px rgba(0,0,0,0.06);
+	transition: all .2s ease-out;
+}
+.index_arc li:hover{
+	box-shadow: 0 8px 18px rgba(0,0,0,0.15);
+	transition: all .2s ease-out;
+	
+    border-bottom: 1px solid #5a98de;
+}
+
+/*.index_arc li.pageNav-wrap {
+	height: 20px;
+	margin: 0 0 40px;
+	padding: 0;
+	border: none;
+}*/
+
+.index_arc .no_pic {
+	padding: 15px;
+}
+.index_arc li .pic {
+    position: absolute;
+    left: 15px;
+    top: 15px;
+    height: 110px;
+    overflow: hidden;
+    line-height: 110px;
+    width: 165px;
+}
+.index_arc li .pic img {
+    vertical-align: middle;
+    width: 100%;
+    display: inline-block;
+    border: none;
+}
+.index_arc li .title {
+    line-height: 26px;
+    font-size: 0;
+    position: relative;
+    margin: 0;
+    padding: 0;
+}
+.index_arc li .title a {
+    max-width: 99%;
+    margin-right: 10px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    font-size: 16px;
+    line-height: 26px;
+}
+.index_arc li .title * {
+    display: inline-block;
+    vertical-align: top;
+}
+.index_arc li .date_hits {
+    position: relative;
+    line-height: 20px;
+    font-size: 12px;
+    color: #666;
+}
+.index_arc li .date_hits span {
+    padding-right: 15px;
+    height: 20px;
+    line-height: 20px;
+}
+.index_arc li .date_hits span a {
+    color: #009688;
+}
+.index_arc li .date_hits .hits {
+    position: absolute;
+    right: 50px;
+    top: 0;
+}
+.index_arc li .date_hits .commonts {
+    position: absolute;
+    right: 0;
+    top: 0;
+}
+.index_arc li .desc {
+    height: 48px;
+    line-height: 24px;
+    overflow: hidden;
+    margin-top: 8px;
+    color: #444;
+}
+
+/*面板body*/
+.tab-category-item {
+	border-top: 1px solid #EDEDED;
+	padding: 10px 10px 10px 15px;
+}
+/*面板主体 li*/
+.index_recd li {
+    line-height: 32px;
+    white-space: nowrap;
+    overflow: hidden;
+    list-style: decimal-leading-zero inside;
+    font-style: oblique;
+    font-size: 14px;
+}
+.index_recd li.index_recd_item {
+	list-style:none;
+}
+.index_recd li a {
+	color: #009688;
+    max-width: 68%;
+    margin-right: 5px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    font-size: 14px;
+    display: inline-block;
+    vertical-align: top;
+    font-style: normal;
+}
+.index_recd li .hits {
+    font-size: 12px;
+    color: #888;
+    display: inline-block;
+    vertical-align: top;
+    font-style: normal;
+}
+/*面板主体 span*/
+.tab-category-item>span {
+	margin-right: 30px;
+    display: inline-block;
+    font-size: 14px;
+    line-height: 32px;
+}
+/*最近访客*/
+.recent .item {
+    display: inline-block;
+    margin: 3px;
+}
+.recent .item img {
+    width: 40px;
+}
+
+/*导航二级菜单*/
+.nav-btn {
+	width: 42%;
+    margin: 5px;
+}
+
+
+/* about CSS Document */
+/*.aboutcon{background:url(../img/slider/aboutphoto.jpg) no-repeat bottom right; color:#696969}*/
+h1.t_nav { border-bottom: #337ab7 1px solid; font-size: 12px; font-weight: normal; line-height: 40px; height: 40px; }
+h1.t_nav a{width: 100px; display: block; text-align: center ; color: #fff; float:left}
+h1.t_nav span{float:right; color:#999}
+.n1 { background: #777; }
+.n2 { background: #9d9d9d; }
+/*.about{ width:75%;overflow: hidden; background: url(../img/slider/r_line.jpg) repeat-y right; line-height:22px; }*/
+.about h2{ font-size:22px; font-family: 'Architects Daughter', cursive; margin-bottom:20px}
+.about p{ margin-bottom:20px}
+.about_c,.about{margin:20px 0}
+.about ul{ width:90%}
+.about_c{ padding:10px 0 0 10px; color:#999; line-height:26px; }
+.about_c img{ margin:5px 0}
+.about_c span{ color:#19A566}
+a.blog_link{ color:#1CA368;}
+/*a.blog_link{ color:#1CA368; margin:0 20px}*/
+
+
+/*文章详情*/
+.w_main_left {
+    font: 12px "宋体", Arial, Helvetica, sans-serif;
+    color: #756F71;
+}
+.c_titile {
+    font-size: 22px;
+    text-align: center;
+    color: #333;
+	font-weight: bold;
+}
+.box_c {
+    border: #ccc 1px dashed;
+    text-align: center;
+    padding: 5px 0;
+    margin-right: 30px;
+    color: #999;
+}
+.box_c span {
+    margin: 0 10px;
+}
+.box_c span a {
+    color: #099;
+}
+ul {
+    list-style: none;
+}
+ul.infos {
+    overflow: hidden;
+    margin: 20px 30px 20px 0;
+    line-height: 28px;
+    font-size: 14px;
+    text-indent: 2em;
+    color: #666;
+}
+
+ul.infos p {
+    margin-bottom: 5px;
+}
+
+.keybq {
+    background: url(../img/tab.png) no-repeat 10px center #F8F8F8;
+    line-height: 30px;
+    height: 30px;
+    padding-left: 40px;
+    border: 1px solid #F0F0F0;
+}
+.keybq span {
+    color: #099;
+}
+.keybq .label{
+	margin-right: 10px;
+}
+.nextinfo {
+    margin: 20px 0;
+    line-height: 30px;
+    height: 30px;
+}
+.nextinfo .last{
+	width: 50%;
+    float: left;
+}
+
+.nextinfo .next{
+    width: 50%;
+    float: right;
+    text-align: right;
+}
+
+.nextinfo a:hover{
+	color: #337AB7;
+}
+
+
+
+@media screen and (max-width:640px) {
+    .slider .bd img { height: 130px;}/*slider height*/
+	.index_arc li{padding:10px 10px 10px 120px;height: 66px;margin-bottom:  10px;}
+	.index_arc li .title a{max-width: 95%;margin-right: 10px;overflow: hidden;text-overflow:clip;white-space: normal;font-size: 14px;line-height: 20px;height: 40px;}
+	.index_arc li .pic{left:10px;top:10px;width:100px;height: 66px;line-height: 66px}
+	.index_arc li .pic img{}
+	.index_arc li .date_hits{margin-top: 5px;}
+	.index_arc li .date_hits>span {display: none;}
+	/*.index_arc li .hits{display: none;}*/
+	.index_arc li .desc{display: none;}
+	.index_arc{margin-bottom: 15px;}
+	.index_arc li{line-height: 28px;}
+	.index_arc li.pageNav-wrap a{max-width: 100%;}
+	
+	.index_recd li a {max-width: 60%;}
+
+    /*评论头像*/
+    .avatar.size-L, .avatar.size-L img {
+        width: 30px;
+        height: 30px;
+    }
+    .comment-main {
+        margin-left: 40px;
+    }
+}
+@media screen and (max-width:320px) {
+    .slider .bd img { height: 100px;}
+}
+/*common  抖动*/
+.dou {
+    -webkit-animation: dou 0.5s .2s ease both;
+    -moz-animation: dou 0.5s .2s ease both;
+}
+
+@-webkit-keyframes dou {
+    0%,100% {
+        -webkit-transform: translateX(0);
+    }
+    10%,30%,50%,70%,90% {
+        -webkit-transform: translateX(-5px);
+    }
+    20%,40%,60%,80% {
+        -webkit-transform: translateX(5px);
+    }
+}
+
+@-moz-keyframes dou {
+    0%,100% {
+        -moz-transform: translateX(0);
+    }
+    10%,30%,50%,70%,90% {
+        -moz-transform: translateX(-5px);
+    }
+    20%,40%,60%,80% {
+        -moz-transform: translateX(5px);
+    }
+}
+
+.dou2 {
+    -webkit-animation: dou2 1s .2s ease both;
+    -moz-animation: dou2 1s .2s ease both;
+}
+
+@-webkit-keyframes dou2 {
+    0% {
+        opacity: 0;
+        -webkit-transform: translateY(20px)
+    }
+    100% {
+        opacity: 1;
+        -webkit-transform: translateY(0)
+    }
+}
+
+@-moz-keyframes dou2 {
+    0% {
+        opacity: 0;
+        -moz-transform: translateY(20px)
+    }
+    100% {
+        opacity: 1;
+        -moz-transform: translateY(0)
+    }
+}

+ 3066 - 0
src/main/webapp/static/css/icon.css

@@ -0,0 +1,3066 @@
+/*-------------------------------------------------------
+ All Rights Reserved, Copyright (C) 2013, Wuyeguo, Ltd.
+-------------------------------------------------------*/
+
+.icon-blank{ background:url('icons/blank.gif') no-repeat center center;}
+
+.icon-add{ background:url('icons/edit_add.png') no-repeat center center;}
+
+.icon-edit{ background:url('icons/pencil.png') no-repeat center center;}
+
+.icon-remove{ background:url('icons/edit_remove.png') no-repeat center center;}
+
+.icon-save{ background:url('icons/filesave.png') no-repeat center center;}
+
+.icon-cut{ background:url('icons/cut.png') no-repeat center center;}
+
+.icon-ok{ background:url('icons/ok.png') no-repeat center center;}
+
+.icon-no{ background:url('icons/no.png') no-repeat center center;}
+
+.icon-cancel{ background:url('icons/cancel.png') no-repeat center center;}
+
+.icon-reload{ background:url('icons/reload.png') no-repeat center center;}
+
+.icon-search{ background:url('icons/search.png') no-repeat center center;}
+
+.icon-print{ background:url('icons/print.png') no-repeat center center;}
+
+.icon-help{ background:url('icons/help.png') no-repeat center center;}
+
+.icon-undo{ background:url('icons/undo.png') no-repeat center center;}
+
+.icon-redo{ background:url('icons/redo.png') no-repeat center center;}
+
+.icon-back{ background:url('icons/back.png') no-repeat center center;}
+
+.icon-sum{ background:url('icons/sum.png') no-repeat center center;}
+
+.icon-tip{ background:url('icons/tip.png') no-repeat center center;}
+
+.icon-mini-add{ background:url('icons/mini_add.png') no-repeat center center;}
+
+.icon-mini-edit{ background:url('icons/mini_edit.png') no-repeat center center;}
+
+.icon-mini-refresh{ background:url('icons/mini_refresh.png') no-repeat center center;}
+
+.icon-accept { background:url('icons/accept.png') no-repeat center center;}
+
+.icon-add { background:url('icons/add.png') no-repeat center center;}
+
+.icon-add1 { background:url('icons/add1.png') no-repeat center center;}
+
+.icon-advancedsettings { background:url('icons/advancedsettings.png') no-repeat center center;}
+
+.icon-advancedsettings2 { background:url('icons/advancedsettings2.png') no-repeat center center;}
+
+.icon-anchor { background:url('icons/anchor.png') no-repeat center center;}
+
+.icon-application { background:url('icons/application.png') no-repeat center center;}
+
+.icon-application-add { background:url('icons/application_add.png') no-repeat center center;}
+
+.icon-application-cascade { background:url('icons/application_cascade.png') no-repeat center center;}
+
+.icon-application-delete { background:url('icons/application_delete.png') no-repeat center center;}
+
+.icon-application-double { background:url('icons/application_double.png') no-repeat center center;}
+
+.icon-application-edit { background:url('icons/application_edit.png') no-repeat center center;}
+
+.icon-application-error { background:url('icons/application_error.png') no-repeat center center;}
+
+.icon-application-form { background:url('icons/application_form.png') no-repeat center center;}
+
+.icon-application-form-add { background:url('icons/application_form_add.png') no-repeat center center;}
+
+.icon-application-form-delete { background:url('icons/application_form_delete.png') no-repeat center center;}
+
+.icon-application-form-edit { background:url('icons/application_form_edit.png') no-repeat center center;}
+
+.icon-application-form-magnify { background:url('icons/application_form_magnify.png') no-repeat center center;}
+
+.icon-application-get { background:url('icons/application_get.png') no-repeat center center;}
+
+.icon-application-go { background:url('icons/application_go.png') no-repeat center center;}
+
+.icon-application-home { background:url('icons/application_home.png') no-repeat center center;}
+
+.icon-application-key { background:url('icons/application_key.png') no-repeat center center;}
+
+.icon-application-lightning { background:url('icons/application_lightning.png') no-repeat center center;}
+
+.icon-application-link { background:url('icons/application_link.png') no-repeat center center;}
+
+.icon-application-osx { background:url('icons/application_osx.png') no-repeat center center;}
+
+.icon-application-osx-add { background:url('icons/application_osx_add.png') no-repeat center center;}
+
+.icon-application-osx-cascade { background:url('icons/application_osx_cascade.png') no-repeat center center;}
+
+.icon-application-osx-delete { background:url('icons/application_osx_delete.png') no-repeat center center;}
+
+.icon-application-osx-double { background:url('icons/application_osx_double.png') no-repeat center center;}
+
+.icon-application-osx-error { background:url('icons/application_osx_error.png') no-repeat center center;}
+
+.icon-application-osx-get { background:url('icons/application_osx_get.png') no-repeat center center;}
+
+.icon-application-osx-go { background:url('icons/application_osx_go.png') no-repeat center center;}
+
+.icon-application-osx-home { background:url('icons/application_osx_home.png') no-repeat center center;}
+
+.icon-application-osx-key { background:url('icons/application_osx_key.png') no-repeat center center;}
+
+.icon-application-osx-lightning { background:url('icons/application_osx_lightning.png') no-repeat center center;}
+
+.icon-application-osx-link { background:url('icons/application_osx_link.png') no-repeat center center;}
+
+.icon-application-osx-split { background:url('icons/application_osx_split.png') no-repeat center center;}
+
+.icon-application-osx-start { background:url('icons/application_osx_start.png') no-repeat center center;}
+
+.icon-application-osx-stop { background:url('icons/application_osx_stop.png') no-repeat center center;}
+
+.icon-application-osx-terminal { background:url('icons/application_osx_terminal.png') no-repeat center center;}
+
+.icon-application-put { background:url('icons/application_put.png') no-repeat center center;}
+
+.icon-application-side-boxes { background:url('icons/application_side_boxes.png') no-repeat center center;}
+
+.icon-application-side-contract { background:url('icons/application_side_contract.png') no-repeat center center;}
+
+.icon-application-side-expand { background:url('icons/application_side_expand.png') no-repeat center center;}
+
+.icon-application-side-list { background:url('icons/application_side_list.png') no-repeat center center;}
+
+.icon-application-side-tree { background:url('icons/application_side_tree.png') no-repeat center center;}
+
+.icon-application-split { background:url('icons/application_split.png') no-repeat center center;}
+
+.icon-application-start { background:url('icons/application_start.png') no-repeat center center;}
+
+.icon-application-stop { background:url('icons/application_stop.png') no-repeat center center;}
+
+.icon-application-tile-horizontal { background:url('icons/application_tile_horizontal.png') no-repeat center center;}
+
+.icon-application-tile-vertical { background:url('icons/application_tile_vertical.png') no-repeat center center;}
+
+.icon-application-view-columns { background:url('icons/application_view_columns.png') no-repeat center center;}
+
+.icon-application-view-detail { background:url('icons/application_view_detail.png') no-repeat center center;}
+
+.icon-application-view-gallery { background:url('icons/application_view_gallery.png') no-repeat center center;}
+
+.icon-application-view-icons { background:url('icons/application_view_icons.png') no-repeat center center;}
+
+.icon-application-view-list { background:url('icons/application_view_list.png') no-repeat center center;}
+
+.icon-application-view-tile { background:url('icons/application_view_tile.png') no-repeat center center;}
+
+.icon-application-xp { background:url('icons/application_xp.png') no-repeat center center;}
+
+.icon-application-xp-terminal { background:url('icons/application_xp_terminal.png') no-repeat center center;}
+
+.icon-arrow-branch { background:url('icons/arrow_branch.png') no-repeat center center;}
+
+.icon-arrow-divide { background:url('icons/arrow_divide.png') no-repeat center center;}
+
+.icon-arrow-down { background:url('icons/arrow_down.png') no-repeat center center;}
+
+.icon-arrow-ew { background:url('icons/arrow_ew.png') no-repeat center center;}
+
+.icon-arrow-in { background:url('icons/arrow_in.png') no-repeat center center;}
+
+.icon-arrow-inout { background:url('icons/arrow_inout.png') no-repeat center center;}
+
+.icon-arrow-in-longer { background:url('icons/arrow_in_longer.png') no-repeat center center;}
+
+.icon-arrow-join { background:url('icons/arrow_join.png') no-repeat center center;}
+
+.icon-arrow-left { background:url('icons/arrow_left.png') no-repeat center center;}
+
+.icon-arrow-merge { background:url('icons/arrow_merge.png') no-repeat center center;}
+
+.icon-arrow-ne { background:url('icons/arrow_ne.png') no-repeat center center;}
+
+.icon-arrow-ns { background:url('icons/arrow_ns.png') no-repeat center center;}
+
+.icon-arrow-nsew { background:url('icons/arrow_nsew.png') no-repeat center center;}
+
+.icon-arrow-nw { background:url('icons/arrow_nw.png') no-repeat center center;}
+
+.icon-arrow-nw-ne-sw-se { background:url('icons/arrow_nw_ne_sw_se.png') no-repeat center center;}
+
+.icon-arrow-nw-se { background:url('icons/arrow_nw_se.png') no-repeat center center;}
+
+.icon-arrow-out { background:url('icons/arrow_out.png') no-repeat center center;}
+
+.icon-arrow-out-longer { background:url('icons/arrow_out_longer.png') no-repeat center center;}
+
+.icon-arrow-redo { background:url('icons/arrow_redo.png') no-repeat center center;}
+
+.icon-arrow-refresh { background:url('icons/arrow_refresh.png') no-repeat center center;}
+
+.icon-arrow-refresh-small { background:url('icons/arrow_refresh_small.png') no-repeat center center;}
+
+.icon-arrow-right { background:url('icons/arrow_right.png') no-repeat center center;}
+
+.icon-arrow-right-16 { background:url('icons/arrow_right_16.png') no-repeat center center;}
+
+.icon-arrow-rotate-anticlockwise { background:url('icons/arrow_rotate_anticlockwise.png') no-repeat center center;}
+
+.icon-arrow-rotate-clockwise { background:url('icons/arrow_rotate_clockwise.png') no-repeat center center;}
+
+.icon-arrow-se { background:url('icons/arrow_se.png') no-repeat center center;}
+
+.icon-arrow-sw { background:url('icons/arrow_sw.png') no-repeat center center;}
+
+.icon-arrow-switch { background:url('icons/arrow_switch.png') no-repeat center center;}
+
+.icon-arrow-switch-bluegreen { background:url('icons/arrow_switch_bluegreen.png') no-repeat center center;}
+
+.icon-arrow-sw-ne { background:url('icons/arrow_sw_ne.png') no-repeat center center;}
+
+.icon-arrow-turn-left { background:url('icons/arrow_turn_left.png') no-repeat center center;}
+
+.icon-arrow-turn-right { background:url('icons/arrow_turn_right.png') no-repeat center center;}
+
+.icon-arrow-undo { background:url('icons/arrow_undo.png') no-repeat center center;}
+
+.icon-arrow-up { background:url('icons/arrow_up.png') no-repeat center center;}
+
+.icon-asterisk-orange { background:url('icons/asterisk_orange.png') no-repeat center center;}
+
+.icon-asterisk-red { background:url('icons/asterisk_red.png') no-repeat center center;}
+
+.icon-asterisk-yellow { background:url('icons/asterisk_yellow.png') no-repeat center center;}
+
+.icon-attach { background:url('icons/attach.png') no-repeat center center;}
+
+.icon-award-star-add { background:url('icons/award_star_add.png') no-repeat center center;}
+
+.icon-award-star-bronze-1 { background:url('icons/award_star_bronze_1.png') no-repeat center center;}
+
+.icon-award-star-bronze-2 { background:url('icons/award_star_bronze_2.png') no-repeat center center;}
+
+.icon-award-star-bronze-3 { background:url('icons/award_star_bronze_3.png') no-repeat center center;}
+
+.icon-award-star-delete { background:url('icons/award_star_delete.png') no-repeat center center;}
+
+.icon-award-star-gold-1 { background:url('icons/award_star_gold_1.png') no-repeat center center;}
+
+.icon-award-star-gold-2 { background:url('icons/award_star_gold_2.png') no-repeat center center;}
+
+.icon-award-star-gold-3 { background:url('icons/award_star_gold_3.png') no-repeat center center;}
+
+.icon-award-star-silver-1 { background:url('icons/award_star_silver_1.png') no-repeat center center;}
+
+.icon-award-star-silver-2 { background:url('icons/award_star_silver_2.png') no-repeat center center;}
+
+.icon-award-star-silver-3 { background:url('icons/award_star_silver_3.png') no-repeat center center;}
+
+.icon-basket { background:url('icons/basket.png') no-repeat center center;}
+
+.icon-basket-add { background:url('icons/basket_add.png') no-repeat center center;}
+
+.icon-basket-delete { background:url('icons/basket_delete.png') no-repeat center center;}
+
+.icon-basket-edit { background:url('icons/basket_edit.png') no-repeat center center;}
+
+.icon-basket-error { background:url('icons/basket_error.png') no-repeat center center;}
+
+.icon-basket-go { background:url('icons/basket_go.png') no-repeat center center;}
+
+.icon-basket-put { background:url('icons/basket_put.png') no-repeat center center;}
+
+.icon-basket-remove { background:url('icons/basket_remove.png') no-repeat center center;}
+
+.icon-bell { background:url('icons/bell.png') no-repeat center center;}
+
+.icon-bell-add { background:url('icons/bell_add.png') no-repeat center center;}
+
+.icon-bell-delete { background:url('icons/bell_delete.png') no-repeat center center;}
+
+.icon-bell-error { background:url('icons/bell_error.png') no-repeat center center;}
+
+.icon-bell-go { background:url('icons/bell_go.png') no-repeat center center;}
+
+.icon-bell-link { background:url('icons/bell_link.png') no-repeat center center;}
+
+.icon-bell-silver { background:url('icons/bell_silver.png') no-repeat center center;}
+
+.icon-bell-silver-start { background:url('icons/bell_silver_start.png') no-repeat center center;}
+
+.icon-bell-silver-stop { background:url('icons/bell_silver_stop.png') no-repeat center center;}
+
+.icon-bell-start { background:url('icons/bell_start.png') no-repeat center center;}
+
+.icon-bell-stop { background:url('icons/bell_stop.png') no-repeat center center;}
+
+.icon-bin { background:url('icons/bin.png') no-repeat center center;}
+
+.icon-bin-closed { background:url('icons/bin_closed.png') no-repeat center center;}
+
+.icon-bin-empty { background:url('icons/bin_empty.png') no-repeat center center;}
+
+.icon-bomb { background:url('icons/bomb.png') no-repeat center center;}
+
+.icon-book { background:url('icons/book.png') no-repeat center center;}
+
+.icon-bookmark { background:url('icons/bookmark.png') no-repeat center center;}
+
+.icon-bookmark-add { background:url('icons/bookmark_add.png') no-repeat center center;}
+
+.icon-bookmark-delete { background:url('icons/bookmark_delete.png') no-repeat center center;}
+
+.icon-bookmark-edit { background:url('icons/bookmark_edit.png') no-repeat center center;}
+
+.icon-bookmark-error { background:url('icons/bookmark_error.png') no-repeat center center;}
+
+.icon-bookmark-go { background:url('icons/bookmark_go.png') no-repeat center center;}
+
+.icon-book-add { background:url('icons/book_add.png') no-repeat center center;}
+
+.icon-book-addresses { background:url('icons/book_addresses.png') no-repeat center center;}
+
+.icon-book-addresses-add { background:url('icons/book_addresses_add.png') no-repeat center center;}
+
+.icon-book-addresses-delete { background:url('icons/book_addresses_delete.png') no-repeat center center;}
+
+.icon-book-addresses-edit { background:url('icons/book_addresses_edit.png') no-repeat center center;}
+
+.icon-book-addresses-error { background:url('icons/book_addresses_error.png') no-repeat center center;}
+
+.icon-book-addresses-key { background:url('icons/book_addresses_key.png') no-repeat center center;}
+
+.icon-book-delete { background:url('icons/book_delete.png') no-repeat center center;}
+
+.icon-book-edit { background:url('icons/book_edit.png') no-repeat center center;}
+
+.icon-book-error { background:url('icons/book_error.png') no-repeat center center;}
+
+.icon-book-go { background:url('icons/book_go.png') no-repeat center center;}
+
+.icon-book-key { background:url('icons/book_key.png') no-repeat center center;}
+
+.icon-book-link { background:url('icons/book_link.png') no-repeat center center;}
+
+.icon-book-magnify { background:url('icons/book_magnify.png') no-repeat center center;}
+
+.icon-book-next { background:url('icons/book_next.png') no-repeat center center;}
+
+.icon-book-open { background:url('icons/book_open.png') no-repeat center center;}
+
+.icon-book-open-mark { background:url('icons/book_open_mark.png') no-repeat center center;}
+
+.icon-book-previous { background:url('icons/book_previous.png') no-repeat center center;}
+
+.icon-book-red { background:url('icons/book_red.png') no-repeat center center;}
+
+.icon-book-tabs { background:url('icons/book_tabs.png') no-repeat center center;}
+
+.icon-border-all { background:url('icons/border_all.png') no-repeat center center;}
+
+.icon-border-bottom { background:url('icons/border_bottom.png') no-repeat center center;}
+
+.icon-border-draw { background:url('icons/border_draw.png') no-repeat center center;}
+
+.icon-border-inner { background:url('icons/border_inner.png') no-repeat center center;}
+
+.icon-border-inner-horizontal { background:url('icons/border_inner_horizontal.png') no-repeat center center;}
+
+.icon-border-inner-vertical { background:url('icons/border_inner_vertical.png') no-repeat center center;}
+
+.icon-border-left { background:url('icons/border_left.png') no-repeat center center;}
+
+.icon-border-none { background:url('icons/border_none.png') no-repeat center center;}
+
+.icon-border-outer { background:url('icons/border_outer.png') no-repeat center center;}
+
+.icon-border-right { background:url('icons/border_right.png') no-repeat center center;}
+
+.icon-border-top { background:url('icons/border_top.png') no-repeat center center;}
+
+.icon-box { background:url('icons/box.png') no-repeat center center;}
+
+.icon-box-error { background:url('icons/box_error.png') no-repeat center center;}
+
+.icon-box-picture { background:url('icons/box_picture.png') no-repeat center center;}
+
+.icon-box-world { background:url('icons/box_world.png') no-repeat center center;}
+
+.icon-brick { background:url('icons/brick.png') no-repeat center center;}
+
+.icon-bricks { background:url('icons/bricks.png') no-repeat center center;}
+
+.icon-brick-add { background:url('icons/brick_add.png') no-repeat center center;}
+
+.icon-brick-delete { background:url('icons/brick_delete.png') no-repeat center center;}
+
+.icon-brick-edit { background:url('icons/brick_edit.png') no-repeat center center;}
+
+.icon-brick-error { background:url('icons/brick_error.png') no-repeat center center;}
+
+.icon-brick-go { background:url('icons/brick_go.png') no-repeat center center;}
+
+.icon-brick-link { background:url('icons/brick_link.png') no-repeat center center;}
+
+.icon-brick-magnify { background:url('icons/brick_magnify.png') no-repeat center center;}
+
+.icon-briefcase { background:url('icons/briefcase.png') no-repeat center center;}
+
+.icon-bug { background:url('icons/bug.png') no-repeat center center;}
+
+.icon-bug-add { background:url('icons/bug_add.png') no-repeat center center;}
+
+.icon-bug-delete { background:url('icons/bug_delete.png') no-repeat center center;}
+
+.icon-bug-edit { background:url('icons/bug_edit.png') no-repeat center center;}
+
+.icon-bug-error { background:url('icons/bug_error.png') no-repeat center center;}
+
+.icon-bug-fix { background:url('icons/bug_fix.png') no-repeat center center;}
+
+.icon-bug-go { background:url('icons/bug_go.png') no-repeat center center;}
+
+.icon-bug-link { background:url('icons/bug_link.png') no-repeat center center;}
+
+.icon-bug-magnify { background:url('icons/bug_magnify.png') no-repeat center center;}
+
+.icon-build { background:url('icons/build.png') no-repeat center center;}
+
+.icon-building { background:url('icons/building.png') no-repeat center center;}
+
+.icon-building-add { background:url('icons/building_add.png') no-repeat center center;}
+
+.icon-building-delete { background:url('icons/building_delete.png') no-repeat center center;}
+
+.icon-building-edit { background:url('icons/building_edit.png') no-repeat center center;}
+
+.icon-building-error { background:url('icons/building_error.png') no-repeat center center;}
+
+.icon-building-go { background:url('icons/building_go.png') no-repeat center center;}
+
+.icon-building-key { background:url('icons/building_key.png') no-repeat center center;}
+
+.icon-building-link { background:url('icons/building_link.png') no-repeat center center;}
+
+.icon-build-cancel { background:url('icons/build_cancel.png') no-repeat center center;}
+
+.icon-bullet-add { background:url('icons/bullet_add.png') no-repeat center center;}
+
+.icon-bullet-arrow-bottom { background:url('icons/bullet_arrow_bottom.png') no-repeat center center;}
+
+.icon-bullet-arrow-down { background:url('icons/bullet_arrow_down.png') no-repeat center center;}
+
+.icon-bullet-arrow-top { background:url('icons/bullet_arrow_top.png') no-repeat center center;}
+
+.icon-bullet-arrow-up { background:url('icons/bullet_arrow_up.png') no-repeat center center;}
+
+.icon-bullet-black { background:url('icons/bullet_black.png') no-repeat center center;}
+
+.icon-bullet-blue { background:url('icons/bullet_blue.png') no-repeat center center;}
+
+.icon-bullet-connect { background:url('icons/bullet_connect.png') no-repeat center center;}
+
+.icon-bullet-cross { background:url('icons/bullet_cross.png') no-repeat center center;}
+
+.icon-bullet-database { background:url('icons/bullet_database.png') no-repeat center center;}
+
+.icon-bullet-database-yellow { background:url('icons/bullet_database_yellow.png') no-repeat center center;}
+
+.icon-bullet-delete { background:url('icons/bullet_delete.png') no-repeat center center;}
+
+.icon-bullet-disk { background:url('icons/bullet_disk.png') no-repeat center center;}
+
+.icon-bullet-earth { background:url('icons/bullet_earth.png') no-repeat center center;}
+
+.icon-bullet-edit { background:url('icons/bullet_edit.png') no-repeat center center;}
+
+.icon-bullet-eject { background:url('icons/bullet_eject.png') no-repeat center center;}
+
+.icon-bullet-error { background:url('icons/bullet_error.png') no-repeat center center;}
+
+.icon-bullet-feed { background:url('icons/bullet_feed.png') no-repeat center center;}
+
+.icon-bullet-get { background:url('icons/bullet_get.png') no-repeat center center;}
+
+.icon-bullet-go { background:url('icons/bullet_go.png') no-repeat center center;}
+
+.icon-bullet-green { background:url('icons/bullet_green.png') no-repeat center center;}
+
+.icon-bullet-home { background:url('icons/bullet_home.png') no-repeat center center;}
+
+.icon-bullet-key { background:url('icons/bullet_key.png') no-repeat center center;}
+
+.icon-bullet-left { background:url('icons/bullet_left.png') no-repeat center center;}
+
+.icon-bullet-lightning { background:url('icons/bullet_lightning.png') no-repeat center center;}
+
+.icon-bullet-magnify { background:url('icons/bullet_magnify.png') no-repeat center center;}
+
+.icon-bullet-minus { background:url('icons/bullet_minus.png') no-repeat center center;}
+
+.icon-bullet-orange { background:url('icons/bullet_orange.png') no-repeat center center;}
+
+.icon-bullet-page-white { background:url('icons/bullet_page_white.png') no-repeat center center;}
+
+.icon-bullet-picture { background:url('icons/bullet_picture.png') no-repeat center center;}
+
+.icon-bullet-pink { background:url('icons/bullet_pink.png') no-repeat center center;}
+
+.icon-bullet-plus { background:url('icons/bullet_plus.png') no-repeat center center;}
+
+.icon-bullet-purple { background:url('icons/bullet_purple.png') no-repeat center center;}
+
+.icon-bullet-red { background:url('icons/bullet_red.png') no-repeat center center;}
+
+.icon-bullet-right { background:url('icons/bullet_right.png') no-repeat center center;}
+
+.icon-bullet-shape { background:url('icons/bullet_shape.png') no-repeat center center;}
+
+.icon-bullet-sparkle { background:url('icons/bullet_sparkle.png') no-repeat center center;}
+
+.icon-bullet-star { background:url('icons/bullet_star.png') no-repeat center center;}
+
+.icon-bullet-start { background:url('icons/bullet_start.png') no-repeat center center;}
+
+.icon-bullet-stop { background:url('icons/bullet_stop.png') no-repeat center center;}
+
+.icon-bullet-stop-alt { background:url('icons/bullet_stop_alt.png') no-repeat center center;}
+
+.icon-bullet-tick { background:url('icons/bullet_tick.png') no-repeat center center;}
+
+.icon-bullet-toggle-minus { background:url('icons/bullet_toggle_minus.png') no-repeat center center;}
+
+.icon-bullet-toggle-plus { background:url('icons/bullet_toggle_plus.png') no-repeat center center;}
+
+.icon-bullet-white { background:url('icons/bullet_white.png') no-repeat center center;}
+
+.icon-bullet-wrench { background:url('icons/bullet_wrench.png') no-repeat center center;}
+
+.icon-bullet-wrench-red { background:url('icons/bullet_wrench_red.png') no-repeat center center;}
+
+.icon-bullet-yellow { background:url('icons/bullet_yellow.png') no-repeat center center;}
+
+.icon-button { background:url('icons/button.png') no-repeat center center;}
+
+.icon-cake { background:url('icons/cake.png') no-repeat center center;}
+
+.icon-cake-out { background:url('icons/cake_out.png') no-repeat center center;}
+
+.icon-cake-sliced { background:url('icons/cake_sliced.png') no-repeat center center;}
+
+.icon-calculator { background:url('icons/calculator.png') no-repeat center center;}
+
+.icon-calculator-add { background:url('icons/calculator_add.png') no-repeat center center;}
+
+.icon-calculator-delete { background:url('icons/calculator_delete.png') no-repeat center center;}
+
+.icon-calculator-edit { background:url('icons/calculator_edit.png') no-repeat center center;}
+
+.icon-calculator-error { background:url('icons/calculator_error.png') no-repeat center center;}
+
+.icon-calculator-link { background:url('icons/calculator_link.png') no-repeat center center;}
+
+.icon-calendar { background:url('icons/calendar.png') no-repeat center center;}
+
+.icon-calendar-add { background:url('icons/calendar_add.png') no-repeat center center;}
+
+.icon-calendar-delete { background:url('icons/calendar_delete.png') no-repeat center center;}
+
+.icon-calendar-edit { background:url('icons/calendar_edit.png') no-repeat center center;}
+
+.icon-calendar-link { background:url('icons/calendar_link.png') no-repeat center center;}
+
+.icon-calendar-select-day { background:url('icons/calendar_select_day.png') no-repeat center center;}
+
+.icon-calendar-select-none { background:url('icons/calendar_select_none.png') no-repeat center center;}
+
+.icon-calendar-select-week { background:url('icons/calendar_select_week.png') no-repeat center center;}
+
+.icon-calendar-star { background:url('icons/calendar_star.png') no-repeat center center;}
+
+.icon-calendar-view-day { background:url('icons/calendar_view_day.png') no-repeat center center;}
+
+.icon-calendar-view-month { background:url('icons/calendar_view_month.png') no-repeat center center;}
+
+.icon-calendar-view-week { background:url('icons/calendar_view_week.png') no-repeat center center;}
+
+.icon-camera { background:url('icons/camera.png') no-repeat center center;}
+
+.icon-camera-add { background:url('icons/camera_add.png') no-repeat center center;}
+
+.icon-camera-connect { background:url('icons/camera_connect.png') no-repeat center center;}
+
+.icon-camera-delete { background:url('icons/camera_delete.png') no-repeat center center;}
+
+.icon-camera-edit { background:url('icons/camera_edit.png') no-repeat center center;}
+
+.icon-camera-error { background:url('icons/camera_error.png') no-repeat center center;}
+
+.icon-camera-go { background:url('icons/camera_go.png') no-repeat center center;}
+
+.icon-camera-link { background:url('icons/camera_link.png') no-repeat center center;}
+
+.icon-camera-magnify { background:url('icons/camera_magnify.png') no-repeat center center;}
+
+.icon-camera-picture { background:url('icons/camera_picture.png') no-repeat center center;}
+
+.icon-camera-small { background:url('icons/camera_small.png') no-repeat center center;}
+
+.icon-camera-start { background:url('icons/camera_start.png') no-repeat center center;}
+
+.icon-camera-stop { background:url('icons/camera_stop.png') no-repeat center center;}
+
+.icon-cancel { background:url('icons/cancel.png') no-repeat center center;}
+
+.icon-car { background:url('icons/car.png') no-repeat center center;}
+
+.icon-cart { background:url('icons/cart.png') no-repeat center center;}
+
+.icon-cart-add { background:url('icons/cart_add.png') no-repeat center center;}
+
+.icon-cart-delete { background:url('icons/cart_delete.png') no-repeat center center;}
+
+.icon-cart-edit { background:url('icons/cart_edit.png') no-repeat center center;}
+
+.icon-cart-error { background:url('icons/cart_error.png') no-repeat center center;}
+
+.icon-cart-full { background:url('icons/cart_full.png') no-repeat center center;}
+
+.icon-cart-go { background:url('icons/cart_go.png') no-repeat center center;}
+
+.icon-cart-magnify { background:url('icons/cart_magnify.png') no-repeat center center;}
+
+.icon-cart-put { background:url('icons/cart_put.png') no-repeat center center;}
+
+.icon-cart-remove { background:url('icons/cart_remove.png') no-repeat center center;}
+
+.icon-car-add { background:url('icons/car_add.png') no-repeat center center;}
+
+.icon-car-delete { background:url('icons/car_delete.png') no-repeat center center;}
+
+.icon-car-error { background:url('icons/car_error.png') no-repeat center center;}
+
+.icon-car-red { background:url('icons/car_red.png') no-repeat center center;}
+
+.icon-car-start { background:url('icons/car_start.png') no-repeat center center;}
+
+.icon-car-stop { background:url('icons/car_stop.png') no-repeat center center;}
+
+.icon-cd { background:url('icons/cd.png') no-repeat center center;}
+
+.icon-cdr { background:url('icons/cdr.png') no-repeat center center;}
+
+.icon-cdr-add { background:url('icons/cdr_add.png') no-repeat center center;}
+
+.icon-cdr-burn { background:url('icons/cdr_burn.png') no-repeat center center;}
+
+.icon-cdr-cross { background:url('icons/cdr_cross.png') no-repeat center center;}
+
+.icon-cdr-delete { background:url('icons/cdr_delete.png') no-repeat center center;}
+
+.icon-cdr-edit { background:url('icons/cdr_edit.png') no-repeat center center;}
+
+.icon-cdr-eject { background:url('icons/cdr_eject.png') no-repeat center center;}
+
+.icon-cdr-error { background:url('icons/cdr_error.png') no-repeat center center;}
+
+.icon-cdr-go { background:url('icons/cdr_go.png') no-repeat center center;}
+
+.icon-cdr-magnify { background:url('icons/cdr_magnify.png') no-repeat center center;}
+
+.icon-cdr-play { background:url('icons/cdr_play.png') no-repeat center center;}
+
+.icon-cdr-start { background:url('icons/cdr_start.png') no-repeat center center;}
+
+.icon-cdr-stop { background:url('icons/cdr_stop.png') no-repeat center center;}
+
+.icon-cdr-stop-alt { background:url('icons/cdr_stop_alt.png') no-repeat center center;}
+
+.icon-cdr-tick { background:url('icons/cdr_tick.png') no-repeat center center;}
+
+.icon-cd-add { background:url('icons/cd_add.png') no-repeat center center;}
+
+.icon-cd-burn { background:url('icons/cd_burn.png') no-repeat center center;}
+
+.icon-cd-delete { background:url('icons/cd_delete.png') no-repeat center center;}
+
+.icon-cd-edit { background:url('icons/cd_edit.png') no-repeat center center;}
+
+.icon-cd-eject { background:url('icons/cd_eject.png') no-repeat center center;}
+
+.icon-cd-go { background:url('icons/cd_go.png') no-repeat center center;}
+
+.icon-cd-magnify { background:url('icons/cd_magnify.png') no-repeat center center;}
+
+.icon-cd-play { background:url('icons/cd_play.png') no-repeat center center;}
+
+.icon-cd-stop { background:url('icons/cd_stop.png') no-repeat center center;}
+
+.icon-cd-stop-alt { background:url('icons/cd_stop_alt.png') no-repeat center center;}
+
+.icon-cd-tick { background:url('icons/cd_tick.png') no-repeat center center;}
+
+.icon-chart-bar { background:url('icons/chart_bar.png') no-repeat center center;}
+
+.icon-chart-bar-add { background:url('icons/chart_bar_add.png') no-repeat center center;}
+
+.icon-chart-bar-delete { background:url('icons/chart_bar_delete.png') no-repeat center center;}
+
+.icon-chart-bar-edit { background:url('icons/chart_bar_edit.png') no-repeat center center;}
+
+.icon-chart-bar-error { background:url('icons/chart_bar_error.png') no-repeat center center;}
+
+.icon-chart-bar-link { background:url('icons/chart_bar_link.png') no-repeat center center;}
+
+.icon-chart-curve { background:url('icons/chart_curve.png') no-repeat center center;}
+
+.icon-chart-curve-add { background:url('icons/chart_curve_add.png') no-repeat center center;}
+
+.icon-chart-curve-delete { background:url('icons/chart_curve_delete.png') no-repeat center center;}
+
+.icon-chart-curve-edit { background:url('icons/chart_curve_edit.png') no-repeat center center;}
+
+.icon-chart-curve-error { background:url('icons/chart_curve_error.png') no-repeat center center;}
+
+.icon-chart-curve-go { background:url('icons/chart_curve_go.png') no-repeat center center;}
+
+.icon-chart-curve-link { background:url('icons/chart_curve_link.png') no-repeat center center;}
+
+.icon-chart-line { background:url('icons/chart_line.png') no-repeat center center;}
+
+.icon-chart-line-add { background:url('icons/chart_line_add.png') no-repeat center center;}
+
+.icon-chart-line-delete { background:url('icons/chart_line_delete.png') no-repeat center center;}
+
+.icon-chart-line-edit { background:url('icons/chart_line_edit.png') no-repeat center center;}
+
+.icon-chart-line-error { background:url('icons/chart_line_error.png') no-repeat center center;}
+
+.icon-chart-line-link { background:url('icons/chart_line_link.png') no-repeat center center;}
+
+.icon-chart-organisation { background:url('icons/chart_organisation.png') no-repeat center center;}
+
+.icon-chart-organisation-add { background:url('icons/chart_organisation_add.png') no-repeat center center;}
+
+.icon-chart-organisation-delete { background:url('icons/chart_organisation_delete.png') no-repeat center center;}
+
+.icon-chart-org-inverted { background:url('icons/chart_org_inverted.png') no-repeat center center;}
+
+.icon-chart-pie { background:url('icons/chart_pie.png') no-repeat center center;}
+
+.icon-chart-pie-add { background:url('icons/chart_pie_add.png') no-repeat center center;}
+
+.icon-chart-pie-delete { background:url('icons/chart_pie_delete.png') no-repeat center center;}
+
+.icon-chart-pie-edit { background:url('icons/chart_pie_edit.png') no-repeat center center;}
+
+.icon-chart-pie-error { background:url('icons/chart_pie_error.png') no-repeat center center;}
+
+.icon-chart-pie-lightning { background:url('icons/chart_pie_lightning.png') no-repeat center center;}
+
+.icon-chart-pie-link { background:url('icons/chart_pie_link.png') no-repeat center center;}
+
+.icon-check-error { background:url('icons/check_error.png') no-repeat center center;}
+
+.icon-chk-checked { background:url('icons/chk_checked.gif') no-repeat center center;}
+
+.icon-chk-unchecked { background:url('icons/chk_unchecked.gif') no-repeat center center;}
+
+.icon-clipboard { background:url('icons/clipboard.png') no-repeat center center;}
+
+.icon-clock { background:url('icons/clock.png') no-repeat center center;}
+
+.icon-clock-add { background:url('icons/clock_add.png') no-repeat center center;}
+
+.icon-clock-delete { background:url('icons/clock_delete.png') no-repeat center center;}
+
+.icon-clock-edit { background:url('icons/clock_edit.png') no-repeat center center;}
+
+.icon-clock-error { background:url('icons/clock_error.png') no-repeat center center;}
+
+.icon-clock-go { background:url('icons/clock_go.png') no-repeat center center;}
+
+.icon-clock-link { background:url('icons/clock_link.png') no-repeat center center;}
+
+.icon-clock-pause { background:url('icons/clock_pause.png') no-repeat center center;}
+
+.icon-clock-play { background:url('icons/clock_play.png') no-repeat center center;}
+
+.icon-clock-red { background:url('icons/clock_red.png') no-repeat center center;}
+
+.icon-clock-start { background:url('icons/clock_start.png') no-repeat center center;}
+
+.icon-clock-stop { background:url('icons/clock_stop.png') no-repeat center center;}
+
+.icon-cmy { background:url('icons/cmy.png') no-repeat center center;}
+
+.icon-cog { background:url('icons/cog.png') no-repeat center center;}
+
+.icon-cog-add { background:url('icons/cog_add.png') no-repeat center center;}
+
+.icon-cog-delete { background:url('icons/cog_delete.png') no-repeat center center;}
+
+.icon-cog-edit { background:url('icons/cog_edit.png') no-repeat center center;}
+
+.icon-cog-error { background:url('icons/cog_error.png') no-repeat center center;}
+
+.icon-cog-go { background:url('icons/cog_go.png') no-repeat center center;}
+
+.icon-cog-start { background:url('icons/cog_start.png') no-repeat center center;}
+
+.icon-cog-stop { background:url('icons/cog_stop.png') no-repeat center center;}
+
+.icon-coins { background:url('icons/coins.png') no-repeat center center;}
+
+.icon-coins-add { background:url('icons/coins_add.png') no-repeat center center;}
+
+.icon-coins-delete { background:url('icons/coins_delete.png') no-repeat center center;}
+
+.icon-collapse-all { background:url('icons/collapse-all.gif') no-repeat center center;}
+
+.icon-color { background:url('icons/color.png') no-repeat center center;}
+
+.icon-color-swatch { background:url('icons/color_swatch.png') no-repeat center center;}
+
+.icon-color-wheel { background:url('icons/color_wheel.png') no-repeat center center;}
+
+.icon-comment { background:url('icons/comment.png') no-repeat center center;}
+
+.icon-comments { background:url('icons/comments.png') no-repeat center center;}
+
+.icon-comments-add { background:url('icons/comments_add.png') no-repeat center center;}
+
+.icon-comments-delete { background:url('icons/comments_delete.png') no-repeat center center;}
+
+.icon-comment-add { background:url('icons/comment_add.png') no-repeat center center;}
+
+.icon-comment-delete { background:url('icons/comment_delete.png') no-repeat center center;}
+
+.icon-comment-dull { background:url('icons/comment_dull.png') no-repeat center center;}
+
+.icon-comment-edit { background:url('icons/comment_edit.png') no-repeat center center;}
+
+.icon-comment-play { background:url('icons/comment_play.png') no-repeat center center;}
+
+.icon-comment-record { background:url('icons/comment_record.png') no-repeat center center;}
+
+.icon-compass { background:url('icons/compass.png') no-repeat center center;}
+
+.icon-compress { background:url('icons/compress.png') no-repeat center center;}
+
+.icon-computer { background:url('icons/computer.png') no-repeat center center;}
+
+.icon-computer-add { background:url('icons/computer_add.png') no-repeat center center;}
+
+.icon-computer-connect { background:url('icons/computer_connect.png') no-repeat center center;}
+
+.icon-computer-delete { background:url('icons/computer_delete.png') no-repeat center center;}
+
+.icon-computer-edit { background:url('icons/computer_edit.png') no-repeat center center;}
+
+.icon-computer-error { background:url('icons/computer_error.png') no-repeat center center;}
+
+.icon-computer-go { background:url('icons/computer_go.png') no-repeat center center;}
+
+.icon-computer-key { background:url('icons/computer_key.png') no-repeat center center;}
+
+.icon-computer-link { background:url('icons/computer_link.png') no-repeat center center;}
+
+.icon-computer-magnify { background:url('icons/computer_magnify.png') no-repeat center center;}
+
+.icon-computer-off { background:url('icons/computer_off.png') no-repeat center center;}
+
+.icon-computer-start { background:url('icons/computer_start.png') no-repeat center center;}
+
+.icon-computer-stop { background:url('icons/computer_stop.png') no-repeat center center;}
+
+.icon-computer-wrench { background:url('icons/computer_wrench.png') no-repeat center center;}
+
+.icon-connect { background:url('icons/connect.png') no-repeat center center;}
+
+.icon-contrast { background:url('icons/contrast.png') no-repeat center center;}
+
+.icon-contrast-decrease { background:url('icons/contrast_decrease.png') no-repeat center center;}
+
+.icon-contrast-high { background:url('icons/contrast_high.png') no-repeat center center;}
+
+.icon-contrast-increase { background:url('icons/contrast_increase.png') no-repeat center center;}
+
+.icon-contrast-low { background:url('icons/contrast_low.png') no-repeat center center;}
+
+.icon-controller { background:url('icons/controller.png') no-repeat center center;}
+
+.icon-controller-add { background:url('icons/controller_add.png') no-repeat center center;}
+
+.icon-controller-delete { background:url('icons/controller_delete.png') no-repeat center center;}
+
+.icon-controller-error { background:url('icons/controller_error.png') no-repeat center center;}
+
+.icon-control-add { background:url('icons/control_add.png') no-repeat center center;}
+
+.icon-control-add-blue { background:url('icons/control_add_blue.png') no-repeat center center;}
+
+.icon-control-blank { background:url('icons/control_blank.png') no-repeat center center;}
+
+.icon-control-blank-blue { background:url('icons/control_blank_blue.png') no-repeat center center;}
+
+.icon-control-eject { background:url('icons/control_eject.png') no-repeat center center;}
+
+.icon-control-eject-blue { background:url('icons/control_eject_blue.png') no-repeat center center;}
+
+.icon-control-end { background:url('icons/control_end.png') no-repeat center center;}
+
+.icon-control-end-blue { background:url('icons/control_end_blue.png') no-repeat center center;}
+
+.icon-control-equalizer { background:url('icons/control_equalizer.png') no-repeat center center;}
+
+.icon-control-equalizer-blue { background:url('icons/control_equalizer_blue.png') no-repeat center center;}
+
+.icon-control-fastforward { background:url('icons/control_fastforward.png') no-repeat center center;}
+
+.icon-control-fastforward-blue { background:url('icons/control_fastforward_blue.png') no-repeat center center;}
+
+.icon-control-pause { background:url('icons/control_pause.png') no-repeat center center;}
+
+.icon-control-pause-blue { background:url('icons/control_pause_blue.png') no-repeat center center;}
+
+.icon-control-play { background:url('icons/control_play.png') no-repeat center center;}
+
+.icon-control-play-blue { background:url('icons/control_play_blue.png') no-repeat center center;}
+
+.icon-control-power { background:url('icons/control_power.png') no-repeat center center;}
+
+.icon-control-power-blue { background:url('icons/control_power_blue.png') no-repeat center center;}
+
+.icon-control-record { background:url('icons/control_record.png') no-repeat center center;}
+
+.icon-control-record-blue { background:url('icons/control_record_blue.png') no-repeat center center;}
+
+.icon-control-remove { background:url('icons/control_remove.png') no-repeat center center;}
+
+.icon-control-remove-blue { background:url('icons/control_remove_blue.png') no-repeat center center;}
+
+.icon-control-repeat { background:url('icons/control_repeat.png') no-repeat center center;}
+
+.icon-control-repeat-blue { background:url('icons/control_repeat_blue.png') no-repeat center center;}
+
+.icon-control-rewind { background:url('icons/control_rewind.png') no-repeat center center;}
+
+.icon-control-rewind-blue { background:url('icons/control_rewind_blue.png') no-repeat center center;}
+
+.icon-control-start { background:url('icons/control_start.png') no-repeat center center;}
+
+.icon-control-start-blue { background:url('icons/control_start_blue.png') no-repeat center center;}
+
+.icon-control-stop { background:url('icons/control_stop.png') no-repeat center center;}
+
+.icon-control-stop-blue { background:url('icons/control_stop_blue.png') no-repeat center center;}
+
+.icon-creditcards { background:url('icons/creditcards.png') no-repeat center center;}
+
+.icon-cross { background:url('icons/cross.png') no-repeat center center;}
+
+.icon-cross-octagon { background:url('icons/cross_octagon.png') no-repeat center center;}
+
+.icon-css { background:url('icons/css.png') no-repeat center center;}
+
+.icon-css-add { background:url('icons/css_add.png') no-repeat center center;}
+
+.icon-css-delete { background:url('icons/css_delete.png') no-repeat center center;}
+
+.icon-css-error { background:url('icons/css_error.png') no-repeat center center;}
+
+.icon-css-go { background:url('icons/css_go.png') no-repeat center center;}
+
+.icon-css-valid { background:url('icons/css_valid.png') no-repeat center center;}
+
+.icon-cup { background:url('icons/cup.png') no-repeat center center;}
+
+.icon-cup-add { background:url('icons/cup_add.png') no-repeat center center;}
+
+.icon-cup-black { background:url('icons/cup_black.png') no-repeat center center;}
+
+.icon-cup-delete { background:url('icons/cup_delete.png') no-repeat center center;}
+
+.icon-cup-edit { background:url('icons/cup_edit.png') no-repeat center center;}
+
+.icon-cup-error { background:url('icons/cup_error.png') no-repeat center center;}
+
+.icon-cup-go { background:url('icons/cup_go.png') no-repeat center center;}
+
+.icon-cup-green { background:url('icons/cup_green.png') no-repeat center center;}
+
+.icon-cup-key { background:url('icons/cup_key.png') no-repeat center center;}
+
+.icon-cup-link { background:url('icons/cup_link.png') no-repeat center center;}
+
+.icon-cup-tea { background:url('icons/cup_tea.png') no-repeat center center;}
+
+.icon-cursor { background:url('icons/cursor.png') no-repeat center center;}
+
+.icon-cursor-small { background:url('icons/cursor_small.png') no-repeat center center;}
+
+.icon-cut { background:url('icons/cut.png') no-repeat center center;}
+
+.icon-cut-red { background:url('icons/cut_red.png') no-repeat center center;}
+
+.icon-database { background:url('icons/database.png') no-repeat center center;}
+
+.icon-database-add { background:url('icons/database_add.png') no-repeat center center;}
+
+.icon-database-connect { background:url('icons/database_connect.png') no-repeat center center;}
+
+.icon-database-copy { background:url('icons/database_copy.png') no-repeat center center;}
+
+.icon-database-delete { background:url('icons/database_delete.png') no-repeat center center;}
+
+.icon-database-edit { background:url('icons/database_edit.png') no-repeat center center;}
+
+.icon-database-error { background:url('icons/database_error.png') no-repeat center center;}
+
+.icon-database-gear { background:url('icons/database_gear.png') no-repeat center center;}
+
+.icon-database-go { background:url('icons/database_go.png') no-repeat center center;}
+
+.icon-database-key { background:url('icons/database_key.png') no-repeat center center;}
+
+.icon-database-lightning { background:url('icons/database_lightning.png') no-repeat center center;}
+
+.icon-database-link { background:url('icons/database_link.png') no-repeat center center;}
+
+.icon-database-refresh { background:url('icons/database_refresh.png') no-repeat center center;}
+
+.icon-database-save { background:url('icons/database_save.png') no-repeat center center;}
+
+.icon-database-start { background:url('icons/database_start.png') no-repeat center center;}
+
+.icon-database-stop { background:url('icons/database_stop.png') no-repeat center center;}
+
+.icon-database-table { background:url('icons/database_table.png') no-repeat center center;}
+
+.icon-database-wrench { background:url('icons/database_wrench.png') no-repeat center center;}
+
+.icon-database-yellow { background:url('icons/database_yellow.png') no-repeat center center;}
+
+.icon-database-yellow-start { background:url('icons/database_yellow_start.png') no-repeat center center;}
+
+.icon-database-yellow-stop { background:url('icons/database_yellow_stop.png') no-repeat center center;}
+
+.icon-date { background:url('icons/date.png') no-repeat center center;}
+
+.icon-date-add { background:url('icons/date_add.png') no-repeat center center;}
+
+.icon-date-delete { background:url('icons/date_delete.png') no-repeat center center;}
+
+.icon-date-edit { background:url('icons/date_edit.png') no-repeat center center;}
+
+.icon-date-error { background:url('icons/date_error.png') no-repeat center center;}
+
+.icon-date-go { background:url('icons/date_go.png') no-repeat center center;}
+
+.icon-date-link { background:url('icons/date_link.png') no-repeat center center;}
+
+.icon-date-magnify { background:url('icons/date_magnify.png') no-repeat center center;}
+
+.icon-date-next { background:url('icons/date_next.png') no-repeat center center;}
+
+.icon-date-previous { background:url('icons/date_previous.png') no-repeat center center;}
+
+.icon-decline { background:url('icons/decline.png') no-repeat center center;}
+
+.icon-delete { background:url('icons/delete.gif') no-repeat center center;}
+
+.icon-delete { background:url('icons/delete.png') no-repeat center center;}
+
+.icon-delete3 { background:url('icons/delete3.png') no-repeat center center;}
+
+.icon-DeleteRed { background:url('icons/DeleteRed.png') no-repeat center center;}
+
+.icon-device-stylus { background:url('icons/device_stylus.png') no-repeat center center;}
+
+.icon-disconnect { background:url('icons/disconnect.png') no-repeat center center;}
+
+.icon-disk { background:url('icons/disk.png') no-repeat center center;}
+
+.icon-disk-black { background:url('icons/disk_black.png') no-repeat center center;}
+
+.icon-disk-black-error { background:url('icons/disk_black_error.png') no-repeat center center;}
+
+.icon-disk-black-magnify { background:url('icons/disk_black_magnify.png') no-repeat center center;}
+
+.icon-disk-download { background:url('icons/disk_download.png') no-repeat center center;}
+
+.icon-disk-edit { background:url('icons/disk_edit.png') no-repeat center center;}
+
+.icon-disk-error { background:url('icons/disk_error.png') no-repeat center center;}
+
+.icon-disk-magnify { background:url('icons/disk_magnify.png') no-repeat center center;}
+
+.icon-disk-multiple { background:url('icons/disk_multiple.png') no-repeat center center;}
+
+.icon-disk-upload { background:url('icons/disk_upload.png') no-repeat center center;}
+
+.icon-door { background:url('icons/door.png') no-repeat center center;}
+
+.icon-door-error { background:url('icons/door_error.png') no-repeat center center;}
+
+.icon-door-in { background:url('icons/door_in.png') no-repeat center center;}
+
+.icon-door-open { background:url('icons/door_open.png') no-repeat center center;}
+
+.icon-door-out { background:url('icons/door_out.png') no-repeat center center;}
+
+.icon-download { background:url('icons/download.gif') no-repeat center center;}
+
+.icon-download { background:url('icons/download.png') no-repeat center center;}
+
+.icon-drink { background:url('icons/drink.png') no-repeat center center;}
+
+.icon-drink-empty { background:url('icons/drink_empty.png') no-repeat center center;}
+
+.icon-drink-red { background:url('icons/drink_red.png') no-repeat center center;}
+
+.icon-drive { background:url('icons/drive.png') no-repeat center center;}
+
+.icon-drive-add { background:url('icons/drive_add.png') no-repeat center center;}
+
+.icon-drive-burn { background:url('icons/drive_burn.png') no-repeat center center;}
+
+.icon-drive-cd { background:url('icons/drive_cd.png') no-repeat center center;}
+
+.icon-drive-cdr { background:url('icons/drive_cdr.png') no-repeat center center;}
+
+.icon-drive-cd-empty { background:url('icons/drive_cd_empty.png') no-repeat center center;}
+
+.icon-drive-delete { background:url('icons/drive_delete.png') no-repeat center center;}
+
+.icon-drive-disk { background:url('icons/drive_disk.png') no-repeat center center;}
+
+.icon-drive-edit { background:url('icons/drive_edit.png') no-repeat center center;}
+
+.icon-drive-error { background:url('icons/drive_error.png') no-repeat center center;}
+
+.icon-drive-go { background:url('icons/drive_go.png') no-repeat center center;}
+
+.icon-drive-key { background:url('icons/drive_key.png') no-repeat center center;}
+
+.icon-drive-link { background:url('icons/drive_link.png') no-repeat center center;}
+
+.icon-drive-magnify { background:url('icons/drive_magnify.png') no-repeat center center;}
+
+.icon-drive-network { background:url('icons/drive_network.png') no-repeat center center;}
+
+.icon-drive-network-error { background:url('icons/drive_network_error.png') no-repeat center center;}
+
+.icon-drive-network-stop { background:url('icons/drive_network_stop.png') no-repeat center center;}
+
+.icon-drive-rename { background:url('icons/drive_rename.png') no-repeat center center;}
+
+.icon-drive-user { background:url('icons/drive_user.png') no-repeat center center;}
+
+.icon-drive-web { background:url('icons/drive_web.png') no-repeat center center;}
+
+.icon-dvd { background:url('icons/dvd.png') no-repeat center center;}
+
+.icon-dvd-add { background:url('icons/dvd_add.png') no-repeat center center;}
+
+.icon-dvd-delete { background:url('icons/dvd_delete.png') no-repeat center center;}
+
+.icon-dvd-edit { background:url('icons/dvd_edit.png') no-repeat center center;}
+
+.icon-dvd-error { background:url('icons/dvd_error.png') no-repeat center center;}
+
+.icon-dvd-go { background:url('icons/dvd_go.png') no-repeat center center;}
+
+.icon-dvd-key { background:url('icons/dvd_key.png') no-repeat center center;}
+
+.icon-dvd-link { background:url('icons/dvd_link.png') no-repeat center center;}
+
+.icon-dvd-start { background:url('icons/dvd_start.png') no-repeat center center;}
+
+.icon-dvd-stop { background:url('icons/dvd_stop.png') no-repeat center center;}
+
+.icon-edit-clear { background:url('icons/edit-clear.png') no-repeat center center;}
+
+.icon-edit { background:url('icons/edit.gif') no-repeat center center;}
+
+.icon-edit-remove { background:url('icons/edit_remove.png') no-repeat center center;}
+
+.icon-eject-blue { background:url('icons/eject_blue.png') no-repeat center center;}
+
+.icon-eject-green { background:url('icons/eject_green.png') no-repeat center center;}
+
+.icon-email { background:url('icons/email.png') no-repeat center center;}
+
+.icon-email-add { background:url('icons/email_add.png') no-repeat center center;}
+
+.icon-email-attach { background:url('icons/email_attach.png') no-repeat center center;}
+
+.icon-email-delete { background:url('icons/email_delete.png') no-repeat center center;}
+
+.icon-email-edit { background:url('icons/email_edit.png') no-repeat center center;}
+
+.icon-email-error { background:url('icons/email_error.png') no-repeat center center;}
+
+.icon-email-go { background:url('icons/email_go.png') no-repeat center center;}
+
+.icon-email-link { background:url('icons/email_link.png') no-repeat center center;}
+
+.icon-email-magnify { background:url('icons/email_magnify.png') no-repeat center center;}
+
+.icon-email-open { background:url('icons/email_open.png') no-repeat center center;}
+
+.icon-email-open-image { background:url('icons/email_open_image.png') no-repeat center center;}
+
+.icon-email-star { background:url('icons/email_star.png') no-repeat center center;}
+
+.icon-email-start { background:url('icons/email_start.png') no-repeat center center;}
+
+.icon-email-stop { background:url('icons/email_stop.png') no-repeat center center;}
+
+.icon-email-transfer { background:url('icons/email_transfer.png') no-repeat center center;}
+
+.icon-emoticon-evilgrin { background:url('icons/emoticon_evilgrin.png') no-repeat center center;}
+
+.icon-emoticon-grin { background:url('icons/emoticon_grin.png') no-repeat center center;}
+
+.icon-emoticon-happy { background:url('icons/emoticon_happy.png') no-repeat center center;}
+
+.icon-emoticon-smile { background:url('icons/emoticon_smile.png') no-repeat center center;}
+
+.icon-emoticon-surprised { background:url('icons/emoticon_surprised.png') no-repeat center center;}
+
+.icon-emoticon-tongue { background:url('icons/emoticon_tongue.png') no-repeat center center;}
+
+.icon-emoticon-unhappy { background:url('icons/emoticon_unhappy.png') no-repeat center center;}
+
+.icon-emoticon-waii { background:url('icons/emoticon_waii.png') no-repeat center center;}
+
+.icon-emoticon-wink { background:url('icons/emoticon_wink.png') no-repeat center center;}
+
+.icon-erase { background:url('icons/erase.png') no-repeat center center;}
+
+.icon-error { background:url('icons/error.png') no-repeat center center;}
+
+.icon-error-add { background:url('icons/error_add.png') no-repeat center center;}
+
+.icon-error-delete { background:url('icons/error_delete.png') no-repeat center center;}
+
+.icon-error-go { background:url('icons/error_go.png') no-repeat center center;}
+
+.icon-exclamation { background:url('icons/exclamation.png') no-repeat center center;}
+
+.icon-expand-all { background:url('icons/expand-all.gif') no-repeat center center;}
+
+.icon-export { background:url('icons/export.png') no-repeat center center;}
+
+.icon-eye { background:url('icons/eye.png') no-repeat center center;}
+
+.icon-eyes { background:url('icons/eyes.png') no-repeat center center;}
+
+.icon-feed { background:url('icons/feed.png') no-repeat center center;}
+
+.icon-feed-add { background:url('icons/feed_add.png') no-repeat center center;}
+
+.icon-feed-delete { background:url('icons/feed_delete.png') no-repeat center center;}
+
+.icon-feed-disk { background:url('icons/feed_disk.png') no-repeat center center;}
+
+.icon-feed-edit { background:url('icons/feed_edit.png') no-repeat center center;}
+
+.icon-feed-error { background:url('icons/feed_error.png') no-repeat center center;}
+
+.icon-feed-go { background:url('icons/feed_go.png') no-repeat center center;}
+
+.icon-feed-key { background:url('icons/feed_key.png') no-repeat center center;}
+
+.icon-feed-link { background:url('icons/feed_link.png') no-repeat center center;}
+
+.icon-feed-magnify { background:url('icons/feed_magnify.png') no-repeat center center;}
+
+.icon-feed-star { background:url('icons/feed_star.png') no-repeat center center;}
+
+.icon-female { background:url('icons/female.png') no-repeat center center;}
+
+.icon-film { background:url('icons/film.png') no-repeat center center;}
+
+.icon-film-add { background:url('icons/film_add.png') no-repeat center center;}
+
+.icon-film-delete { background:url('icons/film_delete.png') no-repeat center center;}
+
+.icon-film-edit { background:url('icons/film_edit.png') no-repeat center center;}
+
+.icon-film-eject { background:url('icons/film_eject.png') no-repeat center center;}
+
+.icon-film-error { background:url('icons/film_error.png') no-repeat center center;}
+
+.icon-film-go { background:url('icons/film_go.png') no-repeat center center;}
+
+.icon-film-key { background:url('icons/film_key.png') no-repeat center center;}
+
+.icon-film-link { background:url('icons/film_link.png') no-repeat center center;}
+
+.icon-film-magnify { background:url('icons/film_magnify.png') no-repeat center center;}
+
+.icon-film-save { background:url('icons/film_save.png') no-repeat center center;}
+
+.icon-film-star { background:url('icons/film_star.png') no-repeat center center;}
+
+.icon-film-start { background:url('icons/film_start.png') no-repeat center center;}
+
+.icon-film-stop { background:url('icons/film_stop.png') no-repeat center center;}
+
+.icon-find { background:url('icons/find.png') no-repeat center center;}
+
+.icon-finger-point { background:url('icons/finger_point.png') no-repeat center center;}
+
+.icon-flag-black { background:url('icons/flag_black.png') no-repeat center center;}
+
+.icon-flag-blue { background:url('icons/flag_blue.png') no-repeat center center;}
+
+.icon-flag-checked { background:url('icons/flag_checked.png') no-repeat center center;}
+
+.icon-flag-france { background:url('icons/flag_france.png') no-repeat center center;}
+
+.icon-flag-green { background:url('icons/flag_green.png') no-repeat center center;}
+
+.icon-flag-grey { background:url('icons/flag_grey.png') no-repeat center center;}
+
+.icon-flag-orange { background:url('icons/flag_orange.png') no-repeat center center;}
+
+.icon-flag-pink { background:url('icons/flag_pink.png') no-repeat center center;}
+
+.icon-flag-purple { background:url('icons/flag_purple.png') no-repeat center center;}
+
+.icon-flag-red { background:url('icons/flag_red.png') no-repeat center center;}
+
+.icon-flag-white { background:url('icons/flag_white.png') no-repeat center center;}
+
+.icon-flag-yellow { background:url('icons/flag_yellow.png') no-repeat center center;}
+
+.icon-flower-daisy { background:url('icons/flower_daisy.png') no-repeat center center;}
+
+.icon-folder { background:url('icons/folder.png') no-repeat center center;}
+
+.icon-folder-add { background:url('icons/folder_add.png') no-repeat center center;}
+
+.icon-folder-bell { background:url('icons/folder_bell.png') no-repeat center center;}
+
+.icon-folder-bookmark { background:url('icons/folder_bookmark.png') no-repeat center center;}
+
+.icon-folder-brick { background:url('icons/folder_brick.png') no-repeat center center;}
+
+.icon-folder-bug { background:url('icons/folder_bug.png') no-repeat center center;}
+
+.icon-folder-camera { background:url('icons/folder_camera.png') no-repeat center center;}
+
+.icon-folder-connect { background:url('icons/folder_connect.png') no-repeat center center;}
+
+.icon-folder-database { background:url('icons/folder_database.png') no-repeat center center;}
+
+.icon-folder-delete { background:url('icons/folder_delete.png') no-repeat center center;}
+
+.icon-folder-edit { background:url('icons/folder_edit.png') no-repeat center center;}
+
+.icon-folder-error { background:url('icons/folder_error.png') no-repeat center center;}
+
+.icon-folder-explore { background:url('icons/folder_explore.png') no-repeat center center;}
+
+.icon-folder-feed { background:url('icons/folder_feed.png') no-repeat center center;}
+
+.icon-folder-film { background:url('icons/folder_film.png') no-repeat center center;}
+
+.icon-folder-find { background:url('icons/folder_find.png') no-repeat center center;}
+
+.icon-folder-font { background:url('icons/folder_font.png') no-repeat center center;}
+
+.icon-folder-go { background:url('icons/folder_go.png') no-repeat center center;}
+
+.icon-folder-heart { background:url('icons/folder_heart.png') no-repeat center center;}
+
+.icon-folder-home { background:url('icons/folder_home.png') no-repeat center center;}
+
+.icon-folder-image { background:url('icons/folder_image.png') no-repeat center center;}
+
+.icon-folder-key { background:url('icons/folder_key.png') no-repeat center center;}
+
+.icon-folder-lightbulb { background:url('icons/folder_lightbulb.png') no-repeat center center;}
+
+.icon-folder-link { background:url('icons/folder_link.png') no-repeat center center;}
+
+.icon-folder-magnify { background:url('icons/folder_magnify.png') no-repeat center center;}
+
+.icon-folder-page { background:url('icons/folder_page.png') no-repeat center center;}
+
+.icon-folder-page-white { background:url('icons/folder_page_white.png') no-repeat center center;}
+
+.icon-folder-palette { background:url('icons/folder_palette.png') no-repeat center center;}
+
+.icon-folder-picture { background:url('icons/folder_picture.png') no-repeat center center;}
+
+.icon-folder-star { background:url('icons/folder_star.png') no-repeat center center;}
+
+.icon-folder-table { background:url('icons/folder_table.png') no-repeat center center;}
+
+.icon-folder-up { background:url('icons/folder_up.png') no-repeat center center;}
+
+.icon-folder-user { background:url('icons/folder_user.png') no-repeat center center;}
+
+.icon-folder-wrench { background:url('icons/folder_wrench.png') no-repeat center center;}
+
+.icon-font { background:url('icons/font.png') no-repeat center center;}
+
+.icon-font-add { background:url('icons/font_add.png') no-repeat center center;}
+
+.icon-font-color { background:url('icons/font_color.png') no-repeat center center;}
+
+.icon-font-delete { background:url('icons/font_delete.png') no-repeat center center;}
+
+.icon-font-go { background:url('icons/font_go.png') no-repeat center center;}
+
+.icon-font-larger { background:url('icons/font_larger.png') no-repeat center center;}
+
+.icon-font-smaller { background:url('icons/font_smaller.png') no-repeat center center;}
+
+.icon-forward-blue { background:url('icons/forward_blue.png') no-repeat center center;}
+
+.icon-forward-green { background:url('icons/forward_green.png') no-repeat center center;}
+
+.icon-group { background:url('icons/group.png') no-repeat center center;}
+
+.icon-group32 { background:url('icons/group32.png') no-repeat center center;}
+
+.icon-group-add { background:url('icons/group_add.png') no-repeat center center;}
+
+.icon-group-delete { background:url('icons/group_delete.png') no-repeat center center;}
+
+.icon-group-edit { background:url('icons/group_edit.png') no-repeat center center;}
+
+.icon-group-error { background:url('icons/group_error.png') no-repeat center center;}
+
+.icon-group-gear { background:url('icons/group_gear.png') no-repeat center center;}
+
+.icon-group-go { background:url('icons/group_go.png') no-repeat center center;}
+
+.icon-group-key { background:url('icons/group_key.png') no-repeat center center;}
+
+.icon-group-link { background:url('icons/group_link.png') no-repeat center center;}
+
+.icon-heart { background:url('icons/heart.png') no-repeat center center;}
+
+.icon-heart-add { background:url('icons/heart_add.png') no-repeat center center;}
+
+.icon-heart-broken { background:url('icons/heart_broken.png') no-repeat center center;}
+
+.icon-heart-connect { background:url('icons/heart_connect.png') no-repeat center center;}
+
+.icon-heart-delete { background:url('icons/heart_delete.png') no-repeat center center;}
+
+.icon-help { background:url('icons/help.png') no-repeat center center;}
+
+.icon-hourglass { background:url('icons/hourglass.png') no-repeat center center;}
+
+.icon-hourglass-add { background:url('icons/hourglass_add.png') no-repeat center center;}
+
+.icon-hourglass-delete { background:url('icons/hourglass_delete.png') no-repeat center center;}
+
+.icon-hourglass-go { background:url('icons/hourglass_go.png') no-repeat center center;}
+
+.icon-hourglass-link { background:url('icons/hourglass_link.png') no-repeat center center;}
+
+.icon-house { background:url('icons/house.png') no-repeat center center;}
+
+.icon-house-connect { background:url('icons/house_connect.png') no-repeat center center;}
+
+.icon-house-go { background:url('icons/house_go.png') no-repeat center center;}
+
+.icon-house-in { background:url('icons/house_in.png') no-repeat center center;}
+
+.icon-house-key { background:url('icons/house_key.png') no-repeat center center;}
+
+.icon-house-link { background:url('icons/house_link.png') no-repeat center center;}
+
+.icon-house-star { background:url('icons/house_star.png') no-repeat center center;}
+
+.icon-html { background:url('icons/html.png') no-repeat center center;}
+
+.icon-html-add { background:url('icons/html_add.png') no-repeat center center;}
+
+.icon-html-delete { background:url('icons/html_delete.png') no-repeat center center;}
+
+.icon-html-error { background:url('icons/html_error.png') no-repeat center center;}
+
+.icon-html-go { background:url('icons/html_go.png') no-repeat center center;}
+
+.icon-html-valid { background:url('icons/html_valid.png') no-repeat center center;}
+
+.icon-image { background:url('icons/image.png') no-repeat center center;}
+
+.icon-images { background:url('icons/images.png') no-repeat center center;}
+
+.icon-image-add { background:url('icons/image_add.png') no-repeat center center;}
+
+.icon-image-delete { background:url('icons/image_delete.png') no-repeat center center;}
+
+.icon-image-edit { background:url('icons/image_edit.png') no-repeat center center;}
+
+.icon-image-link { background:url('icons/image_link.png') no-repeat center center;}
+
+.icon-image-magnify { background:url('icons/image_magnify.png') no-repeat center center;}
+
+.icon-image-star { background:url('icons/image_star.png') no-repeat center center;}
+
+.icon-information { background:url('icons/information.png') no-repeat center center;}
+
+.icon-ipod { background:url('icons/ipod.png') no-repeat center center;}
+
+.icon-ipod-cast { background:url('icons/ipod_cast.png') no-repeat center center;}
+
+.icon-ipod-cast-add { background:url('icons/ipod_cast_add.png') no-repeat center center;}
+
+.icon-ipod-cast-delete { background:url('icons/ipod_cast_delete.png') no-repeat center center;}
+
+.icon-ipod-connect { background:url('icons/ipod_connect.png') no-repeat center center;}
+
+.icon-ipod-nano { background:url('icons/ipod_nano.png') no-repeat center center;}
+
+.icon-ipod-nano-connect { background:url('icons/ipod_nano_connect.png') no-repeat center center;}
+
+.icon-ipod-sound { background:url('icons/ipod_sound.png') no-repeat center center;}
+
+.icon-joystick { background:url('icons/joystick.png') no-repeat center center;}
+
+.icon-joystick-add { background:url('icons/joystick_add.png') no-repeat center center;}
+
+.icon-joystick-connect { background:url('icons/joystick_connect.png') no-repeat center center;}
+
+.icon-joystick-delete { background:url('icons/joystick_delete.png') no-repeat center center;}
+
+.icon-joystick-error { background:url('icons/joystick_error.png') no-repeat center center;}
+
+.icon-key { background:url('icons/key.png') no-repeat center center;}
+
+.icon-keyboard { background:url('icons/keyboard.png') no-repeat center center;}
+
+.icon-keyboard-add { background:url('icons/keyboard_add.png') no-repeat center center;}
+
+.icon-keyboard-connect { background:url('icons/keyboard_connect.png') no-repeat center center;}
+
+.icon-keyboard-delete { background:url('icons/keyboard_delete.png') no-repeat center center;}
+
+.icon-keyboard-magnify { background:url('icons/keyboard_magnify.png') no-repeat center center;}
+
+.icon-key-add { background:url('icons/key_add.png') no-repeat center center;}
+
+.icon-key-delete { background:url('icons/key_delete.png') no-repeat center center;}
+
+.icon-key-go { background:url('icons/key_go.png') no-repeat center center;}
+
+.icon-key-start { background:url('icons/key_start.png') no-repeat center center;}
+
+.icon-key-stop { background:url('icons/key_stop.png') no-repeat center center;}
+
+.icon-laptop { background:url('icons/laptop.png') no-repeat center center;}
+
+.icon-laptop-add { background:url('icons/laptop_add.png') no-repeat center center;}
+
+.icon-laptop-connect { background:url('icons/laptop_connect.png') no-repeat center center;}
+
+.icon-laptop-delete { background:url('icons/laptop_delete.png') no-repeat center center;}
+
+.icon-laptop-disk { background:url('icons/laptop_disk.png') no-repeat center center;}
+
+.icon-laptop-edit { background:url('icons/laptop_edit.png') no-repeat center center;}
+
+.icon-laptop-error { background:url('icons/laptop_error.png') no-repeat center center;}
+
+.icon-laptop-go { background:url('icons/laptop_go.png') no-repeat center center;}
+
+.icon-laptop-key { background:url('icons/laptop_key.png') no-repeat center center;}
+
+.icon-laptop-link { background:url('icons/laptop_link.png') no-repeat center center;}
+
+.icon-laptop-magnify { background:url('icons/laptop_magnify.png') no-repeat center center;}
+
+.icon-laptop-start { background:url('icons/laptop_start.png') no-repeat center center;}
+
+.icon-laptop-stop { background:url('icons/laptop_stop.png') no-repeat center center;}
+
+.icon-laptop-wrench { background:url('icons/laptop_wrench.png') no-repeat center center;}
+
+.icon-layers { background:url('icons/layers.png') no-repeat center center;}
+
+.icon-layout { background:url('icons/layout.png') no-repeat center center;}
+
+.icon-layout-add { background:url('icons/layout_add.png') no-repeat center center;}
+
+.icon-layout-content { background:url('icons/layout_content.png') no-repeat center center;}
+
+.icon-layout-delete { background:url('icons/layout_delete.png') no-repeat center center;}
+
+.icon-layout-edit { background:url('icons/layout_edit.png') no-repeat center center;}
+
+.icon-layout-error { background:url('icons/layout_error.png') no-repeat center center;}
+
+.icon-layout-header { background:url('icons/layout_header.png') no-repeat center center;}
+
+.icon-layout-key { background:url('icons/layout_key.png') no-repeat center center;}
+
+.icon-layout-lightning { background:url('icons/layout_lightning.png') no-repeat center center;}
+
+.icon-layout-link { background:url('icons/layout_link.png') no-repeat center center;}
+
+.icon-layout-sidebar { background:url('icons/layout_sidebar.png') no-repeat center center;}
+
+.icon-lightbulb { background:url('icons/lightbulb.png') no-repeat center center;}
+
+.icon-lightbulb-add { background:url('icons/lightbulb_add.png') no-repeat center center;}
+
+.icon-lightbulb-delete { background:url('icons/lightbulb_delete.png') no-repeat center center;}
+
+.icon-lightbulb-off { background:url('icons/lightbulb_off.png') no-repeat center center;}
+
+.icon-lightning { background:url('icons/lightning.png') no-repeat center center;}
+
+.icon-lightning-add { background:url('icons/lightning_add.png') no-repeat center center;}
+
+.icon-lightning-delete { background:url('icons/lightning_delete.png') no-repeat center center;}
+
+.icon-lightning-go { background:url('icons/lightning_go.png') no-repeat center center;}
+
+.icon-link { background:url('icons/link.png') no-repeat center center;}
+
+.icon-link-add { background:url('icons/link_add.png') no-repeat center center;}
+
+.icon-link-break { background:url('icons/link_break.png') no-repeat center center;}
+
+.icon-link-delete { background:url('icons/link_delete.png') no-repeat center center;}
+
+.icon-link-edit { background:url('icons/link_edit.png') no-repeat center center;}
+
+.icon-link-error { background:url('icons/link_error.png') no-repeat center center;}
+
+.icon-link-go { background:url('icons/link_go.png') no-repeat center center;}
+
+.icon-lock { background:url('icons/lock.png') no-repeat center center;}
+
+.icon-lock-add { background:url('icons/lock_add.png') no-repeat center center;}
+
+.icon-lock-break { background:url('icons/lock_break.png') no-repeat center center;}
+
+.icon-lock-delete { background:url('icons/lock_delete.png') no-repeat center center;}
+
+.icon-lock-edit { background:url('icons/lock_edit.png') no-repeat center center;}
+
+.icon-lock-go { background:url('icons/lock_go.png') no-repeat center center;}
+
+.icon-lock-key { background:url('icons/lock_key.png') no-repeat center center;}
+
+.icon-lock-open { background:url('icons/lock_open.png') no-repeat center center;}
+
+.icon-lock-start { background:url('icons/lock_start.png') no-repeat center center;}
+
+.icon-lock-stop { background:url('icons/lock_stop.png') no-repeat center center;}
+
+.icon-lorry { background:url('icons/lorry.png') no-repeat center center;}
+
+.icon-lorry-add { background:url('icons/lorry_add.png') no-repeat center center;}
+
+.icon-lorry-delete { background:url('icons/lorry_delete.png') no-repeat center center;}
+
+.icon-lorry-error { background:url('icons/lorry_error.png') no-repeat center center;}
+
+.icon-lorry-flatbed { background:url('icons/lorry_flatbed.png') no-repeat center center;}
+
+.icon-lorry-go { background:url('icons/lorry_go.png') no-repeat center center;}
+
+.icon-lorry-link { background:url('icons/lorry_link.png') no-repeat center center;}
+
+.icon-lorry-start { background:url('icons/lorry_start.png') no-repeat center center;}
+
+.icon-lorry-stop { background:url('icons/lorry_stop.png') no-repeat center center;}
+
+.icon-magifier-zoom-out { background:url('icons/magifier_zoom_out.png') no-repeat center center;}
+
+.icon-magnifier { background:url('icons/magnifier.png') no-repeat center center;}
+
+.icon-magnifier-zoom-in { background:url('icons/magnifier_zoom_in.png') no-repeat center center;}
+
+.icon-mail { background:url('icons/mail.png') no-repeat center center;}
+
+.icon-male { background:url('icons/male.png') no-repeat center center;}
+
+.icon-map { background:url('icons/map.png') no-repeat center center;}
+
+.icon-map-add { background:url('icons/map_add.png') no-repeat center center;}
+
+.icon-map-clipboard { background:url('icons/map_clipboard.png') no-repeat center center;}
+
+.icon-map-cursor { background:url('icons/map_cursor.png') no-repeat center center;}
+
+.icon-map-delete { background:url('icons/map_delete.png') no-repeat center center;}
+
+.icon-map-edit { background:url('icons/map_edit.png') no-repeat center center;}
+
+.icon-map-error { background:url('icons/map_error.png') no-repeat center center;}
+
+.icon-map-go { background:url('icons/map_go.png') no-repeat center center;}
+
+.icon-map-link { background:url('icons/map_link.png') no-repeat center center;}
+
+.icon-map-magnify { background:url('icons/map_magnify.png') no-repeat center center;}
+
+.icon-map-start { background:url('icons/map_start.png') no-repeat center center;}
+
+.icon-map-stop { background:url('icons/map_stop.png') no-repeat center center;}
+
+.icon-medal-bronze-1 { background:url('icons/medal_bronze_1.png') no-repeat center center;}
+
+.icon-medal-bronze-2 { background:url('icons/medal_bronze_2.png') no-repeat center center;}
+
+.icon-medal-bronze-3 { background:url('icons/medal_bronze_3.png') no-repeat center center;}
+
+.icon-medal-bronze-add { background:url('icons/medal_bronze_add.png') no-repeat center center;}
+
+.icon-medal-bronze-delete { background:url('icons/medal_bronze_delete.png') no-repeat center center;}
+
+.icon-medal-gold-1 { background:url('icons/medal_gold_1.png') no-repeat center center;}
+
+.icon-medal-gold-2 { background:url('icons/medal_gold_2.png') no-repeat center center;}
+
+.icon-medal-gold-3 { background:url('icons/medal_gold_3.png') no-repeat center center;}
+
+.icon-medal-gold-add { background:url('icons/medal_gold_add.png') no-repeat center center;}
+
+.icon-medal-gold-delete { background:url('icons/medal_gold_delete.png') no-repeat center center;}
+
+.icon-medal-silver-1 { background:url('icons/medal_silver_1.png') no-repeat center center;}
+
+.icon-medal-silver-2 { background:url('icons/medal_silver_2.png') no-repeat center center;}
+
+.icon-medal-silver-3 { background:url('icons/medal_silver_3.png') no-repeat center center;}
+
+.icon-medal-silver-add { background:url('icons/medal_silver_add.png') no-repeat center center;}
+
+.icon-medal-silver-delete { background:url('icons/medal_silver_delete.png') no-repeat center center;}
+
+.icon-menu-rightarrow { background:url('icons/menu_rightarrow.png') no-repeat center center;}
+
+.icon-money { background:url('icons/money.png') no-repeat center center;}
+
+.icon-money-add { background:url('icons/money_add.png') no-repeat center center;}
+
+.icon-money-delete { background:url('icons/money_delete.png') no-repeat center center;}
+
+.icon-money-dollar { background:url('icons/money_dollar.png') no-repeat center center;}
+
+.icon-money-euro { background:url('icons/money_euro.png') no-repeat center center;}
+
+.icon-money-pound { background:url('icons/money_pound.png') no-repeat center center;}
+
+.icon-money-yen { background:url('icons/money_yen.png') no-repeat center center;}
+
+.icon-monitor { background:url('icons/monitor.png') no-repeat center center;}
+
+.icon-monitor-add { background:url('icons/monitor_add.png') no-repeat center center;}
+
+.icon-monitor-delete { background:url('icons/monitor_delete.png') no-repeat center center;}
+
+.icon-monitor-edit { background:url('icons/monitor_edit.png') no-repeat center center;}
+
+.icon-monitor-error { background:url('icons/monitor_error.png') no-repeat center center;}
+
+.icon-monitor-go { background:url('icons/monitor_go.png') no-repeat center center;}
+
+.icon-monitor-key { background:url('icons/monitor_key.png') no-repeat center center;}
+
+.icon-monitor-lightning { background:url('icons/monitor_lightning.png') no-repeat center center;}
+
+.icon-monitor-link { background:url('icons/monitor_link.png') no-repeat center center;}
+
+.icon-moon-full { background:url('icons/moon_full.png') no-repeat center center;}
+
+.icon-mouse { background:url('icons/mouse.png') no-repeat center center;}
+
+.icon-mouse-add { background:url('icons/mouse_add.png') no-repeat center center;}
+
+.icon-mouse-delete { background:url('icons/mouse_delete.png') no-repeat center center;}
+
+.icon-mouse-error { background:url('icons/mouse_error.png') no-repeat center center;}
+
+.icon-music { background:url('icons/music.png') no-repeat center center;}
+
+.icon-music-note { background:url('icons/music_note.png') no-repeat center center;}
+
+.icon-neighbourhood { background:url('icons/neighbourhood.png') no-repeat center center;}
+
+.icon-new { background:url('icons/new.png') no-repeat center center;}
+
+.icon-newspaper { background:url('icons/newspaper.png') no-repeat center center;}
+
+.icon-newspaper-add { background:url('icons/newspaper_add.png') no-repeat center center;}
+
+.icon-newspaper-delete { background:url('icons/newspaper_delete.png') no-repeat center center;}
+
+.icon-newspaper-go { background:url('icons/newspaper_go.png') no-repeat center center;}
+
+.icon-newspaper-link { background:url('icons/newspaper_link.png') no-repeat center center;}
+
+.icon-new-blue { background:url('icons/new_blue.png') no-repeat center center;}
+
+.icon-new-red { background:url('icons/new_red.png') no-repeat center center;}
+
+.icon-next-green { background:url('icons/next-green.png') no-repeat center center;}
+
+.icon-next { background:url('icons/next.png') no-repeat center center;}
+
+.icon-next-blue { background:url('icons/next_blue.png') no-repeat center center;}
+
+.icon-next-green { background:url('icons/next_green.png') no-repeat center center;}
+
+.icon-node-tree16 { background:url('icons/node_tree16.png') no-repeat center center;}
+
+.icon-node-tree32 { background:url('icons/node_tree32.png') no-repeat center center;}
+
+.icon-note { background:url('icons/note.png') no-repeat center center;}
+
+.icon-note-add { background:url('icons/note_add.png') no-repeat center center;}
+
+.icon-note-delete { background:url('icons/note_delete.png') no-repeat center center;}
+
+.icon-note-edit { background:url('icons/note_edit.png') no-repeat center center;}
+
+.icon-note-error { background:url('icons/note_error.png') no-repeat center center;}
+
+.icon-note-go { background:url('icons/note_go.png') no-repeat center center;}
+
+.icon-ok { background:url('icons/ok.png') no-repeat center center;}
+
+.icon-org32 { background:url('icons/org32.png') no-repeat center center;}
+
+.icon-organization { background:url('icons/organization.png') no-repeat center center;}
+
+.icon-outline { background:url('icons/outline.png') no-repeat center center;}
+
+.icon-overlays { background:url('icons/overlays.png') no-repeat center center;}
+
+.icon-package { background:url('icons/package.png') no-repeat center center;}
+
+.icon-package-add { background:url('icons/package_add.png') no-repeat center center;}
+
+.icon-package-delete { background:url('icons/package_delete.png') no-repeat center center;}
+
+.icon-package-down { background:url('icons/package_down.png') no-repeat center center;}
+
+.icon-package-go { background:url('icons/package_go.png') no-repeat center center;}
+
+.icon-package-green { background:url('icons/package_green.png') no-repeat center center;}
+
+.icon-package-in { background:url('icons/package_in.png') no-repeat center center;}
+
+.icon-package-link { background:url('icons/package_link.png') no-repeat center center;}
+
+.icon-package-se { background:url('icons/package_se.png') no-repeat center center;}
+
+.icon-package-start { background:url('icons/package_start.png') no-repeat center center;}
+
+.icon-package-stop { background:url('icons/package_stop.png') no-repeat center center;}
+
+.icon-package-system { background:url('icons/package_system.png') no-repeat center center;}
+
+.icon-package-white { background:url('icons/package_white.png') no-repeat center center;}
+
+.icon-page { background:url('icons/page.png') no-repeat center center;}
+
+.icon-page-add { background:url('icons/page_add.png') no-repeat center center;}
+
+.icon-page-attach { background:url('icons/page_attach.png') no-repeat center center;}
+
+.icon-page-back { background:url('icons/page_back.png') no-repeat center center;}
+
+.icon-page-break { background:url('icons/page_break.png') no-repeat center center;}
+
+.icon-page-break-insert { background:url('icons/page_break_insert.png') no-repeat center center;}
+
+.icon-page-cancel { background:url('icons/page_cancel.png') no-repeat center center;}
+
+.icon-page-code { background:url('icons/page_code.png') no-repeat center center;}
+
+.icon-page-copy { background:url('icons/page_copy.png') no-repeat center center;}
+
+.icon-page-delete { background:url('icons/page_delete.png') no-repeat center center;}
+
+.icon-page-edit { background:url('icons/page_edit.png') no-repeat center center;}
+
+.icon-page-error { background:url('icons/page_error.png') no-repeat center center;}
+
+.icon-page-excel { background:url('icons/page_excel.png') no-repeat center center;}
+
+.icon-page-find { background:url('icons/page_find.png') no-repeat center center;}
+
+.icon-page-forward { background:url('icons/page_forward.png') no-repeat center center;}
+
+.icon-page-gear { background:url('icons/page_gear.png') no-repeat center center;}
+
+.icon-page-go { background:url('icons/page_go.png') no-repeat center center;}
+
+.icon-page-green { background:url('icons/page_green.png') no-repeat center center;}
+
+.icon-page-header-footer { background:url('icons/page_header_footer.png') no-repeat center center;}
+
+.icon-page-key { background:url('icons/page_key.png') no-repeat center center;}
+
+.icon-page-landscape { background:url('icons/page_landscape.png') no-repeat center center;}
+
+.icon-page-landscape-shot { background:url('icons/page_landscape_shot.png') no-repeat center center;}
+
+.icon-page-lightning { background:url('icons/page_lightning.png') no-repeat center center;}
+
+.icon-page-link { background:url('icons/page_link.png') no-repeat center center;}
+
+.icon-page-magnify { background:url('icons/page_magnify.png') no-repeat center center;}
+
+.icon-page-paintbrush { background:url('icons/page_paintbrush.png') no-repeat center center;}
+
+.icon-page-paste { background:url('icons/page_paste.png') no-repeat center center;}
+
+.icon-page-portrait { background:url('icons/page_portrait.png') no-repeat center center;}
+
+.icon-page-portrait-shot { background:url('icons/page_portrait_shot.png') no-repeat center center;}
+
+.icon-page-red { background:url('icons/page_red.png') no-repeat center center;}
+
+.icon-page-refresh { background:url('icons/page_refresh.png') no-repeat center center;}
+
+.icon-page-save { background:url('icons/page_save.png') no-repeat center center;}
+
+.icon-page-white { background:url('icons/page_white.png') no-repeat center center;}
+
+.icon-page-white-acrobat { background:url('icons/page_white_acrobat.png') no-repeat center center;}
+
+.icon-page-white-actionscript { background:url('icons/page_white_actionscript.png') no-repeat center center;}
+
+.icon-page-white-add { background:url('icons/page_white_add.png') no-repeat center center;}
+
+.icon-page-white-break { background:url('icons/page_white_break.png') no-repeat center center;}
+
+.icon-page-white-c { background:url('icons/page_white_c.png') no-repeat center center;}
+
+.icon-page-white-camera { background:url('icons/page_white_camera.png') no-repeat center center;}
+
+.icon-page-white-cd { background:url('icons/page_white_cd.png') no-repeat center center;}
+
+.icon-page-white-cdr { background:url('icons/page_white_cdr.png') no-repeat center center;}
+
+.icon-page-white-code { background:url('icons/page_white_code.png') no-repeat center center;}
+
+.icon-page-white-code-red { background:url('icons/page_white_code_red.png') no-repeat center center;}
+
+.icon-page-white-coldfusion { background:url('icons/page_white_coldfusion.png') no-repeat center center;}
+
+.icon-page-white-compressed { background:url('icons/page_white_compressed.png') no-repeat center center;}
+
+.icon-page-white-connect { background:url('icons/page_white_connect.png') no-repeat center center;}
+
+.icon-page-white-copy { background:url('icons/page_white_copy.png') no-repeat center center;}
+
+.icon-page-white-cplusplus { background:url('icons/page_white_cplusplus.png') no-repeat center center;}
+
+.icon-page-white-csharp { background:url('icons/page_white_csharp.png') no-repeat center center;}
+
+.icon-page-white-cup { background:url('icons/page_white_cup.png') no-repeat center center;}
+
+.icon-page-white-database { background:url('icons/page_white_database.png') no-repeat center center;}
+
+.icon-page-white-database-yellow { background:url('icons/page_white_database_yellow.png') no-repeat center center;}
+
+.icon-page-white-delete { background:url('icons/page_white_delete.png') no-repeat center center;}
+
+.icon-page-white-dvd { background:url('icons/page_white_dvd.png') no-repeat center center;}
+
+.icon-page-white-edit { background:url('icons/page_white_edit.png') no-repeat center center;}
+
+.icon-page-white-error { background:url('icons/page_white_error.png') no-repeat center center;}
+
+.icon-page-white-excel { background:url('icons/page_white_excel.png') no-repeat center center;}
+
+.icon-page-white-find { background:url('icons/page_white_find.png') no-repeat center center;}
+
+.icon-page-white-flash { background:url('icons/page_white_flash.png') no-repeat center center;}
+
+.icon-page-white-font { background:url('icons/page_white_font.png') no-repeat center center;}
+
+.icon-page-white-freehand { background:url('icons/page_white_freehand.png') no-repeat center center;}
+
+.icon-page-white-gear { background:url('icons/page_white_gear.png') no-repeat center center;}
+
+.icon-page-white-get { background:url('icons/page_white_get.png') no-repeat center center;}
+
+.icon-page-white-go { background:url('icons/page_white_go.png') no-repeat center center;}
+
+.icon-page-white-h { background:url('icons/page_white_h.png') no-repeat center center;}
+
+.icon-page-white-horizontal { background:url('icons/page_white_horizontal.png') no-repeat center center;}
+
+.icon-page-white-key { background:url('icons/page_white_key.png') no-repeat center center;}
+
+.icon-page-white-lightning { background:url('icons/page_white_lightning.png') no-repeat center center;}
+
+.icon-page-white-link { background:url('icons/page_white_link.png') no-repeat center center;}
+
+.icon-page-white-magnify { background:url('icons/page_white_magnify.png') no-repeat center center;}
+
+.icon-page-white-medal { background:url('icons/page_white_medal.png') no-repeat center center;}
+
+.icon-page-white-office { background:url('icons/page_white_office.png') no-repeat center center;}
+
+.icon-page-white-paint { background:url('icons/page_white_paint.png') no-repeat center center;}
+
+.icon-page-white-paintbrush { background:url('icons/page_white_paintbrush.png') no-repeat center center;}
+
+.icon-page-white-paste { background:url('icons/page_white_paste.png') no-repeat center center;}
+
+.icon-page-white-paste-table { background:url('icons/page_white_paste_table.png') no-repeat center center;}
+
+.icon-page-white-php { background:url('icons/page_white_php.png') no-repeat center center;}
+
+.icon-page-white-picture { background:url('icons/page_white_picture.png') no-repeat center center;}
+
+.icon-page-white-powerpoint { background:url('icons/page_white_powerpoint.png') no-repeat center center;}
+
+.icon-page-white-put { background:url('icons/page_white_put.png') no-repeat center center;}
+
+.icon-page-white-refresh { background:url('icons/page_white_refresh.png') no-repeat center center;}
+
+.icon-page-white-ruby { background:url('icons/page_white_ruby.png') no-repeat center center;}
+
+.icon-page-white-side-by-side { background:url('icons/page_white_side_by_side.png') no-repeat center center;}
+
+.icon-page-white-stack { background:url('icons/page_white_stack.png') no-repeat center center;}
+
+.icon-page-white-star { background:url('icons/page_white_star.png') no-repeat center center;}
+
+.icon-page-white-swoosh { background:url('icons/page_white_swoosh.png') no-repeat center center;}
+
+.icon-page-white-text { background:url('icons/page_white_text.png') no-repeat center center;}
+
+.icon-page-white-text-width { background:url('icons/page_white_text_width.png') no-repeat center center;}
+
+.icon-page-white-tux { background:url('icons/page_white_tux.png') no-repeat center center;}
+
+.icon-page-white-vector { background:url('icons/page_white_vector.png') no-repeat center center;}
+
+.icon-page-white-visualstudio { background:url('icons/page_white_visualstudio.png') no-repeat center center;}
+
+.icon-page-white-width { background:url('icons/page_white_width.png') no-repeat center center;}
+
+.icon-page-white-word { background:url('icons/page_white_word.png') no-repeat center center;}
+
+.icon-page-white-world { background:url('icons/page_white_world.png') no-repeat center center;}
+
+.icon-page-white-wrench { background:url('icons/page_white_wrench.png') no-repeat center center;}
+
+.icon-page-white-zip { background:url('icons/page_white_zip.png') no-repeat center center;}
+
+.icon-page-word { background:url('icons/page_word.png') no-repeat center center;}
+
+.icon-page-world { background:url('icons/page_world.png') no-repeat center center;}
+
+.icon-paint { background:url('icons/paint.png') no-repeat center center;}
+
+.icon-paintbrush { background:url('icons/paintbrush.png') no-repeat center center;}
+
+.icon-paintbrush-color { background:url('icons/paintbrush_color.png') no-repeat center center;}
+
+.icon-paintcan { background:url('icons/paintcan.png') no-repeat center center;}
+
+.icon-paintcan-red { background:url('icons/paintcan_red.png') no-repeat center center;}
+
+.icon-paint-can-brush { background:url('icons/paint_can_brush.png') no-repeat center center;}
+
+.icon-palette { background:url('icons/palette.png') no-repeat center center;}
+
+.icon-paste-plain { background:url('icons/paste_plain.png') no-repeat center center;}
+
+.icon-paste-word { background:url('icons/paste_word.png') no-repeat center center;}
+
+.icon-pause-blue { background:url('icons/pause_blue.png') no-repeat center center;}
+
+.icon-pause-green { background:url('icons/pause_green.png') no-repeat center center;}
+
+.icon-pause-record { background:url('icons/pause_record.png') no-repeat center center;}
+
+.icon-pencil { background:url('icons/pencil.png') no-repeat center center;}
+
+.icon-pencil-add { background:url('icons/pencil_add.png') no-repeat center center;}
+
+.icon-pencil-delete { background:url('icons/pencil_delete.png') no-repeat center center;}
+
+.icon-pencil-go { background:url('icons/pencil_go.png') no-repeat center center;}
+
+.icon-personal { background:url('icons/personal.png') no-repeat center center;}
+
+.icon-phone { background:url('icons/phone.png') no-repeat center center;}
+
+.icon-phone-add { background:url('icons/phone_add.png') no-repeat center center;}
+
+.icon-phone-delete { background:url('icons/phone_delete.png') no-repeat center center;}
+
+.icon-phone-edit { background:url('icons/phone_edit.png') no-repeat center center;}
+
+.icon-phone-error { background:url('icons/phone_error.png') no-repeat center center;}
+
+.icon-phone-go { background:url('icons/phone_go.png') no-repeat center center;}
+
+.icon-phone-key { background:url('icons/phone_key.png') no-repeat center center;}
+
+.icon-phone-link { background:url('icons/phone_link.png') no-repeat center center;}
+
+.icon-phone-sound { background:url('icons/phone_sound.png') no-repeat center center;}
+
+.icon-phone-start { background:url('icons/phone_start.png') no-repeat center center;}
+
+.icon-phone-stop { background:url('icons/phone_stop.png') no-repeat center center;}
+
+.icon-photo { background:url('icons/photo.png') no-repeat center center;}
+
+.icon-photos { background:url('icons/photos.png') no-repeat center center;}
+
+.icon-photo-add { background:url('icons/photo_add.png') no-repeat center center;}
+
+.icon-photo-delete { background:url('icons/photo_delete.png') no-repeat center center;}
+
+.icon-photo-edit { background:url('icons/photo_edit.png') no-repeat center center;}
+
+.icon-photo-link { background:url('icons/photo_link.png') no-repeat center center;}
+
+.icon-photo-paint { background:url('icons/photo_paint.png') no-repeat center center;}
+
+.icon-picture { background:url('icons/picture.png') no-repeat center center;}
+
+.icon-pictures { background:url('icons/pictures.png') no-repeat center center;}
+
+.icon-pictures-thumbs { background:url('icons/pictures_thumbs.png') no-repeat center center;}
+
+.icon-picture-add { background:url('icons/picture_add.png') no-repeat center center;}
+
+.icon-picture-clipboard { background:url('icons/picture_clipboard.png') no-repeat center center;}
+
+.icon-picture-delete { background:url('icons/picture_delete.png') no-repeat center center;}
+
+.icon-picture-edit { background:url('icons/picture_edit.png') no-repeat center center;}
+
+.icon-picture-empty { background:url('icons/picture_empty.png') no-repeat center center;}
+
+.icon-picture-error { background:url('icons/picture_error.png') no-repeat center center;}
+
+.icon-picture-go { background:url('icons/picture_go.png') no-repeat center center;}
+
+.icon-picture-key { background:url('icons/picture_key.png') no-repeat center center;}
+
+.icon-picture-link { background:url('icons/picture_link.png') no-repeat center center;}
+
+.icon-picture-save { background:url('icons/picture_save.png') no-repeat center center;}
+
+.icon-pilcrow { background:url('icons/pilcrow.png') no-repeat center center;}
+
+.icon-pill { background:url('icons/pill.png') no-repeat center center;}
+
+.icon-pill-add { background:url('icons/pill_add.png') no-repeat center center;}
+
+.icon-pill-delete { background:url('icons/pill_delete.png') no-repeat center center;}
+
+.icon-pill-error { background:url('icons/pill_error.png') no-repeat center center;}
+
+.icon-pill-go { background:url('icons/pill_go.png') no-repeat center center;}
+
+.icon-play-blue { background:url('icons/play_blue.png') no-repeat center center;}
+
+.icon-play-green { background:url('icons/play_green.png') no-repeat center center;}
+
+.icon-plugin { background:url('icons/plugin.png') no-repeat center center;}
+
+.icon-plugin-add { background:url('icons/plugin_add.png') no-repeat center center;}
+
+.icon-plugin-delete { background:url('icons/plugin_delete.png') no-repeat center center;}
+
+.icon-plugin-disabled { background:url('icons/plugin_disabled.png') no-repeat center center;}
+
+.icon-plugin-edit { background:url('icons/plugin_edit.png') no-repeat center center;}
+
+.icon-plugin-error { background:url('icons/plugin_error.png') no-repeat center center;}
+
+.icon-plugin-go { background:url('icons/plugin_go.png') no-repeat center center;}
+
+.icon-plugin-key { background:url('icons/plugin_key.png') no-repeat center center;}
+
+.icon-plugin-link { background:url('icons/plugin_link.png') no-repeat center center;}
+
+.icon-previous-green { background:url('icons/previous-green.png') no-repeat center center;}
+
+.icon-previous { background:url('icons/previous.png') no-repeat center center;}
+
+.icon-printer { background:url('icons/printer.png') no-repeat center center;}
+
+.icon-printer-add { background:url('icons/printer_add.png') no-repeat center center;}
+
+.icon-printer-cancel { background:url('icons/printer_cancel.png') no-repeat center center;}
+
+.icon-printer-color { background:url('icons/printer_color.png') no-repeat center center;}
+
+.icon-printer-connect { background:url('icons/printer_connect.png') no-repeat center center;}
+
+.icon-printer-delete { background:url('icons/printer_delete.png') no-repeat center center;}
+
+.icon-printer-empty { background:url('icons/printer_empty.png') no-repeat center center;}
+
+.icon-printer-error { background:url('icons/printer_error.png') no-repeat center center;}
+
+.icon-printer-go { background:url('icons/printer_go.png') no-repeat center center;}
+
+.icon-printer-key { background:url('icons/printer_key.png') no-repeat center center;}
+
+.icon-printer-mono { background:url('icons/printer_mono.png') no-repeat center center;}
+
+.icon-printer-start { background:url('icons/printer_start.png') no-repeat center center;}
+
+.icon-printer-stop { background:url('icons/printer_stop.png') no-repeat center center;}
+
+.icon-rainbow { background:url('icons/rainbow.png') no-repeat center center;}
+
+.icon-rainbow-star { background:url('icons/rainbow_star.png') no-repeat center center;}
+
+.icon-record-blue { background:url('icons/record_blue.png') no-repeat center center;}
+
+.icon-record-green { background:url('icons/record_green.png') no-repeat center center;}
+
+.icon-record-red { background:url('icons/record_red.png') no-repeat center center;}
+
+.icon-refresh { background:url('icons/refresh.png') no-repeat center center;}
+
+.icon-reload { background:url('icons/reload.png') no-repeat center center;}
+
+.icon-report { background:url('icons/report.png') no-repeat center center;}
+
+.icon-report-add { background:url('icons/report_add.png') no-repeat center center;}
+
+.icon-report-delete { background:url('icons/report_delete.png') no-repeat center center;}
+
+.icon-report-disk { background:url('icons/report_disk.png') no-repeat center center;}
+
+.icon-report-edit { background:url('icons/report_edit.png') no-repeat center center;}
+
+.icon-report-go { background:url('icons/report_go.png') no-repeat center center;}
+
+.icon-report-key { background:url('icons/report_key.png') no-repeat center center;}
+
+.icon-report-link { background:url('icons/report_link.png') no-repeat center center;}
+
+.icon-report-magnify { background:url('icons/report_magnify.png') no-repeat center center;}
+
+.icon-report-picture { background:url('icons/report_picture.png') no-repeat center center;}
+
+.icon-report-start { background:url('icons/report_start.png') no-repeat center center;}
+
+.icon-report-stop { background:url('icons/report_stop.png') no-repeat center center;}
+
+.icon-report-user { background:url('icons/report_user.png') no-repeat center center;}
+
+.icon-report-word { background:url('icons/report_word.png') no-repeat center center;}
+
+.icon-resultset-first { background:url('icons/resultset_first.png') no-repeat center center;}
+
+.icon-resultset-last { background:url('icons/resultset_last.png') no-repeat center center;}
+
+.icon-resultset-next { background:url('icons/resultset_next.png') no-repeat center center;}
+
+.icon-resultset-previous { background:url('icons/resultset_previous.png') no-repeat center center;}
+
+.icon-reverse-blue { background:url('icons/reverse_blue.png') no-repeat center center;}
+
+.icon-reverse-green { background:url('icons/reverse_green.png') no-repeat center center;}
+
+.icon-rewind-blue { background:url('icons/rewind_blue.png') no-repeat center center;}
+
+.icon-rewind-green { background:url('icons/rewind_green.png') no-repeat center center;}
+
+.icon-rgb { background:url('icons/rgb.png') no-repeat center center;}
+
+.icon-rosette { background:url('icons/rosette.png') no-repeat center center;}
+
+.icon-rosette-blue { background:url('icons/rosette_blue.png') no-repeat center center;}
+
+.icon-rss { background:url('icons/rss.png') no-repeat center center;}
+
+.icon-rss-add { background:url('icons/rss_add.png') no-repeat center center;}
+
+.icon-rss-delete { background:url('icons/rss_delete.png') no-repeat center center;}
+
+.icon-rss-error { background:url('icons/rss_error.png') no-repeat center center;}
+
+.icon-rss-go { background:url('icons/rss_go.png') no-repeat center center;}
+
+.icon-rss-valid { background:url('icons/rss_valid.png') no-repeat center center;}
+
+.icon-ruby { background:url('icons/ruby.png') no-repeat center center;}
+
+.icon-ruby-add { background:url('icons/ruby_add.png') no-repeat center center;}
+
+.icon-ruby-delete { background:url('icons/ruby_delete.png') no-repeat center center;}
+
+.icon-ruby-gear { background:url('icons/ruby_gear.png') no-repeat center center;}
+
+.icon-ruby-get { background:url('icons/ruby_get.png') no-repeat center center;}
+
+.icon-ruby-go { background:url('icons/ruby_go.png') no-repeat center center;}
+
+.icon-ruby-key { background:url('icons/ruby_key.png') no-repeat center center;}
+
+.icon-ruby-link { background:url('icons/ruby_link.png') no-repeat center center;}
+
+.icon-ruby-put { background:url('icons/ruby_put.png') no-repeat center center;}
+
+.icon-script { background:url('icons/script.png') no-repeat center center;}
+
+.icon-script-add { background:url('icons/script_add.png') no-repeat center center;}
+
+.icon-script-code { background:url('icons/script_code.png') no-repeat center center;}
+
+.icon-script-code-red { background:url('icons/script_code_red.png') no-repeat center center;}
+
+.icon-script-delete { background:url('icons/script_delete.png') no-repeat center center;}
+
+.icon-script-edit { background:url('icons/script_edit.png') no-repeat center center;}
+
+.icon-script-error { background:url('icons/script_error.png') no-repeat center center;}
+
+.icon-script-gear { background:url('icons/script_gear.png') no-repeat center center;}
+
+.icon-script-go { background:url('icons/script_go.png') no-repeat center center;}
+
+.icon-script-key { background:url('icons/script_key.png') no-repeat center center;}
+
+.icon-script-lightning { background:url('icons/script_lightning.png') no-repeat center center;}
+
+.icon-script-link { background:url('icons/script_link.png') no-repeat center center;}
+
+.icon-script-palette { background:url('icons/script_palette.png') no-repeat center center;}
+
+.icon-script-save { background:url('icons/script_save.png') no-repeat center center;}
+
+.icon-script-start { background:url('icons/script_start.png') no-repeat center center;}
+
+.icon-script-stop { background:url('icons/script_stop.png') no-repeat center center;}
+
+.icon-search { background:url('icons/search.png') no-repeat center center;}
+
+.icon-seasons { background:url('icons/seasons.png') no-repeat center center;}
+
+.icon-section-collapsed { background:url('icons/section_collapsed.png') no-repeat center center;}
+
+.icon-section-expanded { background:url('icons/section_expanded.png') no-repeat center center;}
+
+.icon-server { background:url('icons/server.png') no-repeat center center;}
+
+.icon-server-add { background:url('icons/server_add.png') no-repeat center center;}
+
+.icon-server-chart { background:url('icons/server_chart.png') no-repeat center center;}
+
+.icon-server-compressed { background:url('icons/server_compressed.png') no-repeat center center;}
+
+.icon-server-connect { background:url('icons/server_connect.png') no-repeat center center;}
+
+.icon-server-database { background:url('icons/server_database.png') no-repeat center center;}
+
+.icon-server-delete { background:url('icons/server_delete.png') no-repeat center center;}
+
+.icon-server-edit { background:url('icons/server_edit.png') no-repeat center center;}
+
+.icon-server-error { background:url('icons/server_error.png') no-repeat center center;}
+
+.icon-server-go { background:url('icons/server_go.png') no-repeat center center;}
+
+.icon-server-key { background:url('icons/server_key.png') no-repeat center center;}
+
+.icon-server-lightning { background:url('icons/server_lightning.png') no-repeat center center;}
+
+.icon-server-link { background:url('icons/server_link.png') no-repeat center center;}
+
+.icon-server-start { background:url('icons/server_start.png') no-repeat center center;}
+
+.icon-server-stop { background:url('icons/server_stop.png') no-repeat center center;}
+
+.icon-server-uncompressed { background:url('icons/server_uncompressed.png') no-repeat center center;}
+
+.icon-server-wrench { background:url('icons/server_wrench.png') no-repeat center center;}
+
+.icon-settings32 { background:url('icons/settings32.png') no-repeat center center;}
+
+.icon-shading { background:url('icons/shading.png') no-repeat center center;}
+
+.icon-shapes-many { background:url('icons/shapes_many.png') no-repeat center center;}
+
+.icon-shapes-many-select { background:url('icons/shapes_many_select.png') no-repeat center center;}
+
+.icon-shape-3d { background:url('icons/shape_3d.png') no-repeat center center;}
+
+.icon-shape-align-bottom { background:url('icons/shape_align_bottom.png') no-repeat center center;}
+
+.icon-shape-align-center { background:url('icons/shape_align_center.png') no-repeat center center;}
+
+.icon-shape-align-left { background:url('icons/shape_align_left.png') no-repeat center center;}
+
+.icon-shape-align-middle { background:url('icons/shape_align_middle.png') no-repeat center center;}
+
+.icon-shape-align-right { background:url('icons/shape_align_right.png') no-repeat center center;}
+
+.icon-shape-align-top { background:url('icons/shape_align_top.png') no-repeat center center;}
+
+.icon-shape-flip-horizontal { background:url('icons/shape_flip_horizontal.png') no-repeat center center;}
+
+.icon-shape-flip-vertical { background:url('icons/shape_flip_vertical.png') no-repeat center center;}
+
+.icon-shape-group { background:url('icons/shape_group.png') no-repeat center center;}
+
+.icon-shape-handles { background:url('icons/shape_handles.png') no-repeat center center;}
+
+.icon-shape-move-back { background:url('icons/shape_move_back.png') no-repeat center center;}
+
+.icon-shape-move-backwards { background:url('icons/shape_move_backwards.png') no-repeat center center;}
+
+.icon-shape-move-forwards { background:url('icons/shape_move_forwards.png') no-repeat center center;}
+
+.icon-shape-move-front { background:url('icons/shape_move_front.png') no-repeat center center;}
+
+.icon-shape-rotate-anticlockwise { background:url('icons/shape_rotate_anticlockwise.png') no-repeat center center;}
+
+.icon-shape-rotate-clockwise { background:url('icons/shape_rotate_clockwise.png') no-repeat center center;}
+
+.icon-shape-shade-a { background:url('icons/shape_shade_a.png') no-repeat center center;}
+
+.icon-shape-shade-b { background:url('icons/shape_shade_b.png') no-repeat center center;}
+
+.icon-shape-shade-c { background:url('icons/shape_shade_c.png') no-repeat center center;}
+
+.icon-shape-shadow { background:url('icons/shape_shadow.png') no-repeat center center;}
+
+.icon-shape-shadow-toggle { background:url('icons/shape_shadow_toggle.png') no-repeat center center;}
+
+.icon-shape-square { background:url('icons/shape_square.png') no-repeat center center;}
+
+.icon-shape-square-add { background:url('icons/shape_square_add.png') no-repeat center center;}
+
+.icon-shape-square-delete { background:url('icons/shape_square_delete.png') no-repeat center center;}
+
+.icon-shape-square-edit { background:url('icons/shape_square_edit.png') no-repeat center center;}
+
+.icon-shape-square-error { background:url('icons/shape_square_error.png') no-repeat center center;}
+
+.icon-shape-square-go { background:url('icons/shape_square_go.png') no-repeat center center;}
+
+.icon-shape-square-key { background:url('icons/shape_square_key.png') no-repeat center center;}
+
+.icon-shape-square-link { background:url('icons/shape_square_link.png') no-repeat center center;}
+
+.icon-shape-square-select { background:url('icons/shape_square_select.png') no-repeat center center;}
+
+.icon-shape-ungroup { background:url('icons/shape_ungroup.png') no-repeat center center;}
+
+.icon-share { background:url('icons/share.png') no-repeat center center;}
+
+.icon-shield { background:url('icons/shield.png') no-repeat center center;}
+
+.icon-shield-add { background:url('icons/shield_add.png') no-repeat center center;}
+
+.icon-shield-delete { background:url('icons/shield_delete.png') no-repeat center center;}
+
+.icon-shield-error { background:url('icons/shield_error.png') no-repeat center center;}
+
+.icon-shield-go { background:url('icons/shield_go.png') no-repeat center center;}
+
+.icon-shield-rainbow { background:url('icons/shield_rainbow.png') no-repeat center center;}
+
+.icon-shield-silver { background:url('icons/shield_silver.png') no-repeat center center;}
+
+.icon-shield-start { background:url('icons/shield_start.png') no-repeat center center;}
+
+.icon-shield-stop { background:url('icons/shield_stop.png') no-repeat center center;}
+
+.icon-sitemap { background:url('icons/sitemap.png') no-repeat center center;}
+
+.icon-sitemap-color { background:url('icons/sitemap_color.png') no-repeat center center;}
+
+.icon-smartphone { background:url('icons/smartphone.png') no-repeat center center;}
+
+.icon-smartphone-add { background:url('icons/smartphone_add.png') no-repeat center center;}
+
+.icon-smartphone-connect { background:url('icons/smartphone_connect.png') no-repeat center center;}
+
+.icon-smartphone-delete { background:url('icons/smartphone_delete.png') no-repeat center center;}
+
+.icon-smartphone-disk { background:url('icons/smartphone_disk.png') no-repeat center center;}
+
+.icon-smartphone-edit { background:url('icons/smartphone_edit.png') no-repeat center center;}
+
+.icon-smartphone-error { background:url('icons/smartphone_error.png') no-repeat center center;}
+
+.icon-smartphone-go { background:url('icons/smartphone_go.png') no-repeat center center;}
+
+.icon-smartphone-key { background:url('icons/smartphone_key.png') no-repeat center center;}
+
+.icon-smartphone-wrench { background:url('icons/smartphone_wrench.png') no-repeat center center;}
+
+.icon-sort-ascending { background:url('icons/sort_ascending.png') no-repeat center center;}
+
+.icon-sort-descending { background:url('icons/sort_descending.png') no-repeat center center;}
+
+.icon-sound { background:url('icons/sound.png') no-repeat center center;}
+
+.icon-sound-add { background:url('icons/sound_add.png') no-repeat center center;}
+
+.icon-sound-delete { background:url('icons/sound_delete.png') no-repeat center center;}
+
+.icon-sound-high { background:url('icons/sound_high.png') no-repeat center center;}
+
+.icon-sound-in { background:url('icons/sound_in.png') no-repeat center center;}
+
+.icon-sound-low { background:url('icons/sound_low.png') no-repeat center center;}
+
+.icon-sound-mute { background:url('icons/sound_mute.png') no-repeat center center;}
+
+.icon-sound-none { background:url('icons/sound_none.png') no-repeat center center;}
+
+.icon-sound-out { background:url('icons/sound_out.png') no-repeat center center;}
+
+.icon-spellcheck { background:url('icons/spellcheck.png') no-repeat center center;}
+
+.icon-sport-8ball { background:url('icons/sport_8ball.png') no-repeat center center;}
+
+.icon-sport-basketball { background:url('icons/sport_basketball.png') no-repeat center center;}
+
+.icon-sport-football { background:url('icons/sport_football.png') no-repeat center center;}
+
+.icon-sport-golf { background:url('icons/sport_golf.png') no-repeat center center;}
+
+.icon-sport-golf-practice { background:url('icons/sport_golf_practice.png') no-repeat center center;}
+
+.icon-sport-raquet { background:url('icons/sport_raquet.png') no-repeat center center;}
+
+.icon-sport-shuttlecock { background:url('icons/sport_shuttlecock.png') no-repeat center center;}
+
+.icon-sport-soccer { background:url('icons/sport_soccer.png') no-repeat center center;}
+
+.icon-sport-tennis { background:url('icons/sport_tennis.png') no-repeat center center;}
+
+.icon-star { background:url('icons/star.png') no-repeat center center;}
+
+.icon-star-bronze { background:url('icons/star_bronze.png') no-repeat center center;}
+
+.icon-star-bronze-half-grey { background:url('icons/star_bronze_half_grey.png') no-repeat center center;}
+
+.icon-star-gold { background:url('icons/star_gold.png') no-repeat center center;}
+
+.icon-star-gold-half-grey { background:url('icons/star_gold_half_grey.png') no-repeat center center;}
+
+.icon-star-gold-half-silver { background:url('icons/star_gold_half_silver.png') no-repeat center center;}
+
+.icon-star-grey { background:url('icons/star_grey.png') no-repeat center center;}
+
+.icon-star-half-grey { background:url('icons/star_half_grey.png') no-repeat center center;}
+
+.icon-star-silver { background:url('icons/star_silver.png') no-repeat center center;}
+
+.icon-status-away { background:url('icons/status_away.png') no-repeat center center;}
+
+.icon-status-be-right-back { background:url('icons/status_be_right_back.png') no-repeat center center;}
+
+.icon-status-busy { background:url('icons/status_busy.png') no-repeat center center;}
+
+.icon-status-invisible { background:url('icons/status_invisible.png') no-repeat center center;}
+
+.icon-status-offline { background:url('icons/status_offline.png') no-repeat center center;}
+
+.icon-status-online { background:url('icons/status_online.png') no-repeat center center;}
+
+.icon-stop { background:url('icons/stop.png') no-repeat center center;}
+
+.icon-stop-blue { background:url('icons/stop_blue.png') no-repeat center center;}
+
+.icon-stop-green { background:url('icons/stop_green.png') no-repeat center center;}
+
+.icon-stop-red { background:url('icons/stop_red.png') no-repeat center center;}
+
+.icon-style { background:url('icons/style.png') no-repeat center center;}
+
+.icon-style-add { background:url('icons/style_add.png') no-repeat center center;}
+
+.icon-style-delete { background:url('icons/style_delete.png') no-repeat center center;}
+
+.icon-style-edit { background:url('icons/style_edit.png') no-repeat center center;}
+
+.icon-style-go { background:url('icons/style_go.png') no-repeat center center;}
+
+.icon-sum { background:url('icons/sum.png') no-repeat center center;}
+
+.icon-sys { background:url('icons/sys.png') no-repeat center center;}
+
+.icon-tab { background:url('icons/tab.png') no-repeat center center;}
+
+.icon-table { background:url('icons/table.png') no-repeat center center;}
+
+.icon-table-add { background:url('icons/table_add.png') no-repeat center center;}
+
+.icon-table-cell { background:url('icons/table_cell.png') no-repeat center center;}
+
+.icon-table-column { background:url('icons/table_column.png') no-repeat center center;}
+
+.icon-table-column-add { background:url('icons/table_column_add.png') no-repeat center center;}
+
+.icon-table-column-delete { background:url('icons/table_column_delete.png') no-repeat center center;}
+
+.icon-table-connect { background:url('icons/table_connect.png') no-repeat center center;}
+
+.icon-table-delete { background:url('icons/table_delete.png') no-repeat center center;}
+
+.icon-table-edit { background:url('icons/table_edit.png') no-repeat center center;}
+
+.icon-table-error { background:url('icons/table_error.png') no-repeat center center;}
+
+.icon-table-gear { background:url('icons/table_gear.png') no-repeat center center;}
+
+.icon-table-go { background:url('icons/table_go.png') no-repeat center center;}
+
+.icon-table-key { background:url('icons/table_key.png') no-repeat center center;}
+
+.icon-table-lightning { background:url('icons/table_lightning.png') no-repeat center center;}
+
+.icon-table-link { background:url('icons/table_link.png') no-repeat center center;}
+
+.icon-table-multiple { background:url('icons/table_multiple.png') no-repeat center center;}
+
+.icon-table-refresh { background:url('icons/table_refresh.png') no-repeat center center;}
+
+.icon-table-relationship { background:url('icons/table_relationship.png') no-repeat center center;}
+
+.icon-table-row { background:url('icons/table_row.png') no-repeat center center;}
+
+.icon-table-row-delete { background:url('icons/table_row_delete.png') no-repeat center center;}
+
+.icon-table-row-insert { background:url('icons/table_row_insert.png') no-repeat center center;}
+
+.icon-table-save { background:url('icons/table_save.png') no-repeat center center;}
+
+.icon-table-sort { background:url('icons/table_sort.png') no-repeat center center;}
+
+.icon-tab-add { background:url('icons/tab_add.png') no-repeat center center;}
+
+.icon-tab-blue { background:url('icons/tab_blue.png') no-repeat center center;}
+
+.icon-tab-delete { background:url('icons/tab_delete.png') no-repeat center center;}
+
+.icon-tab-edit { background:url('icons/tab_edit.png') no-repeat center center;}
+
+.icon-tab-go { background:url('icons/tab_go.png') no-repeat center center;}
+
+
+.icon-tab-green { background:url('icons/tab_green.png') no-repeat center center;}
+
+.icon-tab-red { background:url('icons/tab_red.png') no-repeat center center;}
+
+.icon-tag { background:url('icons/tag.png') no-repeat center center;}
+
+.icon-tags-grey { background:url('icons/tags_grey.png') no-repeat center center;}
+
+.icon-tags-red { background:url('icons/tags_red.png') no-repeat center center;}
+
+.icon-tag-blue { background:url('icons/tag_blue.png') no-repeat center center;}
+
+.icon-tag-blue-add { background:url('icons/tag_blue_add.png') no-repeat center center;}
+
+.icon-tag-blue-delete { background:url('icons/tag_blue_delete.png') no-repeat center center;}
+
+.icon-tag-blue-edit { background:url('icons/tag_blue_edit.png') no-repeat center center;}
+
+.icon-tag-green { background:url('icons/tag_green.png') no-repeat center center;}
+
+.icon-tag-orange { background:url('icons/tag_orange.png') no-repeat center center;}
+
+.icon-tag-pink { background:url('icons/tag_pink.png') no-repeat center center;}
+
+.icon-tag-purple { background:url('icons/tag_purple.png') no-repeat center center;}
+
+.icon-tag-red { background:url('icons/tag_red.png') no-repeat center center;}
+
+.icon-tag-yellow { background:url('icons/tag_yellow.png') no-repeat center center;}
+
+.icon-telephone { background:url('icons/telephone.png') no-repeat center center;}
+
+.icon-telephone-add { background:url('icons/telephone_add.png') no-repeat center center;}
+
+.icon-telephone-delete { background:url('icons/telephone_delete.png') no-repeat center center;}
+
+.icon-telephone-edit { background:url('icons/telephone_edit.png') no-repeat center center;}
+
+.icon-telephone-error { background:url('icons/telephone_error.png') no-repeat center center;}
+
+.icon-telephone-go { background:url('icons/telephone_go.png') no-repeat center center;}
+
+.icon-telephone-key { background:url('icons/telephone_key.png') no-repeat center center;}
+
+.icon-telephone-link { background:url('icons/telephone_link.png') no-repeat center center;}
+
+.icon-telephone-red { background:url('icons/telephone_red.png') no-repeat center center;}
+
+.icon-television { background:url('icons/television.png') no-repeat center center;}
+
+.icon-television-add { background:url('icons/television_add.png') no-repeat center center;}
+
+.icon-television-delete { background:url('icons/television_delete.png') no-repeat center center;}
+
+.icon-television-in { background:url('icons/television_in.png') no-repeat center center;}
+
+.icon-television-off { background:url('icons/television_off.png') no-repeat center center;}
+
+.icon-television-out { background:url('icons/television_out.png') no-repeat center center;}
+
+.icon-television-star { background:url('icons/television_star.png') no-repeat center center;}
+
+.icon-textfield { background:url('icons/textfield.png') no-repeat center center;}
+
+.icon-textfield-add { background:url('icons/textfield_add.png') no-repeat center center;}
+
+.icon-textfield-delete { background:url('icons/textfield_delete.png') no-repeat center center;}
+
+.icon-textfield-key { background:url('icons/textfield_key.png') no-repeat center center;}
+
+.icon-textfield-rename { background:url('icons/textfield_rename.png') no-repeat center center;}
+
+.icon-text-ab { background:url('icons/text_ab.png') no-repeat center center;}
+
+.icon-text-align-center { background:url('icons/text_align_center.png') no-repeat center center;}
+
+.icon-text-align-justify { background:url('icons/text_align_justify.png') no-repeat center center;}
+
+.icon-text-align-left { background:url('icons/text_align_left.png') no-repeat center center;}
+
+.icon-text-align-right { background:url('icons/text_align_right.png') no-repeat center center;}
+
+.icon-text-allcaps { background:url('icons/text_allcaps.png') no-repeat center center;}
+
+.icon-text-bold { background:url('icons/text_bold.png') no-repeat center center;}
+
+.icon-text-columns { background:url('icons/text_columns.png') no-repeat center center;}
+
+.icon-text-complete { background:url('icons/text_complete.png') no-repeat center center;}
+
+.icon-text-direction { background:url('icons/text_direction.png') no-repeat center center;}
+
+.icon-text-double-underline { background:url('icons/text_double_underline.png') no-repeat center center;}
+
+.icon-text-dropcaps { background:url('icons/text_dropcaps.png') no-repeat center center;}
+
+.icon-text-fit { background:url('icons/text_fit.png') no-repeat center center;}
+
+.icon-text-flip { background:url('icons/text_flip.png') no-repeat center center;}
+
+.icon-text-font-default { background:url('icons/text_font_default.png') no-repeat center center;}
+
+.icon-text-heading-1 { background:url('icons/text_heading_1.png') no-repeat center center;}
+
+.icon-text-heading-2 { background:url('icons/text_heading_2.png') no-repeat center center;}
+
+.icon-text-heading-3 { background:url('icons/text_heading_3.png') no-repeat center center;}
+
+.icon-text-heading-4 { background:url('icons/text_heading_4.png') no-repeat center center;}
+
+.icon-text-heading-5 { background:url('icons/text_heading_5.png') no-repeat center center;}
+
+.icon-text-heading-6 { background:url('icons/text_heading_6.png') no-repeat center center;}
+
+.icon-text-horizontalrule { background:url('icons/text_horizontalrule.png') no-repeat center center;}
+
+.icon-text-indent { background:url('icons/text_indent.png') no-repeat center center;}
+
+.icon-text-indent-remove { background:url('icons/text_indent_remove.png') no-repeat center center;}
+
+.icon-text-inverse { background:url('icons/text_inverse.png') no-repeat center center;}
+
+.icon-text-italic { background:url('icons/text_italic.png') no-repeat center center;}
+
+.icon-text-kerning { background:url('icons/text_kerning.png') no-repeat center center;}
+
+.icon-text-left-to-right { background:url('icons/text_left_to_right.png') no-repeat center center;}
+
+.icon-text-letterspacing { background:url('icons/text_letterspacing.png') no-repeat center center;}
+
+.icon-text-letter-omega { background:url('icons/text_letter_omega.png') no-repeat center center;}
+
+.icon-text-linespacing { background:url('icons/text_linespacing.png') no-repeat center center;}
+
+.icon-text-list-bullets { background:url('icons/text_list_bullets.png') no-repeat center center;}
+
+.icon-text-list-numbers { background:url('icons/text_list_numbers.png') no-repeat center center;}
+
+.icon-text-lowercase { background:url('icons/text_lowercase.png') no-repeat center center;}
+
+.icon-text-lowercase-a { background:url('icons/text_lowercase_a.png') no-repeat center center;}
+
+.icon-text-mirror { background:url('icons/text_mirror.png') no-repeat center center;}
+
+.icon-text-padding-bottom { background:url('icons/text_padding_bottom.png') no-repeat center center;}
+
+.icon-text-padding-left { background:url('icons/text_padding_left.png') no-repeat center center;}
+
+.icon-text-padding-right { background:url('icons/text_padding_right.png') no-repeat center center;}
+
+.icon-text-padding-top { background:url('icons/text_padding_top.png') no-repeat center center;}
+
+.icon-text-replace { background:url('icons/text_replace.png') no-repeat center center;}
+
+.icon-text-right-to-left { background:url('icons/text_right_to_left.png') no-repeat center center;}
+
+.icon-text-rotate-0 { background:url('icons/text_rotate_0.png') no-repeat center center;}
+
+.icon-text-rotate-180 { background:url('icons/text_rotate_180.png') no-repeat center center;}
+
+.icon-text-rotate-270 { background:url('icons/text_rotate_270.png') no-repeat center center;}
+
+.icon-text-rotate-90 { background:url('icons/text_rotate_90.png') no-repeat center center;}
+
+.icon-text-ruler { background:url('icons/text_ruler.png') no-repeat center center;}
+
+.icon-text-shading { background:url('icons/text_shading.png') no-repeat center center;}
+
+.icon-text-signature { background:url('icons/text_signature.png') no-repeat center center;}
+
+.icon-text-smallcaps { background:url('icons/text_smallcaps.png') no-repeat center center;}
+
+.icon-text-spelling { background:url('icons/text_spelling.png') no-repeat center center;}
+
+.icon-text-strikethrough { background:url('icons/text_strikethrough.png') no-repeat center center;}
+
+.icon-text-subscript { background:url('icons/text_subscript.png') no-repeat center center;}
+
+.icon-text-superscript { background:url('icons/text_superscript.png') no-repeat center center;}
+
+.icon-text-tab { background:url('icons/text_tab.png') no-repeat center center;}
+
+.icon-text-underline { background:url('icons/text_underline.png') no-repeat center center;}
+
+.icon-text-uppercase { background:url('icons/text_uppercase.png') no-repeat center center;}
+
+.icon-theme { background:url('icons/theme.png') no-repeat center center;}
+
+.icon-thumb-down { background:url('icons/thumb_down.png') no-repeat center center;}
+
+.icon-thumb-up { background:url('icons/thumb_up.png') no-repeat center center;}
+
+.icon-tick { background:url('icons/tick.png') no-repeat center center;}
+
+.icon-tick-shield { background:url('icons/tick_shield.png') no-repeat center center;}
+
+.icon-time { background:url('icons/time.png') no-repeat center center;}
+
+.icon-timeline-marker { background:url('icons/timeline_marker.png') no-repeat center center;}
+
+.icon-time-add { background:url('icons/time_add.png') no-repeat center center;}
+
+.icon-time-delete { background:url('icons/time_delete.png') no-repeat center center;}
+
+.icon-time-go { background:url('icons/time_go.png') no-repeat center center;}
+
+.icon-time-green { background:url('icons/time_green.png') no-repeat center center;}
+
+.icon-time-red { background:url('icons/time_red.png') no-repeat center center;}
+
+.icon-transmit { background:url('icons/transmit.png') no-repeat center center;}
+
+.icon-transmit-add { background:url('icons/transmit_add.png') no-repeat center center;}
+
+.icon-transmit-blue { background:url('icons/transmit_blue.png') no-repeat center center;}
+
+.icon-transmit-delete { background:url('icons/transmit_delete.png') no-repeat center center;}
+
+.icon-transmit-edit { background:url('icons/transmit_edit.png') no-repeat center center;}
+
+.icon-transmit-error { background:url('icons/transmit_error.png') no-repeat center center;}
+
+.icon-transmit-go { background:url('icons/transmit_go.png') no-repeat center center;}
+
+.icon-transmit-red { background:url('icons/transmit_red.png') no-repeat center center;}
+
+.icon-tree16 { background:url('icons/tree16.png') no-repeat center center;}
+
+.icon-tree32 { background:url('icons/tree32.png') no-repeat center center;}
+
+.icon-tux { background:url('icons/tux.png') no-repeat center center;}
+
+.icon-undo { background:url('icons/undo.png') no-repeat center center;}
+
+.icon-upload { background:url('icons/upload.png') no-repeat center center;}
+
+.icon-user { background:url('icons/user.png') no-repeat center center;}
+
+.icon-users { background:url('icons/users.png') no-repeat center center;}
+
+.icon-user-accept16 { background:url('icons/user_accept16.png') no-repeat center center;}
+
+.icon-user-accept32 { background:url('icons/user_accept32.png') no-repeat center center;}
+
+.icon-user-add { background:url('icons/user_add.png') no-repeat center center;}
+
+.icon-user-alert { background:url('icons/user_alert.png') no-repeat center center;}
+
+.icon-user-b { background:url('icons/user_b.png') no-repeat center center;}
+
+.icon-user-brown { background:url('icons/user_brown.png') no-repeat center center;}
+
+.icon-user-business-boss { background:url('icons/user_business_boss.png') no-repeat center center;}
+
+.icon-user-comment { background:url('icons/user_comment.png') no-repeat center center;}
+
+.icon-user-cross { background:url('icons/user_cross.png') no-repeat center center;}
+
+.icon-user-delete { background:url('icons/user_delete.png') no-repeat center center;}
+
+.icon-user-earth { background:url('icons/user_earth.png') no-repeat center center;}
+
+.icon-user-edit { background:url('icons/user_edit.png') no-repeat center center;}
+
+.icon-user-edit32 { background:url('icons/user_edit32.png') no-repeat center center;}
+
+.icon-user-female { background:url('icons/user_female.png') no-repeat center center;}
+
+.icon-user-go { background:url('icons/user_go.png') no-repeat center center;}
+
+.icon-user-gray { background:url('icons/user_gray.png') no-repeat center center;}
+
+.icon-user-gray-cool { background:url('icons/user_gray_cool.png') no-repeat center center;}
+
+.icon-user-green { background:url('icons/user_green.png') no-repeat center center;}
+
+.icon-user-group { background:url('icons/user_group.png') no-repeat center center;}
+
+.icon-user-home { background:url('icons/user_home.png') no-repeat center center;}
+
+.icon-user-key { background:url('icons/user_key.png') no-repeat center center;}
+
+.icon-user-magnify { background:url('icons/user_magnify.png') no-repeat center center;}
+
+.icon-user-mature { background:url('icons/user_mature.png') no-repeat center center;}
+
+.icon-user-orange { background:url('icons/user_orange.png') no-repeat center center;}
+
+.icon-user-red { background:url('icons/user_red.png') no-repeat center center;}
+
+.icon-user-reject16 { background:url('icons/user_reject16.png') no-repeat center center;}
+
+.icon-user-reject32 { background:url('icons/user_reject32.png') no-repeat center center;}
+
+.icon-user-star { background:url('icons/user_star.png') no-repeat center center;}
+
+.icon-user-suit { background:url('icons/user_suit.png') no-repeat center center;}
+
+.icon-user-suit-black { background:url('icons/user_suit_black.png') no-repeat center center;}
+
+.icon-user-tick { background:url('icons/user_tick.png') no-repeat center center;}
+
+.icon-vcard { background:url('icons/vcard.png') no-repeat center center;}
+
+.icon-vcard-add { background:url('icons/vcard_add.png') no-repeat center center;}
+
+.icon-vcard-delete { background:url('icons/vcard_delete.png') no-repeat center center;}
+
+.icon-vcard-edit { background:url('icons/vcard_edit.png') no-repeat center center;}
+
+.icon-vcard-key { background:url('icons/vcard_key.png') no-repeat center center;}
+
+.icon-vector { background:url('icons/vector.png') no-repeat center center;}
+
+.icon-vector-add { background:url('icons/vector_add.png') no-repeat center center;}
+
+.icon-vector-delete { background:url('icons/vector_delete.png') no-repeat center center;}
+
+.icon-vector-key { background:url('icons/vector_key.png') no-repeat center center;}
+
+.icon-wand { background:url('icons/wand.png') no-repeat center center;}
+
+.icon-weather-cloud { background:url('icons/weather_cloud.png') no-repeat center center;}
+
+.icon-weather-clouds { background:url('icons/weather_clouds.png') no-repeat center center;}
+
+.icon-weather-cloudy { background:url('icons/weather_cloudy.png') no-repeat center center;}
+
+.icon-weather-cloudy-rain { background:url('icons/weather_cloudy_rain.png') no-repeat center center;}
+
+.icon-weather-lightning { background:url('icons/weather_lightning.png') no-repeat center center;}
+
+.icon-weather-rain { background:url('icons/weather_rain.png') no-repeat center center;}
+
+.icon-weather-snow { background:url('icons/weather_snow.png') no-repeat center center;}
+
+.icon-weather-sun { background:url('icons/weather_sun.png') no-repeat center center;}
+
+.icon-webcam { background:url('icons/webcam.png') no-repeat center center;}
+
+.icon-webcam-add { background:url('icons/webcam_add.png') no-repeat center center;}
+
+.icon-webcam-connect { background:url('icons/webcam_connect.png') no-repeat center center;}
+
+.icon-webcam-delete { background:url('icons/webcam_delete.png') no-repeat center center;}
+
+.icon-webcam-error { background:url('icons/webcam_error.png') no-repeat center center;}
+
+.icon-webcam-start { background:url('icons/webcam_start.png') no-repeat center center;}
+
+.icon-webcam-stop { background:url('icons/webcam_stop.png') no-repeat center center;}
+
+.icon-world { background:url('icons/world.png') no-repeat center center;}
+
+.icon-world-add { background:url('icons/world_add.png') no-repeat center center;}
+
+.icon-world-connect { background:url('icons/world_connect.png') no-repeat center center;}
+
+.icon-world-dawn { background:url('icons/world_dawn.png') no-repeat center center;}
+
+.icon-world-delete { background:url('icons/world_delete.png') no-repeat center center;}
+
+.icon-world-edit { background:url('icons/world_edit.png') no-repeat center center;}
+
+.icon-world-go { background:url('icons/world_go.png') no-repeat center center;}
+
+.icon-world-key { background:url('icons/world_key.png') no-repeat center center;}
+
+.icon-world-link { background:url('icons/world_link.png') no-repeat center center;}
+
+.icon-world-night { background:url('icons/world_night.png') no-repeat center center;}
+
+.icon-world-orbit { background:url('icons/world_orbit.png') no-repeat center center;}
+
+.icon-wrench { background:url('icons/wrench.png') no-repeat center center;}
+
+.icon-wrench-orange { background:url('icons/wrench_orange.png') no-repeat center center;}
+
+.icon-writing32 { background:url('icons/writing32.png') no-repeat center center;}
+
+.icon-xhtml { background:url('icons/xhtml.png') no-repeat center center;}
+
+.icon-xhtml-add { background:url('icons/xhtml_add.png') no-repeat center center;}
+
+.icon-xhtml-delete { background:url('icons/xhtml_delete.png') no-repeat center center;}
+
+.icon-xhtml-error { background:url('icons/xhtml_error.png') no-repeat center center;}
+
+.icon-xhtml-go { background:url('icons/xhtml_go.png') no-repeat center center;}
+
+.icon-xhtml-valid { background:url('icons/xhtml_valid.png') no-repeat center center;}
+
+.icon-zoom { background:url('icons/zoom.png') no-repeat center center;}
+
+.icon-zoom-in { background:url('icons/zoom_in.png') no-repeat center center;}
+
+.icon-zoom-out { background:url('icons/zoom_out.png') no-repeat center center;}

BIN
src/main/webapp/static/css/icons/DeleteRed.png


BIN
src/main/webapp/static/css/icons/accept.png


BIN
src/main/webapp/static/css/icons/add.png


BIN
src/main/webapp/static/css/icons/add1.png


BIN
src/main/webapp/static/css/icons/advancedsettings.png


BIN
src/main/webapp/static/css/icons/advancedsettings2.png


BIN
src/main/webapp/static/css/icons/anchor.png


BIN
src/main/webapp/static/css/icons/application.png


BIN
src/main/webapp/static/css/icons/application_add.png


BIN
src/main/webapp/static/css/icons/application_cascade.png


BIN
src/main/webapp/static/css/icons/application_delete.png


BIN
src/main/webapp/static/css/icons/application_double.png


BIN
src/main/webapp/static/css/icons/application_edit.png


BIN
src/main/webapp/static/css/icons/application_error.png


BIN
src/main/webapp/static/css/icons/application_form.png


BIN
src/main/webapp/static/css/icons/application_form_add.png


BIN
src/main/webapp/static/css/icons/application_form_delete.png


BIN
src/main/webapp/static/css/icons/application_form_edit.png


BIN
src/main/webapp/static/css/icons/application_form_magnify.png


BIN
src/main/webapp/static/css/icons/application_get.png


BIN
src/main/webapp/static/css/icons/application_go.png


BIN
src/main/webapp/static/css/icons/application_home.png


BIN
src/main/webapp/static/css/icons/application_key.png


BIN
src/main/webapp/static/css/icons/application_lightning.png


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.