Browse Source

template engine thymeleaf

albertshaw 8 years ago
parent
commit
ca2869efd0
64 changed files with 1006 additions and 503 deletions
  1. 15 0
      pom.xml
  2. 24 20
      src/main/java/com/goafanti/common/controller/BaseController.java
  3. 20 0
      src/main/java/com/goafanti/common/controller/PortalController.java
  4. 6 5
      src/main/java/com/goafanti/common/controller/WebpageController.java
  5. 5 4
      src/main/java/com/goafanti/common/utils/LoggerUtils.java
  6. 16 2
      src/main/java/com/goafanti/core/shiro/token/TokenManager.java
  7. 22 20
      src/main/resources/props/config_dev.properties
  8. 23 21
      src/main/resources/props/config_local.properties
  9. 21 19
      src/main/resources/props/config_prod.properties
  10. 22 20
      src/main/resources/props/config_test.properties
  11. 2 0
      src/main/resources/shiro_base_auth.ini
  12. 48 9
      src/main/resources/spring/spring-mvc.xml
  13. BIN
      src/main/webapp/WEB-INF/assets/favicon.ico
  14. 8 0
      src/main/webapp/WEB-INF/assets/robots.txt
  15. 16 0
      src/main/webapp/WEB-INF/views/admin/achievement.html
  16. 0 11
      src/main/webapp/WEB-INF/views/admin/achievement.jsp
  17. 16 0
      src/main/webapp/WEB-INF/views/admin/demand.html
  18. 0 11
      src/main/webapp/WEB-INF/views/admin/demand.jsp
  19. 16 0
      src/main/webapp/WEB-INF/views/admin/index.html
  20. 0 11
      src/main/webapp/WEB-INF/views/admin/index.jsp
  21. 16 0
      src/main/webapp/WEB-INF/views/admin/login.html
  22. 0 11
      src/main/webapp/WEB-INF/views/admin/login.jsp
  23. 16 0
      src/main/webapp/WEB-INF/views/admin/servicesManage/contract.html
  24. 0 11
      src/main/webapp/WEB-INF/views/admin/servicesManage/contract.jsp
  25. 16 0
      src/main/webapp/WEB-INF/views/admin/servicesManage/copyright.html
  26. 0 11
      src/main/webapp/WEB-INF/views/admin/servicesManage/copyright.jsp
  27. 16 0
      src/main/webapp/WEB-INF/views/admin/servicesManage/highTech.html
  28. 0 11
      src/main/webapp/WEB-INF/views/admin/servicesManage/highTech.jsp
  29. 16 0
      src/main/webapp/WEB-INF/views/admin/servicesManage/highTechInfo.html
  30. 0 11
      src/main/webapp/WEB-INF/views/admin/servicesManage/highTechInfo.jsp
  31. 16 0
      src/main/webapp/WEB-INF/views/admin/servicesManage/patent.html
  32. 0 11
      src/main/webapp/WEB-INF/views/admin/servicesManage/patent.jsp
  33. 16 0
      src/main/webapp/WEB-INF/views/admin/servicesManage/technology.html
  34. 0 11
      src/main/webapp/WEB-INF/views/admin/servicesManage/technology.jsp
  35. 16 0
      src/main/webapp/WEB-INF/views/admin/set.html
  36. 0 11
      src/main/webapp/WEB-INF/views/admin/set.jsp
  37. 16 0
      src/main/webapp/WEB-INF/views/admin/userManage.html
  38. 0 11
      src/main/webapp/WEB-INF/views/admin/userManage.jsp
  39. 93 0
      src/main/webapp/WEB-INF/views/common.html
  40. 18 0
      src/main/webapp/WEB-INF/views/error.html
  41. 0 18
      src/main/webapp/WEB-INF/views/error.jsp
  42. 0 104
      src/main/webapp/WEB-INF/views/header.jsp
  43. 311 0
      src/main/webapp/WEB-INF/views/index.html
  44. 0 19
      src/main/webapp/WEB-INF/views/index.jsp
  45. 16 0
      src/main/webapp/WEB-INF/views/user/account/achievement.html
  46. 0 11
      src/main/webapp/WEB-INF/views/user/account/achievement.jsp
  47. 16 0
      src/main/webapp/WEB-INF/views/user/account/demand.html
  48. 0 11
      src/main/webapp/WEB-INF/views/user/account/demand.jsp
  49. 16 0
      src/main/webapp/WEB-INF/views/user/account/index.html
  50. 0 11
      src/main/webapp/WEB-INF/views/user/account/index.jsp
  51. 16 0
      src/main/webapp/WEB-INF/views/user/account/services.html
  52. 0 11
      src/main/webapp/WEB-INF/views/user/account/services.jsp
  53. 16 0
      src/main/webapp/WEB-INF/views/user/account/set.html
  54. 0 11
      src/main/webapp/WEB-INF/views/user/account/set.jsp
  55. 16 0
      src/main/webapp/WEB-INF/views/user/certify.html
  56. 0 11
      src/main/webapp/WEB-INF/views/user/certify.jsp
  57. 16 0
      src/main/webapp/WEB-INF/views/user/groupCertify.html
  58. 0 11
      src/main/webapp/WEB-INF/views/user/groupCertify.jsp
  59. 16 0
      src/main/webapp/WEB-INF/views/user/index.html
  60. 0 11
      src/main/webapp/WEB-INF/views/user/index.jsp
  61. 16 0
      src/main/webapp/WEB-INF/views/user/login.html
  62. 0 11
      src/main/webapp/WEB-INF/views/user/login.jsp
  63. 16 0
      src/main/webapp/WEB-INF/views/user/signIn.html
  64. 0 11
      src/main/webapp/WEB-INF/views/user/signIn.jsp

+ 15 - 0
pom.xml

@@ -95,6 +95,21 @@
 			<artifactId>spring-messaging</artifactId>
 			<version>${org.springframework-version}</version>
 		</dependency>
+		<dependency>
+		    <groupId>org.thymeleaf</groupId>
+		    <artifactId>thymeleaf-spring4</artifactId>
+		    <version>3.0.5.RELEASE</version>
+		</dependency>
+		<dependency>
+		    <groupId>nz.net.ultraq.thymeleaf</groupId>
+		    <artifactId>thymeleaf-layout-dialect</artifactId>
+		    <version>2.2.1</version>
+		</dependency>
+		<dependency>
+            <groupId>com.github.theborakompanioni</groupId>
+            <artifactId>thymeleaf-extras-shiro</artifactId>
+            <version>2.0.0</version>
+        </dependency>
 		<!-- spring end -->
 
 		<!-- redis begin -->

+ 24 - 20
src/main/java/com/goafanti/common/controller/BaseController.java

@@ -28,26 +28,25 @@ import com.goafanti.core.shiro.token.TokenManager;
 @Controller
 public class BaseController {
 	@Resource(name = "errorResource")
-	private ResourcePropertySource errorResource;
+	private ResourcePropertySource	errorResource;
 
 	@Value(value = "${static.host}")
-	private String staticHost = null;
-	
+	private String					staticHost			= null;
+
 	@Value(value = "${avatar.host}")
-	private String avatarHost = null;
-	
+	private String					avatarHost			= null;
+
 	@Value(value = "${upload.path}")
-	private String uploadPath = null;
-	
+	private String					uploadPath			= null;
+
 	@Value(value = "${upload.private.path}")
-	private String uploadPrivatePath = null;
-	
-	
+	private String					uploadPrivatePath	= null;
+
 	@Value(value = "${accessKey}")
-	private String accessKey = null;
-	
+	private String					accessKey			= null;
+
 	@Value(value = "${accessSecret}")
-	private String accessSecret = null;
+	private String					accessSecret		= null;
 
 	protected Error buildError(String key) {
 		return buildError(key, null);
@@ -81,7 +80,6 @@ public class BaseController {
 	protected Error buildErrorByMsg(String msg, Object... params) {
 		return new Error(MessageFormat.format(msg, params));
 	}
-	
 
 	@InitBinder
 	public void initBinder(WebDataBinder binder) {
@@ -92,16 +90,22 @@ public class BaseController {
 
 	@ModelAttribute
 	public void prepareModel(HttpServletRequest request, Model model) {
-		
+
+		model.addAttribute("staticDomain", avatarHost);
 		model.addAttribute("staticHost", staticHost);
 		model.addAttribute("avatarHost", avatarHost);
 		model.addAttribute("basePath", request.getContextPath());
-		if (SecurityUtils.getSubject().getPrincipal()  instanceof User){
-			model.addAttribute("userData", TokenManager.getToken() );
+		model.addAttribute("shiro", SecurityUtils.getSubject());
+		model.addAttribute("isLogin", TokenManager.isLogin());
+		model.addAttribute("csrf", TokenManager.getCSRF());
+		if (TokenManager.isLogin() && TokenManager.getToken() instanceof User) {
+			model.addAttribute("userData", TokenManager.getUserToken());
+			model.addAttribute("userName", TokenManager.getUserToken().getNickname());
 		}
-		
-		if (SecurityUtils.getSubject().getPrincipal()  instanceof Admin){
-			model.addAttribute("adminData", TokenManager.getAdminToken() );
+
+		if (TokenManager.isLogin() && TokenManager.getToken() instanceof Admin) {
+			model.addAttribute("adminData", TokenManager.getAdminToken());
+			model.addAttribute("userName", TokenManager.getAdminToken().getName());
 		}
 	}
 }

+ 20 - 0
src/main/java/com/goafanti/common/controller/PortalController.java

@@ -0,0 +1,20 @@
+package com.goafanti.common.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.ModelAndView;
+
+@Controller
+public class PortalController extends BaseController {
+	
+	@RequestMapping(value = "/index", method = RequestMethod.GET)
+	public String index(ModelAndView modelview) {
+		return "/index";
+	}
+	
+	@RequestMapping(value = "/", method = RequestMethod.GET)
+	public String home(ModelAndView modelview) {
+		return "/index";
+	}
+}

+ 6 - 5
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -25,11 +25,6 @@ public class WebpageController extends BaseController {
 	@Resource
 	private AdminService adminService;
 	
-	@RequestMapping(value = "/", method = RequestMethod.GET)
-	public ModelAndView home(HttpServletRequest request, ModelAndView modelview) {
-		return userLogin(request,modelview,"/index");
-	}
-	
 	@RequestMapping(value = "user/account/index", method = RequestMethod.GET)
 	public ModelAndView index(HttpServletRequest request, ModelAndView modelview) {
 		return userLogin(request,modelview,"/user/account/index");
@@ -55,6 +50,12 @@ public class WebpageController extends BaseController {
 		return "/user/login";
 	}
 	
+	@RequestMapping(value = "/user/logout", method = RequestMethod.GET)
+	public String userLogout(HttpServletRequest request, ModelAndView modelview) {
+		TokenManager.logout();
+		return userLogin(request, modelview);
+	}
+	
 	@RequestMapping(value = "/user/signIn", method = RequestMethod.GET)
 	public String userSignin(HttpServletRequest request, ModelAndView modelview) {
 		return "/user/signIn";

+ 5 - 4
src/main/java/com/goafanti/common/utils/LoggerUtils.java

@@ -1,13 +1,14 @@
 package com.goafanti.common.utils;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class LoggerUtils {
 	/**
 	 * 是否开启Debug
 	 */
-	public static boolean isDebug = Logger.getLogger(LoggerUtils.class).isDebugEnabled();
+	public static boolean isDebug = LoggerFactory.getLogger(LoggerUtils.class).isDebugEnabled();
 
 	/**
 	 * Debug 输出
@@ -20,7 +21,7 @@ public class LoggerUtils {
 	public static void debug(Class<? extends Object> clazz, String message) {
 		if (!isDebug)
 			return;
-		Logger logger = Logger.getLogger(clazz);
+		Logger logger = LoggerFactory.getLogger(clazz);
 		logger.debug(message);
 	}
 
@@ -57,7 +58,7 @@ public class LoggerUtils {
 	 *            异常类
 	 */
 	public static void error(Class<? extends Object> clazz, String message, Exception e) {
-		Logger logger = Logger.getLogger(clazz);
+		Logger logger = LoggerFactory.getLogger(clazz);
 		if (null == e) {
 			logger.error(message);
 			return;

+ 16 - 2
src/main/java/com/goafanti/core/shiro/token/TokenManager.java

@@ -1,5 +1,7 @@
 package com.goafanti.core.shiro.token;
 
+import java.util.UUID;
+
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.session.Session;
 
@@ -10,6 +12,7 @@ import com.goafanti.common.utils.SpringContextUtils;
 import com.goafanti.core.shiro.session.CustomSessionManager;
 
 public class TokenManager {
+	private static final String					CSRF_TOKEN				= "CSRF_TOKEN";
 	// 用户登录管理
 	public static final UserRealm				realm					= SpringContextUtils.getBean("userRealm",
 			UserRealm.class);
@@ -127,13 +130,14 @@ public class TokenManager {
 	public static String getAdminId() {
 		return getToken() == null ? null : getToken().getId();
 	}
-	
+
 	/**
 	 * 
 	 * 获取当前管理员所在省份
+	 * 
 	 * @return
 	 */
-	public static String getProvince(){
+	public static String getProvince() {
 		return getToken() == null ? null : getToken().getProvince();
 	}
 
@@ -149,6 +153,15 @@ public class TokenManager {
 	}
 
 	/**
+	 * 获取CSRF TOKEN
+	 * 
+	 * @return
+	 */
+	public static String getCSRF() {
+		return (String) getSession().getAttribute(CSRF_TOKEN);
+	}
+
+	/**
 	 * 用户登录
 	 * 
 	 * @param user
@@ -159,6 +172,7 @@ public class TokenManager {
 		ShiroToken token = new ShiroToken(user.getMobile(), user.getPassword(), user.getType());
 		token.setRememberMe(null == rememberMe ? false : rememberMe);
 		SecurityUtils.getSubject().login(token);
+		setVal2Session(CSRF_TOKEN, UUID.randomUUID().toString().replace("-", ""));
 		return (User) getToken();
 	}
 

+ 22 - 20
src/main/resources/props/config_dev.properties

@@ -1,41 +1,41 @@
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
+#\u6570\u636E\u5E93\u94FE\u63A5\uFF0C
 jdbc.url=jdbc:mysql://123.57.207.214:3306/pro_aft_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
-#\u5e10\u53f7
+#\u5E10\u53F7
 jdbc.username=xiaolong
-#\u5bc6\u7801
+#\u5BC6\u7801
 jdbc.password=!qaz2wsx
-#\u68c0\u6d4b\u6570\u636e\u5e93\u94fe\u63a5\u662f\u5426\u6709\u6548\uff0c\u5fc5\u987b\u914d\u7f6e
+#\u68C0\u6D4B\u6570\u636E\u5E93\u94FE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u5FC5\u987B\u914D\u7F6E
 jdbc.validationQuery=SELECT 'x'
-#\u521d\u59cb\u8fde\u63a5\u6570
+#\u521D\u59CB\u8FDE\u63A5\u6570
 jdbc.initialSize=3
-#\u6700\u5927\u8fde\u63a5\u6c60\u6570\u91cf
+#\u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
 jdbc.maxActive=20
-#\u53bb\u6389\uff0c\u914d\u7f6e\u6587\u4ef6\u5bf9\u5e94\u53bb\u6389
+#\u53BB\u6389\uFF0C\u914D\u7F6E\u6587\u4EF6\u5BF9\u5E94\u53BB\u6389
 #jdbc.maxIdle=20
-#\u914d\u7f6e0,\u5f53\u7ebf\u7a0b\u6c60\u6570\u91cf\u4e0d\u8db3\uff0c\u81ea\u52a8\u8865\u5145\u3002
+#\u914D\u7F6E0,\u5F53\u7EBF\u7A0B\u6C60\u6570\u91CF\u4E0D\u8DB3\uFF0C\u81EA\u52A8\u8865\u5145\u3002
 jdbc.minIdle=0
-#\u83b7\u53d6\u94fe\u63a5\u8d85\u65f6\u65f6\u95f4\u4e3a1\u5206\u949f\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2\u3002
+#\u83B7\u53D6\u94FE\u63A5\u8D85\u65F6\u65F6\u95F4\u4E3A1\u5206\u949F\uFF0C\u5355\u4F4D\u4E3A\u6BEB\u79D2\u3002
 jdbc.maxWait=120000
-#\u83b7\u53d6\u94fe\u63a5\u7684\u65f6\u5019\uff0c\u4e0d\u6821\u9a8c\u662f\u5426\u53ef\u7528\uff0c\u5f00\u542f\u4f1a\u6709\u635f\u6027\u80fd\u3002
+#\u83B7\u53D6\u94FE\u63A5\u7684\u65F6\u5019\uFF0C\u4E0D\u6821\u9A8C\u662F\u5426\u53EF\u7528\uFF0C\u5F00\u542F\u4F1A\u6709\u635F\u6027\u80FD\u3002
 jdbc.testOnBorrow=false
-#\u5f52\u8fd8\u94fe\u63a5\u5230\u8fde\u63a5\u6c60\u7684\u65f6\u5019\u6821\u9a8c\u94fe\u63a5\u662f\u5426\u53ef\u7528\u3002
+#\u5F52\u8FD8\u94FE\u63A5\u5230\u8FDE\u63A5\u6C60\u7684\u65F6\u5019\u6821\u9A8C\u94FE\u63A5\u662F\u5426\u53EF\u7528\u3002
 jdbc.testOnReturn=false
-#\u6b64\u9879\u914d\u7f6e\u4e3atrue\u5373\u53ef\uff0c\u4e0d\u5f71\u54cd\u6027\u80fd\uff0c\u5e76\u4e14\u4fdd\u8bc1\u5b89\u5168\u6027\u3002\u610f\u4e49\u4e3a\uff1a\u7533\u8bf7\u8fde\u63a5\u7684\u65f6\u5019\u68c0\u6d4b\uff0c\u5982\u679c\u7a7a\u95f2\u65f6\u95f4\u5927\u4e8etimeBetweenEvictionRunsMillis\uff0c\u6267\u884cvalidationQuery\u68c0\u6d4b\u8fde\u63a5\u662f\u5426\u6709\u6548\u3002
+#\u6B64\u9879\u914D\u7F6E\u4E3Atrue\u5373\u53EF\uFF0C\u4E0D\u5F71\u54CD\u6027\u80FD\uFF0C\u5E76\u4E14\u4FDD\u8BC1\u5B89\u5168\u6027\u3002\u610F\u4E49\u4E3A\uFF1A\u7533\u8BF7\u8FDE\u63A5\u7684\u65F6\u5019\u68C0\u6D4B\uFF0C\u5982\u679C\u7A7A\u95F2\u65F6\u95F4\u5927\u4E8EtimeBetweenEvictionRunsMillis\uFF0C\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\u3002
 jdbc.testWhileIdle=true
-#1.Destroy\u7ebf\u7a0b\u4f1a\u68c0\u6d4b\u8fde\u63a5\u7684\u95f4\u9694\u65f6\u95f4
-#2.testWhileIdle\u7684\u5224\u65ad\u4f9d\u636e
+#1.Destroy\u7EBF\u7A0B\u4F1A\u68C0\u6D4B\u8FDE\u63A5\u7684\u95F4\u9694\u65F6\u95F4
+#2.testWhileIdle\u7684\u5224\u65AD\u4F9D\u636E
 jdbc.timeBetweenEvictionRunsMillis=60000
-#\u4e00\u4e2a\u94fe\u63a5\u751f\u5b58\u7684\u65f6\u95f4\uff08\u4e4b\u524d\u7684\u503c\uff1a25200000\uff0c\u8fd9\u4e2a\u65f6\u95f4\u6709\u70b9BT\uff0c\u8fd9\u4e2a\u7ed3\u679c\u4e0d\u77e5\u9053\u662f\u600e\u4e48\u6765\u7684\uff0c\u6362\u7b97\u540e\u7684\u7ed3\u679c\u662f\uff1a25200000/1000/60/60 = 7\u4e2a\u5c0f\u65f6\uff09
+#\u4E00\u4E2A\u94FE\u63A5\u751F\u5B58\u7684\u65F6\u95F4\uFF08\u4E4B\u524D\u7684\u503C\uFF1A25200000\uFF0C\u8FD9\u4E2A\u65F6\u95F4\u6709\u70B9BT\uFF0C\u8FD9\u4E2A\u7ED3\u679C\u4E0D\u77E5\u9053\u662F\u600E\u4E48\u6765\u7684\uFF0C\u6362\u7B97\u540E\u7684\u7ED3\u679C\u662F\uFF1A25200000/1000/60/60 = 7\u4E2A\u5C0F\u65F6\uFF09
 jdbc.minEvictableIdleTimeMillis=300000
-#\u94fe\u63a5\u4f7f\u7528\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u662f\u5426\u56de\u6536
+#\u94FE\u63A5\u4F7F\u7528\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u662F\u5426\u56DE\u6536
 jdbc.removeAbandoned=true
-#\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u65f6\u95f4\uff08\u5355\u4f4d\u79d2\uff09\uff0c\u76ee\u524d\u4e3a5\u5206\u949f\uff0c\u5982\u679c\u6709\u4e1a\u52a1\u5904\u7406\u65f6\u95f4\u8d85\u8fc75\u5206\u949f\uff0c\u53ef\u4ee5\u9002\u5f53\u8c03\u6574\u3002
+#\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u65F6\u95F4\uFF08\u5355\u4F4D\u79D2\uFF09\uFF0C\u76EE\u524D\u4E3A5\u5206\u949F\uFF0C\u5982\u679C\u6709\u4E1A\u52A1\u5904\u7406\u65F6\u95F4\u8D85\u8FC75\u5206\u949F\uFF0C\u53EF\u4EE5\u9002\u5F53\u8C03\u6574\u3002
 jdbc.removeAbandonedTimeout=300
-#\u94fe\u63a5\u56de\u6536\u7684\u65f6\u5019\u63a7\u5236\u53f0\u6253\u5370\u4fe1\u606f\uff0c\u6d4b\u8bd5\u73af\u5883\u53ef\u4ee5\u52a0\u4e0atrue\uff0c\u7ebf\u4e0a\u73af\u5883false\u3002\u4f1a\u5f71\u54cd\u6027\u80fd\u3002
+#\u94FE\u63A5\u56DE\u6536\u7684\u65F6\u5019\u63A7\u5236\u53F0\u6253\u5370\u4FE1\u606F\uFF0C\u6D4B\u8BD5\u73AF\u5883\u53EF\u4EE5\u52A0\u4E0Atrue\uFF0C\u7EBF\u4E0A\u73AF\u5883false\u3002\u4F1A\u5F71\u54CD\u6027\u80FD\u3002
 jdbc.logAbandoned=true
-#\u7edf\u8ba1\u76d1\u63a7
+#\u7EDF\u8BA1\u76D1\u63A7
 jdbc.filters=stat
 
 jedis.host=localhost
@@ -61,4 +61,6 @@ accessSecret=ICGuiUnqzaar7urw4zecVcJrJ1MHg9
 
 avatar.host=//afts.hnzhiming.com
 
-aesSecretKey=aft1234567890123
+aesSecretKey=aft1234567890123
+
+template.cacheable=false

+ 23 - 21
src/main/resources/props/config_local.properties

@@ -1,41 +1,41 @@
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
-jdbc.url=jdbc:mysql://192.168.1.111:3306/aft_dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
-#\u5e10\u53f7
+#\u6570\u636E\u5E93\u94FE\u63A5\uFF0C
+jdbc.url=jdbc:mysql://127.0.0.1:3306/aft_dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
+#\u5E10\u53F7
 jdbc.username=root
-#\u5bc6\u7801
-jdbc.password=aft123456
-#\u68c0\u6d4b\u6570\u636e\u5e93\u94fe\u63a5\u662f\u5426\u6709\u6548\uff0c\u5fc5\u987b\u914d\u7f6e
+#\u5BC6\u7801
+jdbc.password=123456
+#\u68C0\u6D4B\u6570\u636E\u5E93\u94FE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u5FC5\u987B\u914D\u7F6E
 jdbc.validationQuery=SELECT 'x'
-#\u521d\u59cb\u8fde\u63a5\u6570
+#\u521D\u59CB\u8FDE\u63A5\u6570
 jdbc.initialSize=3
-#\u6700\u5927\u8fde\u63a5\u6c60\u6570\u91cf
+#\u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
 jdbc.maxActive=20
-#\u53bb\u6389\uff0c\u914d\u7f6e\u6587\u4ef6\u5bf9\u5e94\u53bb\u6389
+#\u53BB\u6389\uFF0C\u914D\u7F6E\u6587\u4EF6\u5BF9\u5E94\u53BB\u6389
 #jdbc.maxIdle=20
-#\u914d\u7f6e0,\u5f53\u7ebf\u7a0b\u6c60\u6570\u91cf\u4e0d\u8db3\uff0c\u81ea\u52a8\u8865\u5145\u3002
+#\u914D\u7F6E0,\u5F53\u7EBF\u7A0B\u6C60\u6570\u91CF\u4E0D\u8DB3\uFF0C\u81EA\u52A8\u8865\u5145\u3002
 jdbc.minIdle=0
-#\u83b7\u53d6\u94fe\u63a5\u8d85\u65f6\u65f6\u95f4\u4e3a1\u5206\u949f\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2\u3002
+#\u83B7\u53D6\u94FE\u63A5\u8D85\u65F6\u65F6\u95F4\u4E3A1\u5206\u949F\uFF0C\u5355\u4F4D\u4E3A\u6BEB\u79D2\u3002
 jdbc.maxWait=120000
-#\u83b7\u53d6\u94fe\u63a5\u7684\u65f6\u5019\uff0c\u4e0d\u6821\u9a8c\u662f\u5426\u53ef\u7528\uff0c\u5f00\u542f\u4f1a\u6709\u635f\u6027\u80fd\u3002
+#\u83B7\u53D6\u94FE\u63A5\u7684\u65F6\u5019\uFF0C\u4E0D\u6821\u9A8C\u662F\u5426\u53EF\u7528\uFF0C\u5F00\u542F\u4F1A\u6709\u635F\u6027\u80FD\u3002
 jdbc.testOnBorrow=false
-#\u5f52\u8fd8\u94fe\u63a5\u5230\u8fde\u63a5\u6c60\u7684\u65f6\u5019\u6821\u9a8c\u94fe\u63a5\u662f\u5426\u53ef\u7528\u3002
+#\u5F52\u8FD8\u94FE\u63A5\u5230\u8FDE\u63A5\u6C60\u7684\u65F6\u5019\u6821\u9A8C\u94FE\u63A5\u662F\u5426\u53EF\u7528\u3002
 jdbc.testOnReturn=false
-#\u6b64\u9879\u914d\u7f6e\u4e3atrue\u5373\u53ef\uff0c\u4e0d\u5f71\u54cd\u6027\u80fd\uff0c\u5e76\u4e14\u4fdd\u8bc1\u5b89\u5168\u6027\u3002\u610f\u4e49\u4e3a\uff1a\u7533\u8bf7\u8fde\u63a5\u7684\u65f6\u5019\u68c0\u6d4b\uff0c\u5982\u679c\u7a7a\u95f2\u65f6\u95f4\u5927\u4e8etimeBetweenEvictionRunsMillis\uff0c\u6267\u884cvalidationQuery\u68c0\u6d4b\u8fde\u63a5\u662f\u5426\u6709\u6548\u3002
+#\u6B64\u9879\u914D\u7F6E\u4E3Atrue\u5373\u53EF\uFF0C\u4E0D\u5F71\u54CD\u6027\u80FD\uFF0C\u5E76\u4E14\u4FDD\u8BC1\u5B89\u5168\u6027\u3002\u610F\u4E49\u4E3A\uFF1A\u7533\u8BF7\u8FDE\u63A5\u7684\u65F6\u5019\u68C0\u6D4B\uFF0C\u5982\u679C\u7A7A\u95F2\u65F6\u95F4\u5927\u4E8EtimeBetweenEvictionRunsMillis\uFF0C\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\u3002
 jdbc.testWhileIdle=true
-#1.Destroy\u7ebf\u7a0b\u4f1a\u68c0\u6d4b\u8fde\u63a5\u7684\u95f4\u9694\u65f6\u95f4
-#2.testWhileIdle\u7684\u5224\u65ad\u4f9d\u636e
+#1.Destroy\u7EBF\u7A0B\u4F1A\u68C0\u6D4B\u8FDE\u63A5\u7684\u95F4\u9694\u65F6\u95F4
+#2.testWhileIdle\u7684\u5224\u65AD\u4F9D\u636E
 jdbc.timeBetweenEvictionRunsMillis=60000
-#\u4e00\u4e2a\u94fe\u63a5\u751f\u5b58\u7684\u65f6\u95f4\uff08\u4e4b\u524d\u7684\u503c\uff1a25200000\uff0c\u8fd9\u4e2a\u65f6\u95f4\u6709\u70b9BT\uff0c\u8fd9\u4e2a\u7ed3\u679c\u4e0d\u77e5\u9053\u662f\u600e\u4e48\u6765\u7684\uff0c\u6362\u7b97\u540e\u7684\u7ed3\u679c\u662f\uff1a25200000/1000/60/60 = 7\u4e2a\u5c0f\u65f6\uff09
+#\u4E00\u4E2A\u94FE\u63A5\u751F\u5B58\u7684\u65F6\u95F4\uFF08\u4E4B\u524D\u7684\u503C\uFF1A25200000\uFF0C\u8FD9\u4E2A\u65F6\u95F4\u6709\u70B9BT\uFF0C\u8FD9\u4E2A\u7ED3\u679C\u4E0D\u77E5\u9053\u662F\u600E\u4E48\u6765\u7684\uFF0C\u6362\u7B97\u540E\u7684\u7ED3\u679C\u662F\uFF1A25200000/1000/60/60 = 7\u4E2A\u5C0F\u65F6\uFF09
 jdbc.minEvictableIdleTimeMillis=300000
-#\u94fe\u63a5\u4f7f\u7528\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u662f\u5426\u56de\u6536
+#\u94FE\u63A5\u4F7F\u7528\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u662F\u5426\u56DE\u6536
 jdbc.removeAbandoned=true
-#\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u65f6\u95f4\uff08\u5355\u4f4d\u79d2\uff09\uff0c\u76ee\u524d\u4e3a5\u5206\u949f\uff0c\u5982\u679c\u6709\u4e1a\u52a1\u5904\u7406\u65f6\u95f4\u8d85\u8fc75\u5206\u949f\uff0c\u53ef\u4ee5\u9002\u5f53\u8c03\u6574\u3002
+#\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u65F6\u95F4\uFF08\u5355\u4F4D\u79D2\uFF09\uFF0C\u76EE\u524D\u4E3A5\u5206\u949F\uFF0C\u5982\u679C\u6709\u4E1A\u52A1\u5904\u7406\u65F6\u95F4\u8D85\u8FC75\u5206\u949F\uFF0C\u53EF\u4EE5\u9002\u5F53\u8C03\u6574\u3002
 jdbc.removeAbandonedTimeout=300
-#\u94fe\u63a5\u56de\u6536\u7684\u65f6\u5019\u63a7\u5236\u53f0\u6253\u5370\u4fe1\u606f\uff0c\u6d4b\u8bd5\u73af\u5883\u53ef\u4ee5\u52a0\u4e0atrue\uff0c\u7ebf\u4e0a\u73af\u5883false\u3002\u4f1a\u5f71\u54cd\u6027\u80fd\u3002
+#\u94FE\u63A5\u56DE\u6536\u7684\u65F6\u5019\u63A7\u5236\u53F0\u6253\u5370\u4FE1\u606F\uFF0C\u6D4B\u8BD5\u73AF\u5883\u53EF\u4EE5\u52A0\u4E0Atrue\uFF0C\u7EBF\u4E0A\u73AF\u5883false\u3002\u4F1A\u5F71\u54CD\u6027\u80FD\u3002
 jdbc.logAbandoned=true
-#\u7edf\u8ba1\u76d1\u63a7
+#\u7EDF\u8BA1\u76D1\u63A7
 jdbc.filters=stat
 
 logging.level.com.goafanti=DEBUG
@@ -64,3 +64,5 @@ accessSecret=ICGuiUnqzaar7urw4zecVcJrJ1MHg9
 avatar.host=//afts.hnzhiming.com
 
 aesSecretKey=aft1234567890123
+
+template.cacheable=false

+ 21 - 19
src/main/resources/props/config_prod.properties

@@ -1,41 +1,41 @@
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
+#\u6570\u636E\u5E93\u94FE\u63A5\uFF0C
 jdbc.url=jdbc:mysql://123.57.207.214:3306/pro_aft_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
-#\u5e10\u53f7
+#\u5E10\u53F7
 jdbc.username=xiaolong
-#\u5bc6\u7801
+#\u5BC6\u7801
 jdbc.password=!qaz2wsx
-#\u68c0\u6d4b\u6570\u636e\u5e93\u94fe\u63a5\u662f\u5426\u6709\u6548\uff0c\u5fc5\u987b\u914d\u7f6e
+#\u68C0\u6D4B\u6570\u636E\u5E93\u94FE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u5FC5\u987B\u914D\u7F6E
 jdbc.validationQuery=SELECT 'x'
-#\u521d\u59cb\u8fde\u63a5\u6570
+#\u521D\u59CB\u8FDE\u63A5\u6570
 jdbc.initialSize=3
-#\u6700\u5927\u8fde\u63a5\u6c60\u6570\u91cf
+#\u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
 jdbc.maxActive=20
-#\u53bb\u6389\uff0c\u914d\u7f6e\u6587\u4ef6\u5bf9\u5e94\u53bb\u6389
+#\u53BB\u6389\uFF0C\u914D\u7F6E\u6587\u4EF6\u5BF9\u5E94\u53BB\u6389
 #jdbc.maxIdle=20
-#\u914d\u7f6e0,\u5f53\u7ebf\u7a0b\u6c60\u6570\u91cf\u4e0d\u8db3\uff0c\u81ea\u52a8\u8865\u5145\u3002
+#\u914D\u7F6E0,\u5F53\u7EBF\u7A0B\u6C60\u6570\u91CF\u4E0D\u8DB3\uFF0C\u81EA\u52A8\u8865\u5145\u3002
 jdbc.minIdle=0
-#\u83b7\u53d6\u94fe\u63a5\u8d85\u65f6\u65f6\u95f4\u4e3a1\u5206\u949f\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2\u3002
+#\u83B7\u53D6\u94FE\u63A5\u8D85\u65F6\u65F6\u95F4\u4E3A1\u5206\u949F\uFF0C\u5355\u4F4D\u4E3A\u6BEB\u79D2\u3002
 jdbc.maxWait=120000
-#\u83b7\u53d6\u94fe\u63a5\u7684\u65f6\u5019\uff0c\u4e0d\u6821\u9a8c\u662f\u5426\u53ef\u7528\uff0c\u5f00\u542f\u4f1a\u6709\u635f\u6027\u80fd\u3002
+#\u83B7\u53D6\u94FE\u63A5\u7684\u65F6\u5019\uFF0C\u4E0D\u6821\u9A8C\u662F\u5426\u53EF\u7528\uFF0C\u5F00\u542F\u4F1A\u6709\u635F\u6027\u80FD\u3002
 jdbc.testOnBorrow=false
-#\u5f52\u8fd8\u94fe\u63a5\u5230\u8fde\u63a5\u6c60\u7684\u65f6\u5019\u6821\u9a8c\u94fe\u63a5\u662f\u5426\u53ef\u7528\u3002
+#\u5F52\u8FD8\u94FE\u63A5\u5230\u8FDE\u63A5\u6C60\u7684\u65F6\u5019\u6821\u9A8C\u94FE\u63A5\u662F\u5426\u53EF\u7528\u3002
 jdbc.testOnReturn=false
-#\u6b64\u9879\u914d\u7f6e\u4e3atrue\u5373\u53ef\uff0c\u4e0d\u5f71\u54cd\u6027\u80fd\uff0c\u5e76\u4e14\u4fdd\u8bc1\u5b89\u5168\u6027\u3002\u610f\u4e49\u4e3a\uff1a\u7533\u8bf7\u8fde\u63a5\u7684\u65f6\u5019\u68c0\u6d4b\uff0c\u5982\u679c\u7a7a\u95f2\u65f6\u95f4\u5927\u4e8etimeBetweenEvictionRunsMillis\uff0c\u6267\u884cvalidationQuery\u68c0\u6d4b\u8fde\u63a5\u662f\u5426\u6709\u6548\u3002
+#\u6B64\u9879\u914D\u7F6E\u4E3Atrue\u5373\u53EF\uFF0C\u4E0D\u5F71\u54CD\u6027\u80FD\uFF0C\u5E76\u4E14\u4FDD\u8BC1\u5B89\u5168\u6027\u3002\u610F\u4E49\u4E3A\uFF1A\u7533\u8BF7\u8FDE\u63A5\u7684\u65F6\u5019\u68C0\u6D4B\uFF0C\u5982\u679C\u7A7A\u95F2\u65F6\u95F4\u5927\u4E8EtimeBetweenEvictionRunsMillis\uFF0C\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\u3002
 jdbc.testWhileIdle=true
-#1.Destroy\u7ebf\u7a0b\u4f1a\u68c0\u6d4b\u8fde\u63a5\u7684\u95f4\u9694\u65f6\u95f4
-#2.testWhileIdle\u7684\u5224\u65ad\u4f9d\u636e
+#1.Destroy\u7EBF\u7A0B\u4F1A\u68C0\u6D4B\u8FDE\u63A5\u7684\u95F4\u9694\u65F6\u95F4
+#2.testWhileIdle\u7684\u5224\u65AD\u4F9D\u636E
 jdbc.timeBetweenEvictionRunsMillis=60000
-#\u4e00\u4e2a\u94fe\u63a5\u751f\u5b58\u7684\u65f6\u95f4\uff08\u4e4b\u524d\u7684\u503c\uff1a25200000\uff0c\u8fd9\u4e2a\u65f6\u95f4\u6709\u70b9BT\uff0c\u8fd9\u4e2a\u7ed3\u679c\u4e0d\u77e5\u9053\u662f\u600e\u4e48\u6765\u7684\uff0c\u6362\u7b97\u540e\u7684\u7ed3\u679c\u662f\uff1a25200000/1000/60/60 = 7\u4e2a\u5c0f\u65f6\uff09
+#\u4E00\u4E2A\u94FE\u63A5\u751F\u5B58\u7684\u65F6\u95F4\uFF08\u4E4B\u524D\u7684\u503C\uFF1A25200000\uFF0C\u8FD9\u4E2A\u65F6\u95F4\u6709\u70B9BT\uFF0C\u8FD9\u4E2A\u7ED3\u679C\u4E0D\u77E5\u9053\u662F\u600E\u4E48\u6765\u7684\uFF0C\u6362\u7B97\u540E\u7684\u7ED3\u679C\u662F\uFF1A25200000/1000/60/60 = 7\u4E2A\u5C0F\u65F6\uFF09
 jdbc.minEvictableIdleTimeMillis=300000
-#\u94fe\u63a5\u4f7f\u7528\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u662f\u5426\u56de\u6536
+#\u94FE\u63A5\u4F7F\u7528\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u662F\u5426\u56DE\u6536
 jdbc.removeAbandoned=true
-#\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u65f6\u95f4\uff08\u5355\u4f4d\u79d2\uff09\uff0c\u76ee\u524d\u4e3a5\u5206\u949f\uff0c\u5982\u679c\u6709\u4e1a\u52a1\u5904\u7406\u65f6\u95f4\u8d85\u8fc75\u5206\u949f\uff0c\u53ef\u4ee5\u9002\u5f53\u8c03\u6574\u3002
+#\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u65F6\u95F4\uFF08\u5355\u4F4D\u79D2\uFF09\uFF0C\u76EE\u524D\u4E3A5\u5206\u949F\uFF0C\u5982\u679C\u6709\u4E1A\u52A1\u5904\u7406\u65F6\u95F4\u8D85\u8FC75\u5206\u949F\uFF0C\u53EF\u4EE5\u9002\u5F53\u8C03\u6574\u3002
 jdbc.removeAbandonedTimeout=300
-#\u94fe\u63a5\u56de\u6536\u7684\u65f6\u5019\u63a7\u5236\u53f0\u6253\u5370\u4fe1\u606f\uff0c\u6d4b\u8bd5\u73af\u5883\u53ef\u4ee5\u52a0\u4e0atrue\uff0c\u7ebf\u4e0a\u73af\u5883false\u3002\u4f1a\u5f71\u54cd\u6027\u80fd\u3002
+#\u94FE\u63A5\u56DE\u6536\u7684\u65F6\u5019\u63A7\u5236\u53F0\u6253\u5370\u4FE1\u606F\uFF0C\u6D4B\u8BD5\u73AF\u5883\u53EF\u4EE5\u52A0\u4E0Atrue\uFF0C\u7EBF\u4E0A\u73AF\u5883false\u3002\u4F1A\u5F71\u54CD\u6027\u80FD\u3002
 jdbc.logAbandoned=true
-#\u7edf\u8ba1\u76d1\u63a7
+#\u7EDF\u8BA1\u76D1\u63A7
 jdbc.filters=stat
 
 jedis.host=123.57.207.214
@@ -52,3 +52,5 @@ session.validate.timespan=18000000
 app.name=AFT
 
 static.host=//afts.hnzhiming.com/1.0.27
+
+template.cacheable=true

+ 22 - 20
src/main/resources/props/config_test.properties

@@ -1,41 +1,41 @@
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
+#\u6570\u636E\u5E93\u94FE\u63A5\uFF0C
 jdbc.url=jdbc:mysql://localhost:3306/aft_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
-#\u5e10\u53f7
+#\u5E10\u53F7
 jdbc.username=xiaolong
-#\u5bc6\u7801
+#\u5BC6\u7801
 jdbc.password=Afanti@2017!
-#\u68c0\u6d4b\u6570\u636e\u5e93\u94fe\u63a5\u662f\u5426\u6709\u6548\uff0c\u5fc5\u987b\u914d\u7f6e
+#\u68C0\u6D4B\u6570\u636E\u5E93\u94FE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u5FC5\u987B\u914D\u7F6E
 jdbc.validationQuery=SELECT 'x'
-#\u521d\u59cb\u8fde\u63a5\u6570
+#\u521D\u59CB\u8FDE\u63A5\u6570
 jdbc.initialSize=3
-#\u6700\u5927\u8fde\u63a5\u6c60\u6570\u91cf
+#\u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
 jdbc.maxActive=20
-#\u53bb\u6389\uff0c\u914d\u7f6e\u6587\u4ef6\u5bf9\u5e94\u53bb\u6389
+#\u53BB\u6389\uFF0C\u914D\u7F6E\u6587\u4EF6\u5BF9\u5E94\u53BB\u6389
 #jdbc.maxIdle=20
-#\u914d\u7f6e0,\u5f53\u7ebf\u7a0b\u6c60\u6570\u91cf\u4e0d\u8db3\uff0c\u81ea\u52a8\u8865\u5145\u3002
+#\u914D\u7F6E0,\u5F53\u7EBF\u7A0B\u6C60\u6570\u91CF\u4E0D\u8DB3\uFF0C\u81EA\u52A8\u8865\u5145\u3002
 jdbc.minIdle=0
-#\u83b7\u53d6\u94fe\u63a5\u8d85\u65f6\u65f6\u95f4\u4e3a1\u5206\u949f\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2\u3002
+#\u83B7\u53D6\u94FE\u63A5\u8D85\u65F6\u65F6\u95F4\u4E3A1\u5206\u949F\uFF0C\u5355\u4F4D\u4E3A\u6BEB\u79D2\u3002
 jdbc.maxWait=120000
-#\u83b7\u53d6\u94fe\u63a5\u7684\u65f6\u5019\uff0c\u4e0d\u6821\u9a8c\u662f\u5426\u53ef\u7528\uff0c\u5f00\u542f\u4f1a\u6709\u635f\u6027\u80fd\u3002
+#\u83B7\u53D6\u94FE\u63A5\u7684\u65F6\u5019\uFF0C\u4E0D\u6821\u9A8C\u662F\u5426\u53EF\u7528\uFF0C\u5F00\u542F\u4F1A\u6709\u635F\u6027\u80FD\u3002
 jdbc.testOnBorrow=false
-#\u5f52\u8fd8\u94fe\u63a5\u5230\u8fde\u63a5\u6c60\u7684\u65f6\u5019\u6821\u9a8c\u94fe\u63a5\u662f\u5426\u53ef\u7528\u3002
+#\u5F52\u8FD8\u94FE\u63A5\u5230\u8FDE\u63A5\u6C60\u7684\u65F6\u5019\u6821\u9A8C\u94FE\u63A5\u662F\u5426\u53EF\u7528\u3002
 jdbc.testOnReturn=false
-#\u6b64\u9879\u914d\u7f6e\u4e3atrue\u5373\u53ef\uff0c\u4e0d\u5f71\u54cd\u6027\u80fd\uff0c\u5e76\u4e14\u4fdd\u8bc1\u5b89\u5168\u6027\u3002\u610f\u4e49\u4e3a\uff1a\u7533\u8bf7\u8fde\u63a5\u7684\u65f6\u5019\u68c0\u6d4b\uff0c\u5982\u679c\u7a7a\u95f2\u65f6\u95f4\u5927\u4e8etimeBetweenEvictionRunsMillis\uff0c\u6267\u884cvalidationQuery\u68c0\u6d4b\u8fde\u63a5\u662f\u5426\u6709\u6548\u3002
+#\u6B64\u9879\u914D\u7F6E\u4E3Atrue\u5373\u53EF\uFF0C\u4E0D\u5F71\u54CD\u6027\u80FD\uFF0C\u5E76\u4E14\u4FDD\u8BC1\u5B89\u5168\u6027\u3002\u610F\u4E49\u4E3A\uFF1A\u7533\u8BF7\u8FDE\u63A5\u7684\u65F6\u5019\u68C0\u6D4B\uFF0C\u5982\u679C\u7A7A\u95F2\u65F6\u95F4\u5927\u4E8EtimeBetweenEvictionRunsMillis\uFF0C\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\u3002
 jdbc.testWhileIdle=true
-#1.Destroy\u7ebf\u7a0b\u4f1a\u68c0\u6d4b\u8fde\u63a5\u7684\u95f4\u9694\u65f6\u95f4
-#2.testWhileIdle\u7684\u5224\u65ad\u4f9d\u636e
+#1.Destroy\u7EBF\u7A0B\u4F1A\u68C0\u6D4B\u8FDE\u63A5\u7684\u95F4\u9694\u65F6\u95F4
+#2.testWhileIdle\u7684\u5224\u65AD\u4F9D\u636E
 jdbc.timeBetweenEvictionRunsMillis=60000
-#\u4e00\u4e2a\u94fe\u63a5\u751f\u5b58\u7684\u65f6\u95f4\uff08\u4e4b\u524d\u7684\u503c\uff1a25200000\uff0c\u8fd9\u4e2a\u65f6\u95f4\u6709\u70b9BT\uff0c\u8fd9\u4e2a\u7ed3\u679c\u4e0d\u77e5\u9053\u662f\u600e\u4e48\u6765\u7684\uff0c\u6362\u7b97\u540e\u7684\u7ed3\u679c\u662f\uff1a25200000/1000/60/60 = 7\u4e2a\u5c0f\u65f6\uff09
+#\u4E00\u4E2A\u94FE\u63A5\u751F\u5B58\u7684\u65F6\u95F4\uFF08\u4E4B\u524D\u7684\u503C\uFF1A25200000\uFF0C\u8FD9\u4E2A\u65F6\u95F4\u6709\u70B9BT\uFF0C\u8FD9\u4E2A\u7ED3\u679C\u4E0D\u77E5\u9053\u662F\u600E\u4E48\u6765\u7684\uFF0C\u6362\u7B97\u540E\u7684\u7ED3\u679C\u662F\uFF1A25200000/1000/60/60 = 7\u4E2A\u5C0F\u65F6\uFF09
 jdbc.minEvictableIdleTimeMillis=300000
-#\u94fe\u63a5\u4f7f\u7528\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u662f\u5426\u56de\u6536
+#\u94FE\u63A5\u4F7F\u7528\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u662F\u5426\u56DE\u6536
 jdbc.removeAbandoned=true
-#\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u65f6\u95f4\uff08\u5355\u4f4d\u79d2\uff09\uff0c\u76ee\u524d\u4e3a5\u5206\u949f\uff0c\u5982\u679c\u6709\u4e1a\u52a1\u5904\u7406\u65f6\u95f4\u8d85\u8fc75\u5206\u949f\uff0c\u53ef\u4ee5\u9002\u5f53\u8c03\u6574\u3002
+#\u8D85\u8FC7\u65F6\u95F4\u9650\u5236\u65F6\u95F4\uFF08\u5355\u4F4D\u79D2\uFF09\uFF0C\u76EE\u524D\u4E3A5\u5206\u949F\uFF0C\u5982\u679C\u6709\u4E1A\u52A1\u5904\u7406\u65F6\u95F4\u8D85\u8FC75\u5206\u949F\uFF0C\u53EF\u4EE5\u9002\u5F53\u8C03\u6574\u3002
 jdbc.removeAbandonedTimeout=300
-#\u94fe\u63a5\u56de\u6536\u7684\u65f6\u5019\u63a7\u5236\u53f0\u6253\u5370\u4fe1\u606f\uff0c\u6d4b\u8bd5\u73af\u5883\u53ef\u4ee5\u52a0\u4e0atrue\uff0c\u7ebf\u4e0a\u73af\u5883false\u3002\u4f1a\u5f71\u54cd\u6027\u80fd\u3002
+#\u94FE\u63A5\u56DE\u6536\u7684\u65F6\u5019\u63A7\u5236\u53F0\u6253\u5370\u4FE1\u606F\uFF0C\u6D4B\u8BD5\u73AF\u5883\u53EF\u4EE5\u52A0\u4E0Atrue\uFF0C\u7EBF\u4E0A\u73AF\u5883false\u3002\u4F1A\u5F71\u54CD\u6027\u80FD\u3002
 jdbc.logAbandoned=true
-#\u7edf\u8ba1\u76d1\u63a7
+#\u7EDF\u8BA1\u76D1\u63A7
 jdbc.filters=stat
 
 logging.level.com.goafanti=INFO
@@ -63,4 +63,6 @@ accessSecret=ICGuiUnqzaar7urw4zecVcJrJ1MHg9
 
 avatar.host=//aftts.hnzhiming.com
 
-aesSecretKey =aft1234567890123
+aesSecretKey =aft1234567890123
+
+template.cacheable=true

+ 2 - 0
src/main/resources/shiro_base_auth.ini

@@ -1,4 +1,6 @@
 [base_auth]
+/=anon
+/index=anon
 /login=anon
 /user/login=anon
 /user/signIn.html=anon

+ 48 - 9
src/main/resources/spring/spring-mvc.xml

@@ -58,16 +58,55 @@
 	<mvc:resources mapping="/static/**" location="/WEB-INF/build/" />
 	<mvc:resources mapping="/favicon.ico" location="/WEB-INF/assets/favicon.ico" />
 	<mvc:resources mapping="/robots.txt" location="/WEB-INF/assets/robots.txt" />
+	
+	<bean id="templateResolver" 
+        class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
+        <property name="prefix" value="/WEB-INF/views/" />
+        <property name="suffix" value=".html" />
+        <property name="templateMode" value="HTML" />
+        <property name="characterEncoding" value="UTF-8"/>
+        <!-- Template cache is set to false (default is true).        -->
+        <property name="cacheable" value="${template.cacheable}" />
+    </bean>
 
-	<!-- Resolves views selected for rendering by @Controllers to .jsp resources 
-		in the /WEB-INF/views directory -->
-	<bean
-		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
-		<property name="viewClass"
-			value="org.springframework.web.servlet.view.JstlView" />
-		<property name="prefix" value="/WEB-INF/views/" />
-		<property name="suffix" value=".jsp" />
-	</bean>
+    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
+        <property name="templateResolver" ref="templateResolver" />
+    </bean>
+    
+    <!-- Simple strategy: only path extension is taken into account -->
+    <bean id="cnManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
+        <property name="favorPathExtension" value="true"/>
+        <property name="ignoreAcceptHeader" value="true"/>
+        <property name="defaultContentType" value="text/html"/>
+        
+        <property name="mediaTypes">
+            <map>
+                <entry key="html" value="text/html" />
+                <entry key="xml" value="application/xml" />
+                <entry key="atom" value="application/atom+xml" />
+            </map>
+        </property>
+    </bean>
+    
+    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
+        <property name="contentNegotiationManager" ref="cnManager"/>
+        <property name="viewResolvers">
+        	<list>
+                <!-- Used here for 'xml' and 'atom' views  -->
+                <bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
+                    <property name="order" value="1"/>
+                </bean>
+                <!-- thymeleaf -->
+                <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
+                    <property name="templateEngine" ref="templateEngine" />
+                    <property name="characterEncoding" value="UTF-8"/>
+                    <property name="order" value="2"/>
+                    <property name="excludedViewNames" value="*.xml" />
+                </bean>
+
+        	</list>
+        </property>
+    </bean>
 
 	<bean id="multipartResolver"
 		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

BIN
src/main/webapp/WEB-INF/assets/favicon.ico


+ 8 - 0
src/main/webapp/WEB-INF/assets/robots.txt

@@ -0,0 +1,8 @@
+User-agent: *
+Disallow: /*?*
+Disallow: /api
+Disallow: .jpg$
+Disallow: .jpeg$
+Disallow: .gif$
+Disallow: .png$
+Disallow: .bmp$

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/achievement.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>科技成果页</title>
+	<link th:href="${staticHost+'/admin/achievement.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/achievement.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/achievement.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>科技成果页面</title>
-<link href="${staticHost}/admin/achievement.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/achievement.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/demand.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>科技需求页</title>
+	<link th:href="${staticHost+'/admin/demand.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/demand.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/demand.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>科技需求页面</title>
-<link href="${staticHost}/admin/demand.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/demand.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>管理中心首页</title>
+	<link th:href="${staticHost+'/admin/index.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/index.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/index.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>管理主页面</title>
-<link href="${staticHost}/admin/index.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/index.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/login.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>登录页</title>
+	<link th:href="${staticHost+'/admin/login.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/login.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/login.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>登录页面</title>
-<link href="${staticHost}/admin/login.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/login.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/servicesManage/contract.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>合同管理页</title>
+	<link th:href="${staticHost+'/admin/servicesManage/contract.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/servicesManage/contract.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/servicesManage/contract.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>合同管理页面</title>
-<link href="${staticHost}/admin/servicesManage/contract.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/servicesManage/contract.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/servicesManage/copyright.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>软件著作管理页</title>
+	<link th:href="${staticHost+'/admin/servicesManage/copyright.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/servicesManage/copyright.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/servicesManage/copyright.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>软件著作管理页面</title>
-<link href="${staticHost}/admin/servicesManage/copyright.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/servicesManage/copyright.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/servicesManage/highTech.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>高企认定管理页</title>
+	<link th:href="${staticHost+'/admin/servicesManage/highTech.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/servicesManage/highTech.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/servicesManage/highTech.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>高企认定管理页面</title>
-<link href="${staticHost}/admin/servicesManage/highTech.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/servicesManage/highTech.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/servicesManage/highTechInfo.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>高企信息汇总页</title>
+	<link th:href="${staticHost+'/admin/servicesManage/highTechInfo.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/servicesManage/highTechInfo.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/servicesManage/highTechInfo.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>高企信息汇总页</title>
-<link href="${staticHost}/admin/servicesManage/highTechInfo.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/servicesManage/highTechInfo.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/servicesManage/patent.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>专利申请管理页</title>
+	<link th:href="${staticHost+'/admin/servicesManage/patent.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/servicesManage/patent.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/servicesManage/patent.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>专利申请管理页面</title>
-<link href="${staticHost}/admin/servicesManage/patent.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/servicesManage/patent.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/servicesManage/technology.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>科技项目申报管理页</title>
+	<link th:href="${staticHost+'/admin/servicesManage/technology.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/servicesManage/technology.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/servicesManage/technology.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>科技项目申报管理页面</title>
-<link href="${staticHost}/admin/servicesManage/technology.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/servicesManage/technology.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/set.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>设置页</title>
+	<link th:href="${staticHost+'/admin/set.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/set.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/set.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>设置页面</title>
-<link href="${staticHost}/admin/set.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/set.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/admin/userManage.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>用户管理页</title>
+	<link th:href="${staticHost+'/admin/userManage.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/userManage.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/admin/userManage.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>用户管理页面</title>
-<link href="${staticHost}/admin/userManage.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/admin/userManage.js"></script>
-</body>
-</html>

File diff suppressed because it is too large
+ 93 - 0
src/main/webapp/WEB-INF/views/common.html


+ 18 - 0
src/main/webapp/WEB-INF/views/error.html

@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{})">
+    <title>出错啦</title>
+</head>
+<body>
+<p>错误信息:</p>
+<div th:if="${exception instanceOf T(com.goafanti.common.error.BusinessException)}">
+    <p th:text="${exception?.field}"></p>
+    <p th:text="${exception?.message}"></p>
+</div>
+<p th:text="${message}">未知错误</p>
+<p th:text="${status}">404</p>
+
+<div th:replace="common::footer(~{})"></div>
+</body>
+</html>

+ 0 - 18
src/main/webapp/WEB-INF/views/error.jsp

@@ -1,18 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%>
-<!DOCTYPE HTML>
-<html xmlns=http://www.w3.org/1999/xhtml>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-	<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
-	<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
-	<title>错误页面</title>
-</head>
-<body>
-	<div>
-	找不到该页面,请返回重试<br/>
-	${exception.message}
-	</div>
-	<a target="self" href="javascript:history.back();">返回</a>
-</body>
-</html>

+ 0 - 104
src/main/webapp/WEB-INF/views/header.jsp

@@ -1,104 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<!DOCTYPE HTML>
-<html xmlns=http://www.w3.org/1999/xhtml>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
-<meta name="renderer" content="webkit">
-<meta name="viewport"
-	content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
-<!--[if lt IE 9]>
-    <script src="//cdn.bootcss.com/html5shiv/r29/html5.min.js"></script>
-	<script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
-  	<![endif]-->
-<script type="text/javascript">
-	<c:if test="${not empty userData}">
-	window.userData = {
-		mobile : "${userData.mobile}",
-		nickname : "${userData.nickname}",
-		number : "${userData.number}",
-		type : "${userData.type}",
-		email : "${userData.email}",
-		createTime : "${userData.createTime}",
-		lvl : "${userData.lvl}"
-	}
-	</c:if>
-
-	<c:if test="${empty userData}">
-	window.userData = ""
-	</c:if>
-
-	window.globalConfig = {
-		context : "${basePath}",
-		staticHost : "${staticHost}",
-		uploadPath : "${uploadPath}",
-		uploadPrivatePath : "${uploadPrivatePath}",
-		avatarHost : "${avatarHost}"
-	}
-
-	<c:if test="${not empty adminData}">
-	window.adminData = {
-		mobile : "${adminData.mobile}",
-		name : "${adminData.name}",
-		email : "${adminData.email}",
-		createTime : "${adminData.createTime}"
-	}
-	</c:if>
-
-	<c:if test="${empty adminData}">
-	window.adminData = ""
-	</c:if>
-
-	<shiro:hasRole name="999999">
-	window.showSystem = true;
-	window.showUserManage = true;
-	window.showServices = true;
-	window.showAchievement = true;
-	window.showDemand = true;
-	window.showIdea = true;
-	window.showUserList = true;
-	window.showOrgList = true;
-	window.showUserList = true;
-	window.showOrgList = true;
-	window.showPermissionList = true;
-	window.showRoleList = true;
-	window.showAuditStatus = true;
-	</shiro:hasRole>
-
-	<shiro:hasPermission name="admin/userManage">
-	window.showUserManage = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="admin/services">
-	window.showServices = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="admin/achievement">
-	window.showAchievement = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="admin/demand">
-	window.showDemand = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="admin/idea">
-	window.showIdea = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="admin/customer">
-	window.showCustomer = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="api/admin/userList">
-	window.showUserList = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="api/admin/orgList">
-	window.showOrgList = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="api/admin/permissionList">
-	window.showPermissionList = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="api/admin/roleList">
-	window.showRoleList = true;
-	</shiro:hasPermission>
-	<shiro:hasPermission name="api/admin/auditStatus">
-	window.showAuditStatus = true;
-	</shiro:hasPermission>
-</script>
-<script type="text/javascript" src="${staticHost}/vendors.js"></script>

+ 311 - 0
src/main/webapp/WEB-INF/views/index.html

@@ -0,0 +1,311 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>首页</title>
+	<link href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
+	<link th:href="${staticDomain + '/html/css/style.css'}" rel="stylesheet" />
+	<link th:href="${staticDomain + '/html/css/index.css'}" rel="stylesheet" />
+</head>
+<body>
+	<header>
+		<div th:replace="common::{topNav}"></div>
+	</header>
+	<div class="container header_nav">
+		<div class="row clearfix">
+			<div class="col-md-12 logo">
+				<img th:src="${staticDomain + '/html/img/logo.png'}" />
+			</div>
+
+		</div>
+		<div class="search">
+			<div class="row clearfix">
+				<div class="col-lg-8 col-md-offset-2">
+					<div class="input-group ">
+						<input type="text" class="form-control"> <span
+							class="input-group-btn">
+							<button class="btn btn-default" type="button">搜索</button>
+						</span>
+					</div>
+					<!-- /input-group -->
+				</div>
+				<div class="col-lg-8 col-md-offset-2">
+					<div class="hot">
+						<ul>
+							<li><a href="#">科技交易</a></li>
+							<li><a href="#">网上创客</a></li>
+							<li><a href="#">趣科普</a></li>
+							<li><a href="#">科技金融</a></li>
+						</ul>
+					</div>
+
+				</div>
+			</div>
+		</div>
+	</div>
+	<div class="container content">
+		<div class="row clearfix">
+			<div class="content_lt">
+				<div class="content_nav">
+					<ul id="myTab">
+						<li><a href="#tab1" data-toggle="tab">关注</a></li>
+						<li class="active"><a href="#tab2" data-toggle="tab">政策</a></li>
+						<li><a href="#tab3" data-toggle="tab">前沿</a></li>
+						<li><a href="#tab4" data-toggle="tab">明星</a></li>
+						<li><a href="#tab5" data-toggle="tab">活动</a></li>
+						<li><a href="#tab6" data-toggle="tab">VR</a></li>
+					</ul>
+
+				</div>
+
+				<div id="myTabContent" class="content_list tab-content">
+					<div id="tab1" class="tab-pane"></div>
+					<div id="tab2" class="tab-pane in active">
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>科技成果转化频发政策“红包”,甜头怎么尝</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>11:16</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>成果转化是从一种创新走向另一种创新</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>12:11</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>从“科技的春天”到“创新的春天”</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>13:26</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>专利战略在企业创新全过程中的应用</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>15:23</span>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div id="tab3" class="tab-pane">
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>NASA新一代太空望远镜 届时将看到宇宙第一光芒</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>07:56</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>满满的黑科技 推不倒的自行车</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>08:06</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>最新3D全息投影技术 为可口可乐麦当劳服务</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>09:33</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>德国科学家发明新型化合物 属无机纳米晶体结构</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>12:36</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>中国首条空中自行车道试营 体验云端行走</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>17:25</span>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div id="tab4" class="tab-pane">
+						<div class="content_info ">
+							<div class="info_img">
+								<img th:src="${staticDomain + '/html/img/mx_img_1.png'}" />
+							</div>
+							<div class="info_txt">
+								<p>美国工程院院士,资深核能咨询顾问,美国能源部高级 顾问,美国国家研究委员会董事会能源与环境系统主席。</p>
+								<div class="source">
+									<span>中国网</span> <i class="name">钱平 | Douglas M. Chapin</i> <i>美国</i>
+									<i>能源与环境</i>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="info_img">
+								<img th:src="${staticDomain + '/html/img/mx_img_2.png'}" />
+							</div>
+							<div class="info_txt">
+								<p>加拿大工程院院士,加拿大皇家学院院士,荣获英国国际名人传记中心颁发的的“信号处理研究及教育杰出贡献奖”。</p>
+								<div class="source">
+									<span>中国网</span> <i class="name">黄干| Kon Max Wong</i> <i>加拿大</i>
+									<i>信号处理</i>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="info_img">
+								<img th:src="${staticDomain + '/html/img/mx_img_3.png'}" />
+							</div>
+							<div class="info_txt">
+								<p>英国皇家工程院院士,英国纽卡斯尔大学水利工程系教授,1995年获得欧洲地球物理学会金徽章奖。</p>
+								<div class="source">
+									<span>中国网</span> <i class="name">康英达|Enda O'Connell</i> <i>英
+										国</i> <i>水利工程</i>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="info_img">
+								<img th:src="${staticDomain + '/html/img/mx_img_4.png'}" />
+							</div>
+							<div class="info_txt">
+								<p>(杂交水稻之父、首届国家最高科学奖获得者
+									袁隆平是杂交水稻研究领域的开创者和带头人,致力于杂交水稻的研究,先后成功研发出“三系法”杂交
+									水稻、“两系法”杂交水稻、超级杂交稻一期、二期,与此同时,袁隆平提出并实施“种三产四丰产工程”,运用超级杂交稻的技术成果,[3]
+									出版中、英文专著6部,发表论文60余篇。</p>
+								<div class="source">
+									<span>中国网</span> <i class="name">袁隆平</i> <i>中国</i> <i>农业</i>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div id="tab5" class="tab-pane">
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>港洽周科技交流对接会</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>09:16</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>中以美高端医疗产业高峰论坛会</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>11:15</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>2017年科技展览会</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>13:13</span>
+								</div>
+							</div>
+						</div>
+						<div class="content_info ">
+							<div class="zc_info_txt">
+								<p>2017中国科技展-北京科博会</p>
+								<div class="source">
+									<span>凤凰财经</span> <span>04-01</span> <span>16:23</span>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div id="tab6" class="tab-pane"></div>
+				</div>
+			</div>
+			<div class="content_rt">
+				<div>
+					<h4>科技交易</h4>
+					<ul>
+						<li><a href="#">成果</a></li>
+						<li><a href="#">专家</a></li>
+						<li><a href="#">技术集群</a></li>
+						<li><a href="#">经纪人</a></li>
+						<li><a href="#">创业项目</a></li>
+						<li><a href="#">职业科技人</a></li>
+					</ul>
+				</div>
+				<div>
+					<h4>科技咨询</h4>
+					<ul>
+						<li><a href="./highTech.html">高企认定</a></li>
+						<li><a href="#">专利申请</a></li>
+						<li><a href="#">知识产权贯标</a></li>
+						<li><a href="#">ISO9001</a></li>
+						<li><a href="#">创新体系</a></li>
+					</ul>
+				</div>
+				<div>
+					<h4>科技思想</h4>
+					<ul>
+						<li><a href="#">科技明星</a></li>
+						<li><a href="#">前沿科技思想</a></li>
+					</ul>
+				</div>
+				<div>
+					<h4>科技金融</h4>
+					<ul>
+						<li><a href="#">投资机构</a></li>
+						<li><a href="#">金融项目</a></li>
+						<li><a href="#">网上创客</a></li>
+					</ul>
+				</div>
+				<div>
+					<h4>应用工具</h4>
+					<ul>
+						<li><a href="#">技术评估</a></li>
+						<li><a href="#">技术查新</a></li>
+						<li><a href="#">空间主页</a></li>
+						<li><a href="#">会员体系</a></li>
+					</ul>
+				</div>
+				<div>
+					<h4>社群百科</h4>
+					<ul>
+						<li><a href="#">科技活动</a></li>
+						<li><a href="#">技术社群</a></li>
+						<li><a href="#">科技百科</a></li>
+						<li><a href="#">趣科普</a></li>
+					</ul>
+				</div>
+				<div>
+					<h4>合作伙伴</h4>
+					<ul>
+						<li><a href="#">政府合作</a></li>
+						<li><a href="#">高校合作</a></li>
+						<li><a href="#">科研单位</a></li>
+						<li><a href="#">民间达人</a></li>
+					</ul>
+				</div>
+			</div>
+		</div>
+	</div>
+	<div
+		onclick="javascript:window.open('http://b.qq.com/webc.htm?new=0&sid=259388822&o=阿凡提咨询&q=7', '_blank', 'height=502, width=644,toolbar=no,scrollbars=no,menubar=no,status=no');"
+		style="position: fixed; right: 20px; bottom: 20px; background-color: #58a3ff; width: 60px; height: 60px; text-align: center; border-radius: 3px;">
+		<img
+			style="cursor: pointer; position: absolute; top: 5px; left: 14px;"
+			border="0"
+			src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAANlBMVEUAAAD////////////////////////////////////////////////////////////////////xY8b8AAAAEXRSTlMAgMAwEPDgQKCQYNBQn7BwIKfc/GEAAAC0SURBVDjLndNbEoMgDAXQBEIE1Na7/81Wqh18xHz0/DGEXDIDdDLxK4SZBzLJnLBTFrqJCQca7f0uXSpEcaHnlIIbpoMFd8lt0BynHQE/A5bXYUZYtBcwTJV+FKbQE/4sKLSpCQ9iP+9kiOLZsI3ot0jwCEW4JnrDxe0KGQ9SK5gwyghbbGMIy1pkylQDbbIZINRl/8XJrFYHds83hXYBNjW+Xa48Gv9TaglNWb6rgVfv7ZIf0/Atyg0k6YwAAAAASUVORK5CYII="
+			alt="客服咨询"> <span
+			style="color: #fff; position: absolute; bottom: 5px; left: 0; width: 100%; font-size: 12px;">咨询客服</span>
+	</div>
+	<div th:replace="common::footer(~{::script})">
+		<script src="//cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
+		<script src="//cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+	</div>
+</body>
+</html>

+ 0 - 19
src/main/webapp/WEB-INF/views/index.jsp

@@ -1,19 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%>
-<!DOCTYPE HTML>
-<html xmlns=http://www.w3.org/1999/xhtml>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-	<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
-	<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
-	<!-- [if lt IE 9]>
-    <script src="//cdn.bootcss.com/html5shiv/r29/html5.min.js"></script>
-	<script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
-  	<![endif] -->
-	<title>index</title>
-</head>
-<body>
-	<div id="root">建设中..</div>
-	<script type="text/javascript" src="${staticHost}/test.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/account/achievement.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>科技成果页</title>
+	<link th:href="${staticHost+'/user/account/achievement.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/account/achievement.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/account/achievement.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>科技成果页面</title>
-<link href="${staticHost}/user/account/achievement.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/account/achievement.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/account/demand.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>科技需求页</title>
+	<link th:href="${staticHost+'/user/account/demand.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/account/demand.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/account/demand.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>科技需求页面</title>
-<link href="${staticHost}/user/account/demand.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/account/demand.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/account/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>用户页</title>
+	<link th:href="${staticHost+'/user/account/index.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/account/index.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/account/index.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>用户登录页面</title>
-<link href="${staticHost}/user/account/index.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/account/index.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/account/services.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>科技服务页</title>
+	<link th:href="${staticHost+'/user/account/services.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/account/services.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/account/services.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>科技服务页面</title>
-<link href="${staticHost}/user/account/services.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/account/services.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/account/set.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>用户设置页</title>
+	<link th:href="${staticHost+'/user/account/set.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/account/set.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/account/set.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../../header.jsp"%>
-<title>用户设置页面</title>
-<link href="${staticHost}/user/account/set.css" rel="stylesheet">
-</head>
-<body>
-    <div id="root"></div>
-    <script type="text/javascript" src="${staticHost}/user/account/set.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/certify.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>个人用户认证页</title>
+	<link th:href="${staticHost+'/user/certify.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/certify.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/certify.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>个人用户认证页面</title>
-<link href="${staticHost}/user/certify.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/certify.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/groupCertify.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>团体用户认证页</title>
+	<link th:href="${staticHost+'/user/groupCertify.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/groupCertify.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/groupCertify.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>团体用户认证页面</title>
-<link href="${staticHost}/user/groupCertify.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/groupCertify.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>个人中心首页</title>
+	<link th:href="${staticHost+'/user/index.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/user/index.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/index.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>首页</title>
-<link href="${staticHost}/user/index.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/index.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/login.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>登录页</title>
+	<link th:href="${staticHost+'/user/login.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+ '/user/login.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/login.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>登录页面</title>
-<link href="${staticHost}/user/login.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/login.js"></script>
-</body>
-</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/user/signIn.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+	<title>注册页</title>
+	<link th:href="${staticHost+'/user/signIn.css'}" rel="stylesheet">
+</head>
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+ '/user/signIn.js'}"></script>
+	</div>
+</body>
+</html>

+ 0 - 11
src/main/webapp/WEB-INF/views/user/signIn.jsp

@@ -1,11 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
-<%@ include file="../header.jsp"%>
-<title>注册页面</title>
-<link href="${staticHost}/user/signIn.css" rel="stylesheet">
-</head>
-<body>
-	<div id="root"></div>
-	<script type="text/javascript" src="${staticHost}/user/signIn.js"></script>
-</body>
-</html>