From 6603f38c01369cac7927fd71389224fa15749e6f Mon Sep 17 00:00:00 2001 From: bootdo <1992lcg@163.com> Date: Sat, 10 Feb 2018 12:51:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=A4=84=E7=90=86=202.=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=203.=E8=A7=A3=E5=86=B3ajax?= =?UTF-8?q?=E6=98=AF=E7=99=BB=E5=BD=95=E8=BF=87=E6=9C=9F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bootdo/common/aspect/WebLogAspect.java | 2 +- .../bootdo/common/config/MyBatisConfig.java | 0 .../common/config/SpringSessionConfig.java | 8 -- .../common/controller/DictController.java | 58 ++++---- .../bootdo/common/exception/BDException.java | 1 - .../common/exception/BDExceptionHandler.java | 108 +++++++------- .../exception/MainsiteErrorController.java | 65 +++++++-- .../common/redis/JedisConfiguration.java | 39 ----- .../com/bootdo/common/redis/JedisUtil.java | 133 ------------------ .../common/redis/shiro/RedisManager.java | 102 ++++++++------ .../com/bootdo/common/utils/PageUtils.java | 2 +- .../com/bootdo/system/config/RedisConfig.java | 44 ------ .../system/controller/LoginController.java | 14 +- bootdo/src/main/resources/application-dev.yml | 4 +- bootdo/src/main/resources/application-pro.yml | 1 + bootdo/src/main/resources/application.yml | 4 +- bootdo/src/main/resources/logback-spring.xml | 5 + .../src/main/resources/static/js/ajax-util.js | 12 ++ .../resources/templates/common/file/file.html | 4 + .../src/main/resources/templates/login.html | 4 +- .../java/com/bootdo/testDemo/TestDemo.java | 40 ++++++ 21 files changed, 280 insertions(+), 370 deletions(-) delete mode 100644 bootdo/src/main/java/com/bootdo/common/config/MyBatisConfig.java delete mode 100644 bootdo/src/main/java/com/bootdo/common/config/SpringSessionConfig.java delete mode 100644 bootdo/src/main/java/com/bootdo/common/redis/JedisConfiguration.java delete mode 100644 bootdo/src/main/java/com/bootdo/common/redis/JedisUtil.java delete mode 100644 bootdo/src/main/java/com/bootdo/system/config/RedisConfig.java create mode 100644 bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java diff --git a/bootdo/src/main/java/com/bootdo/common/aspect/WebLogAspect.java b/bootdo/src/main/java/com/bootdo/common/aspect/WebLogAspect.java index 411627f..fda51d1 100644 --- a/bootdo/src/main/java/com/bootdo/common/aspect/WebLogAspect.java +++ b/bootdo/src/main/java/com/bootdo/common/aspect/WebLogAspect.java @@ -48,7 +48,7 @@ public class WebLogAspect { @AfterReturning(returning = "ret", pointcut = "logPointCut()")// returning的值和doAfterReturning的参数名一致 public void doAfterReturning(Object ret) throws Throwable { // 处理完请求,返回内容(返回值太复杂时,打印的是物理存储空间的地址) - logger.info("返回值 : " + ret); + logger.debug("返回值 : " + ret); } @Around("logPointCut()") diff --git a/bootdo/src/main/java/com/bootdo/common/config/MyBatisConfig.java b/bootdo/src/main/java/com/bootdo/common/config/MyBatisConfig.java deleted file mode 100644 index e69de29..0000000 diff --git a/bootdo/src/main/java/com/bootdo/common/config/SpringSessionConfig.java b/bootdo/src/main/java/com/bootdo/common/config/SpringSessionConfig.java deleted file mode 100644 index 4c824ab..0000000 --- a/bootdo/src/main/java/com/bootdo/common/config/SpringSessionConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.bootdo.common.config; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; - -@ConditionalOnProperty(prefix = "bootdo", name = "spring-session-open", havingValue = "true") -public class SpringSessionConfig { - -} diff --git a/bootdo/src/main/java/com/bootdo/common/controller/DictController.java b/bootdo/src/main/java/com/bootdo/common/controller/DictController.java index 172d732..9814b4c 100644 --- a/bootdo/src/main/java/com/bootdo/common/controller/DictController.java +++ b/bootdo/src/main/java/com/bootdo/common/controller/DictController.java @@ -25,41 +25,41 @@ import java.util.Map; */ @Controller -@RequestMapping("/common/sysDict") +@RequestMapping("/common/dict") public class DictController extends BaseController { @Autowired - private DictService sysDictService; + private DictService dictService; @GetMapping() - @RequiresPermissions("common:sysDict:sysDict") - String sysDict() { - return "common/sysDict/sysDict"; + @RequiresPermissions("common:dict:dict") + String dict() { + return "common/dict/dict"; } @ResponseBody @GetMapping("/list") - @RequiresPermissions("common:sysDict:sysDict") + @RequiresPermissions("common:dict:dict") public PageUtils list(@RequestParam Map params) { // 查询列表数据 Query query = new Query(params); - List sysDictList = sysDictService.list(query); - int total = sysDictService.count(query); - PageUtils pageUtils = new PageUtils(sysDictList, total); + List dictList = dictService.list(query); + int total = dictService.count(query); + PageUtils pageUtils = new PageUtils(dictList, total); return pageUtils; } @GetMapping("/add") - @RequiresPermissions("common:sysDict:add") + @RequiresPermissions("common:dict:add") String add() { - return "common/sysDict/add"; + return "common/dict/add"; } @GetMapping("/edit/{id}") - @RequiresPermissions("common:sysDict:edit") + @RequiresPermissions("common:dict:edit") String edit(@PathVariable("id") Long id, Model model) { - DictDO sysDict = sysDictService.get(id); - model.addAttribute("sysDict", sysDict); - return "common/sysDict/edit"; + DictDO dict = dictService.get(id); + model.addAttribute("dict", dict); + return "common/dict/edit"; } /** @@ -67,12 +67,12 @@ public class DictController extends BaseController { */ @ResponseBody @PostMapping("/save") - @RequiresPermissions("common:sysDict:add") - public R save(DictDO sysDict) { + @RequiresPermissions("common:dict:add") + public R save(DictDO dict) { if (Constant.DEMO_ACCOUNT.equals(getUsername())) { return R.error(1, "演示系统不允许修改,完整体验请部署程序"); } - if (sysDictService.save(sysDict) > 0) { + if (dictService.save(dict) > 0) { return R.ok(); } return R.error(); @@ -83,12 +83,12 @@ public class DictController extends BaseController { */ @ResponseBody @RequestMapping("/update") - @RequiresPermissions("common:sysDict:edit") - public R update(DictDO sysDict) { + @RequiresPermissions("common:dict:edit") + public R update(DictDO dict) { if (Constant.DEMO_ACCOUNT.equals(getUsername())) { return R.error(1, "演示系统不允许修改,完整体验请部署程序"); } - sysDictService.update(sysDict); + dictService.update(dict); return R.ok(); } @@ -97,12 +97,12 @@ public class DictController extends BaseController { */ @PostMapping("/remove") @ResponseBody - @RequiresPermissions("common:sysDict:remove") + @RequiresPermissions("common:dict:remove") public R remove(Long id) { if (Constant.DEMO_ACCOUNT.equals(getUsername())) { return R.error(1, "演示系统不允许修改,完整体验请部署程序"); } - if (sysDictService.remove(id) > 0) { + if (dictService.remove(id) > 0) { return R.ok(); } return R.error(); @@ -113,28 +113,28 @@ public class DictController extends BaseController { */ @PostMapping("/batchRemove") @ResponseBody - @RequiresPermissions("common:sysDict:batchRemove") + @RequiresPermissions("common:dict:batchRemove") public R remove(@RequestParam("ids[]") Long[] ids) { if (Constant.DEMO_ACCOUNT.equals(getUsername())) { return R.error(1, "演示系统不允许修改,完整体验请部署程序"); } - sysDictService.batchRemove(ids); + dictService.batchRemove(ids); return R.ok(); } @GetMapping("/type") @ResponseBody public List listType() { - return sysDictService.listType(); + return dictService.listType(); }; // 类别已经指定增加 @GetMapping("/add/{type}/{description}") - @RequiresPermissions("common:sysDict:add") + @RequiresPermissions("common:dict:add") String addD(Model model, @PathVariable("type") String type, @PathVariable("description") String description) { model.addAttribute("type", type); model.addAttribute("description", description); - return "common/sysDict/add"; + return "common/dict/add"; } @ResponseBody @@ -143,7 +143,7 @@ public class DictController extends BaseController { // 查询列表数据 Map map = new HashMap<>(16); map.put("type", type); - List dictList = sysDictService.list(map); + List dictList = dictService.list(map); return dictList; } } diff --git a/bootdo/src/main/java/com/bootdo/common/exception/BDException.java b/bootdo/src/main/java/com/bootdo/common/exception/BDException.java index a035eb8..5a8d323 100644 --- a/bootdo/src/main/java/com/bootdo/common/exception/BDException.java +++ b/bootdo/src/main/java/com/bootdo/common/exception/BDException.java @@ -2,7 +2,6 @@ package com.bootdo.common.exception; /** * 自定义异常 - */ public class BDException extends RuntimeException { private static final long serialVersionUID = 1L; diff --git a/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java b/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java index deacfc6..30821d1 100644 --- a/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java +++ b/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java @@ -1,54 +1,54 @@ -package com.bootdo.common.exception; - -import com.bootdo.common.utils.R; -import org.apache.shiro.authz.AuthorizationException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.dao.DuplicateKeyException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -/** - * 异常处理器 - * - */ -@RestControllerAdvice -public class BDExceptionHandler { - private Logger logger = LoggerFactory.getLogger(getClass()); - - /** - * 自定义异常 - */ - @ExceptionHandler(BDException.class) - public R handleBDException(BDException e) { - R r = new R(); - r.put("code", e.getCode()); - r.put("msg", e.getMessage()); - - return r; - } - - @ExceptionHandler(DuplicateKeyException.class) - public R handleDuplicateKeyException(DuplicateKeyException e) { - logger.error(e.getMessage(), e); - return R.error("数据库中已存在该记录"); - } - - @ExceptionHandler(org.springframework.web.servlet.NoHandlerFoundException.class) - public R noHandlerFoundException(org.springframework.web.servlet.NoHandlerFoundException e) { - logger.error(e.getMessage(), e); - return R.error(404,"没找找到页面"); - } - - @ExceptionHandler(AuthorizationException.class) - public R handleAuthorizationException(AuthorizationException e) { - logger.error(e.getMessage(), e); - return R.error(403,"未授权"); - } - - @ExceptionHandler(Exception.class) - public R handleException(Exception e) { - logger.error(e.getMessage(), e); - return R.error("服务器错误,请联系管理员"); - } -} +//package com.bootdo.common.exception; +// +//import com.bootdo.common.utils.R; +//import org.apache.shiro.authz.AuthorizationException; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.dao.DuplicateKeyException; +//import org.springframework.web.bind.annotation.ExceptionHandler; +//import org.springframework.web.bind.annotation.RestControllerAdvice; +// +///** +// * 异常处理器 +// * +// */ +//@RestControllerAdvice +//public class BDExceptionHandler { +// private Logger logger = LoggerFactory.getLogger(getClass()); +// +// /** +// * 自定义异常 +// */ +// @ExceptionHandler(BDException.class) +// public R handleBDException(BDException e) { +// logger.error(e.getMessage(), e); +// R r = new R(); +// r.put("code", e.getCode()); +// r.put("msg", e.getMessage()); +// return r; +// } +// +// @ExceptionHandler(DuplicateKeyException.class) +// public R handleDuplicateKeyException(DuplicateKeyException e) { +// logger.error(e.getMessage(), e); +// return R.error("数据库中已存在该记录"); +// } +// +// @ExceptionHandler(org.springframework.web.servlet.NoHandlerFoundException.class) +// public R noHandlerFoundException(org.springframework.web.servlet.NoHandlerFoundException e) { +// logger.error(e.getMessage(), e); +// return R.error(404,"没找找到页面"); +// } +// +// @ExceptionHandler(AuthorizationException.class) +// public R handleAuthorizationException(AuthorizationException e) { +// logger.error(e.getMessage(), e); +// return R.error(403,"未授权"); +// } +// +// @ExceptionHandler(Exception.class) +// public R handleException(Exception e) { +// logger.error(e.getMessage(), e); +// return R.error("服务器错误,请联系管理员"); +// } +//} diff --git a/bootdo/src/main/java/com/bootdo/common/exception/MainsiteErrorController.java b/bootdo/src/main/java/com/bootdo/common/exception/MainsiteErrorController.java index 06b4f99..8778255 100644 --- a/bootdo/src/main/java/com/bootdo/common/exception/MainsiteErrorController.java +++ b/bootdo/src/main/java/com/bootdo/common/exception/MainsiteErrorController.java @@ -1,25 +1,66 @@ package com.bootdo.common.exception; + +import com.bootdo.common.utils.R; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.web.ErrorAttributes; import org.springframework.boot.autoconfigure.web.ErrorController; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; -@Controller +@RestController public class MainsiteErrorController implements ErrorController { - private Logger logger = LoggerFactory.getLogger(getClass()); - private static final String ERROR_PATH = "/error"; + private Logger logger = LoggerFactory.getLogger(getClass()); + private static final String ERROR_PATH = "/error"; + + @Autowired + ErrorAttributes errorAttributes; + + @RequestMapping( + value = {ERROR_PATH}, + produces = {"text/html"} + ) + public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { + int code = response.getStatus(); + if (404 == code) { + return new ModelAndView("error/404"); + } else if (403 == code) { + return new ModelAndView("error/403"); + } else if (401 == code) { + return new ModelAndView("login"); + } else { + return new ModelAndView("error/500"); + } - @RequestMapping(value = ERROR_PATH) - public String handleError() { - return "error/500"; - } + } - @Override - public String getErrorPath() { - // TODO Auto-generated method stub - return ERROR_PATH; - } + @RequestMapping(value = ERROR_PATH) + public R handleError(HttpServletRequest request, HttpServletResponse response) { + response.setStatus(200); + int code = response.getStatus(); + if (404 == code) { + return R.error(404, "未找到资源"); + } else if (403 == code) { + return R.error(403, "没有访问权限"); + } else if (401 == code) { + return R.error(403, "登录过期"); + } else { + return R.error(500, "服务器错误"); + } + } + @Override + public String getErrorPath() { + // TODO Auto-generated method stub + return ERROR_PATH; + } } \ No newline at end of file diff --git a/bootdo/src/main/java/com/bootdo/common/redis/JedisConfiguration.java b/bootdo/src/main/java/com/bootdo/common/redis/JedisConfiguration.java deleted file mode 100644 index c6efb3c..0000000 --- a/bootdo/src/main/java/com/bootdo/common/redis/JedisConfiguration.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.bootdo.common.redis; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.JedisPoolConfig; - -@Configuration -@EnableCaching -public class JedisConfiguration { - @Value("${spring.redis.host}") - private String host; - - @Value("${spring.redis.port}") - private int port; - - @Value("${spring.redis.timeout}") - private int timeout; - - @Value("${spring.redis.pool.max-idle}") - private int maxIdle; - - @Value("${spring.redis.pool.max-wait}") - private long maxWaitMillis; - - @Value("${spring.redis.password}") - private String password; - @Bean - public JedisPool redisPoolFactory() { - JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); - jedisPoolConfig.setMaxIdle(maxIdle); - jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); - JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password); - return jedisPool; - } -} diff --git a/bootdo/src/main/java/com/bootdo/common/redis/JedisUtil.java b/bootdo/src/main/java/com/bootdo/common/redis/JedisUtil.java deleted file mode 100644 index a970bef..0000000 --- a/bootdo/src/main/java/com/bootdo/common/redis/JedisUtil.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.bootdo.common.redis; - -import java.util.Set; - -import org.springframework.beans.BeansException; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.stereotype.Component; - -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; - -@Component -public class JedisUtil implements ApplicationContextAware { - private static ApplicationContext applicationContext = null; - - private static JedisPool jedisPool = null; - - private static volatile Jedis jedis = null; - public JedisUtil(){} - - public static Jedis getJedis(){ - if (jedis ==null){ - synchronized (Jedis.class){ - if (jedis ==null){ - jedis = getJedisPool().getResource(); - } - } - } - return jedis; - } - - public static JedisPool getJedisPool(){ - if (jedisPool ==null){ - synchronized (JedisPool.class){ - if (jedisPool==null){ - jedisPool = applicationContext.getBean(JedisPool.class); - } - } - } - return jedisPool; - } - - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - if(JedisUtil.applicationContext == null){ - JedisUtil.applicationContext = applicationContext; //初始化 spring applicationContext - } - } - - /** - * 根据key查看是否存在 - * @param key - * @return - */ - public static boolean hasKey(String key){ - return getJedis().exists(key); - } - - /** - * 设置key -value 形式数据 - * @param key - * @param value - * @return - */ - public static String set(String key,String value){ - String result = getJedis().set(key,value); - return result; - } - - /** - * 设置 一个过期时间 - * @param key - * @param value - * @param timeOut 单位秒 - * @return - */ - public static String set(String key,String value,int timeOut){ - return getJedis().setex(key,timeOut,value); - } - - /** - * 根据key获取value - * @param key - * @return - */ - public static String getByKey(String key){ - return getJedis().get(key); - } - - /** - * 根据通配符获取所有匹配的key - * @param pattern - * @return - */ - public static Set getKesByPattern(String pattern){ - return getJedis().keys(pattern); - } - - /** - * 根据key删除 - * @param key - */ - public static void delByKey(String key){ - getJedis().del(key); - } - - /** - * 根据key获取过期时间 - * @param key - * @return - */ - public static long getTimeOutByKey(String key){ - return getJedis().ttl(key); - } - - /** - * 清空数据 【慎用啊!】 - */ - public static void flushDB(){ - getJedis().flushDB(); - } - - /** - * 刷新过期时间 - * @param key - * @param timeOut - * @return - */ - public static long refreshLiveTime(String key,int timeOut){ - return getJedis().expire(key,timeOut); - } -} diff --git a/bootdo/src/main/java/com/bootdo/common/redis/shiro/RedisManager.java b/bootdo/src/main/java/com/bootdo/common/redis/shiro/RedisManager.java index 39834d0..c02dd24 100644 --- a/bootdo/src/main/java/com/bootdo/common/redis/shiro/RedisManager.java +++ b/bootdo/src/main/java/com/bootdo/common/redis/shiro/RedisManager.java @@ -4,8 +4,12 @@ package com.bootdo.common.redis.shiro; * @author bootdo 1992lcg@163.com * @version V1.0 */ + import java.util.Set; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @@ -29,20 +33,20 @@ public class RedisManager { private static JedisPool jedisPool = null; - public RedisManager(){ + public RedisManager() { } /** * 初始化方法 */ - public void init(){ - if(jedisPool == null){ - if(password != null && !"".equals(password)){ + public void init() { + if (jedisPool == null) { + if (password != null && !"".equals(password)) { jedisPool = new JedisPool(new JedisPoolConfig(), host, port, timeout, password); - }else if(timeout != 0){ - jedisPool = new JedisPool(new JedisPoolConfig(), host, port,timeout); - }else{ + } else if (timeout != 0) { + jedisPool = new JedisPool(new JedisPoolConfig(), host, port, timeout); + } else { jedisPool = new JedisPool(new JedisPoolConfig(), host, port); } @@ -51,110 +55,129 @@ public class RedisManager { /** * get value from redis + * * @param key * @return */ - public byte[] get(byte[] key){ + public byte[] get(byte[] key) { byte[] value = null; Jedis jedis = jedisPool.getResource(); - try{ + try { value = jedis.get(key); - }finally{ - jedisPool.returnResource(jedis); + } finally { + if (jedis != null) { + jedis.close(); + } } return value; } /** * set + * * @param key * @param value * @return */ - public byte[] set(byte[] key,byte[] value){ + public byte[] set(byte[] key, byte[] value) { Jedis jedis = jedisPool.getResource(); - try{ - jedis.set(key,value); - if(this.expire != 0){ + try { + jedis.set(key, value); + if (this.expire != 0) { jedis.expire(key, this.expire); } - }finally{ - jedisPool.returnResource(jedis); + } finally { + if (jedis != null) { + jedis.close(); + } } return value; } /** * set + * * @param key * @param value * @param expire * @return */ - public byte[] set(byte[] key,byte[] value,int expire){ + public byte[] set(byte[] key, byte[] value, int expire) { Jedis jedis = jedisPool.getResource(); - try{ - jedis.set(key,value); - if(expire != 0){ + try { + jedis.set(key, value); + if (expire != 0) { jedis.expire(key, expire); } - }finally{ - jedisPool.returnResource(jedis); + } finally { + if (jedis != null) { + jedis.close(); + } } return value; } /** * del + * * @param key */ - public void del(byte[] key){ + public void del(byte[] key) { Jedis jedis = jedisPool.getResource(); - try{ + try { jedis.del(key); - }finally{ - jedisPool.returnResource(jedis); + } finally { + if (jedis != null) { + jedis.close(); + } } } /** * flush */ - public void flushDB(){ + public void flushDB() { Jedis jedis = jedisPool.getResource(); - try{ + try { jedis.flushDB(); - }finally{ - jedisPool.returnResource(jedis); + } finally { + if (jedis != null) { + jedis.close(); + } } } /** * size */ - public Long dbSize(){ + public Long dbSize() { Long dbSize = 0L; Jedis jedis = jedisPool.getResource(); - try{ + try { dbSize = jedis.dbSize(); - }finally{ - jedisPool.returnResource(jedis); + } finally { + if (jedis != null) { + jedis.close(); + } } return dbSize; } /** * keys + * * @param regex * @return */ - public Set keys(String pattern){ + public Set keys(String pattern) { Set keys = null; Jedis jedis = jedisPool.getResource(); - try{ + try { keys = jedis.keys(pattern.getBytes()); - }finally{ - jedisPool.returnResource(jedis); + } finally { + if (jedis != null) { + jedis.close(); + } } return keys; } @@ -200,5 +223,4 @@ public class RedisManager { } - } diff --git a/bootdo/src/main/java/com/bootdo/common/utils/PageUtils.java b/bootdo/src/main/java/com/bootdo/common/utils/PageUtils.java index 18e861e..0c9d919 100644 --- a/bootdo/src/main/java/com/bootdo/common/utils/PageUtils.java +++ b/bootdo/src/main/java/com/bootdo/common/utils/PageUtils.java @@ -6,7 +6,7 @@ import java.util.List; /** * @Author bootdo 1992lcg@163.com */ -public class PageUtils implements Serializable { +public class PageUtils implements Serializable { private static final long serialVersionUID = 1L; private int total; private List rows; diff --git a/bootdo/src/main/java/com/bootdo/system/config/RedisConfig.java b/bootdo/src/main/java/com/bootdo/system/config/RedisConfig.java deleted file mode 100644 index 7402faa..0000000 --- a/bootdo/src/main/java/com/bootdo/system/config/RedisConfig.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.bootdo.system.config; - -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.CachingConfigurerSupport; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.JedisPoolConfig; - -/** - * Created by yangqj on 2017/4/30. - */ -@Configuration -@EnableCaching -public class RedisConfig extends CachingConfigurerSupport { - @Value("${spring.redis.host}") - private String host; - @Value("${spring.redis.password}") - private String password; - @Value("${spring.redis.port}") - private int port; - @Value("${spring.redis.timeout}") - private int timeout; - @Value("${spring.redis.pool.max-idle}") - private int maxIdle; - @Value("${spring.redis.pool.max-wait}") - private long maxWaitMillis; - - @Bean - public JedisPool redisPoolFactory() { - Logger.getLogger(getClass()).info("JedisPool注入成功!!"); - Logger.getLogger(getClass()).info("redis地址:" + host + ":" + port); - JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); - jedisPoolConfig.setMaxIdle(maxIdle); - jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); - - JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout,password); - - return jedisPool; - } - -} diff --git a/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java b/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java index 0f06aad..1cdee3a 100644 --- a/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java +++ b/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java @@ -35,6 +35,7 @@ public class LoginController extends BaseController { FileService fileService; @GetMapping({ "/", "" }) String welcome(Model model) { + return "redirect:/blog"; } @@ -89,8 +90,17 @@ public class LoginController extends BaseController { return "main"; } - @GetMapping("/403") - String error403() { + @GetMapping("/test") + String test() { + Integer i = null; + System.out.println(i.toString()); + return "403"; + } + @ResponseBody + @GetMapping("/test2") + String test2() { + Integer i = null; + System.out.println(i.toString()); return "403"; } diff --git a/bootdo/src/main/resources/application-dev.yml b/bootdo/src/main/resources/application-dev.yml index bc0a210..91073cf 100644 --- a/bootdo/src/main/resources/application-dev.yml +++ b/bootdo/src/main/resources/application-dev.yml @@ -2,8 +2,8 @@ bootdo: uploadPath: D:/var/uploaded_files/ logging: level: - root: info - com.bootdo: debug + root: error + com.bootdo: info spring: datasource: type: com.alibaba.druid.pool.DruidDataSource diff --git a/bootdo/src/main/resources/application-pro.yml b/bootdo/src/main/resources/application-pro.yml index bb21eb0..85e7087 100644 --- a/bootdo/src/main/resources/application-pro.yml +++ b/bootdo/src/main/resources/application-pro.yml @@ -3,6 +3,7 @@ bootdo: logging: level: root: error + com.bootdo: info spring: datasource: type: com.alibaba.druid.pool.DruidDataSource diff --git a/bootdo/src/main/resources/application.yml b/bootdo/src/main/resources/application.yml index abb0b8d..7f06989 100644 --- a/bootdo/src/main/resources/application.yml +++ b/bootdo/src/main/resources/application.yml @@ -1,10 +1,10 @@ server: # context-path: /myboot - session-timeout: 1800 + session-timeout: 10 # tomcat: # max-threads: 1000 # min-spare-threads: 30 - port: 80 + port: 8081 # uri-encoding: utf-8 security: basic: diff --git a/bootdo/src/main/resources/logback-spring.xml b/bootdo/src/main/resources/logback-spring.xml index 5dcb6b3..683686d 100644 --- a/bootdo/src/main/resources/logback-spring.xml +++ b/bootdo/src/main/resources/logback-spring.xml @@ -28,4 +28,9 @@ + + + + + diff --git a/bootdo/src/main/resources/static/js/ajax-util.js b/bootdo/src/main/resources/static/js/ajax-util.js index b7730ac..307ea43 100644 --- a/bootdo/src/main/resources/static/js/ajax-util.js +++ b/bootdo/src/main/resources/static/js/ajax-util.js @@ -83,6 +83,18 @@ $(document).ajaxStop(function () { layer.closeAll('loading'); }); + 1 + /** + 2 * 设置未来(全局)的AJAX请求默认选项 + 3 * 主要设置了AJAX请求遇到Session过期的情况 + 4 */ + $.ajaxSetup({ + complete: function (xhr, status,dataType) { + if('text/html;charset=UTF-8'==xhr.getResponseHeader('Content-Type')){ + top.location.href = '/login'; + } + } + }); })(jQuery); diff --git a/bootdo/src/main/resources/templates/common/file/file.html b/bootdo/src/main/resources/templates/common/file/file.html index 874310b..7d927f5 100644 --- a/bootdo/src/main/resources/templates/common/file/file.html +++ b/bootdo/src/main/resources/templates/common/file/file.html @@ -12,6 +12,10 @@ +
diff --git a/bootdo/src/main/resources/templates/login.html b/bootdo/src/main/resources/templates/login.html index 195f892..3c0aca4 100644 --- a/bootdo/src/main/resources/templates/login.html +++ b/bootdo/src/main/resources/templates/login.html @@ -123,7 +123,7 @@ url: ctx+"login", data: $('#signupForm').serialize(), success: function (r) { - if (r.code == 0) { + if (r.code == 0) { var index = layer.load(1, { shade: [0.1,'#fff'] //0.1透明度的白色背景 }); @@ -131,7 +131,7 @@ } else { layer.msg(r.msg); } - } + }, }); } diff --git a/bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java b/bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java new file mode 100644 index 0000000..b43cf89 --- /dev/null +++ b/bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java @@ -0,0 +1,40 @@ +package com.bootdo.testDemo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.concurrent.TimeUnit; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class TestDemo { + @Autowired + RedisTemplate redisTemplate; + @Test + public void jTestDemo(){ + // 从缓存中获取城市信息 + String key = "f" ; + ValueOperations operations = redisTemplate.opsForValue(); + + // 缓存存在 + boolean hasKey = redisTemplate.hasKey(key); + if (hasKey) { + Object city = operations.get(key); + + System.out.println("CityServiceImpl.findCityById() : 从缓存中获取了城市 >> " + city.toString()); + } + + // 从 DB 中获取城市信息 + String city = "ffsff"; + + // 插入缓存 + operations.set(key, city, 120, TimeUnit.SECONDS); + System.out.println("CityServiceImpl.findCityById() : 城市插入缓存 >> " + city.toString()); + System.out.println("ok"); + } +} -- Gitee From 2a1b65aa61449dbe681c2a892b7248707970a28e Mon Sep 17 00:00:00 2001 From: bootdo <1992lcg@163.com> Date: Sun, 11 Feb 2018 17:10:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1=E5=A2=9E=E5=8A=A0=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E7=AD=89?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bootdo/common/aspect/LogAspect.java | 1 - .../com/bootdo/common/config/Constant.java | 2 + .../common/config/SpringAsyncConfig.java | 12 +- .../common/controller/DictController.java | 1 - .../common/exception/BDExceptionHandler.java | 135 +++++--- .../bootdo/common/service/DictService.java | 4 +- .../common/service/impl/DictServiceImpl.java | 8 +- .../bootdo/common/utils/ExceptionUtils.java | 12 + .../bootdo/common/utils/HttpServletUtils.java | 14 + .../system/controller/LoginController.java | 16 +- bootdo/src/main/resources/application-dev.yml | 2 +- bootdo/src/main/resources/application.yml | 6 +- .../src/main/resources/static/js/ajax-util.js | 6 +- .../static/js/appjs/common/dict/add.js | 2 +- .../static/js/appjs/common/dict/dict.js | 4 +- .../static/js/appjs/common/dict/edit.js | 2 +- .../static/js/appjs/common/log/log.js | 319 +++++++++--------- .../static/js/appjs/oa/notify/add.js | 2 +- .../static/js/appjs/oa/notify/edit.js | 2 +- .../common/{sysDict => dict}/add.html | 134 ++++---- .../{sysDict/sysDict.html => dict/dict.html} | 14 +- .../common/{sysDict => dict}/edit.html | 162 ++++----- .../java/com/bootdo/testDemo/TestDemo.java | 30 +- 23 files changed, 465 insertions(+), 425 deletions(-) create mode 100644 bootdo/src/main/java/com/bootdo/common/utils/ExceptionUtils.java create mode 100644 bootdo/src/main/java/com/bootdo/common/utils/HttpServletUtils.java rename bootdo/src/main/resources/templates/common/{sysDict => dict}/add.html (97%) rename bootdo/src/main/resources/templates/common/{sysDict/sysDict.html => dict/dict.html} (79%) rename bootdo/src/main/resources/templates/common/{sysDict => dict}/edit.html (86%) diff --git a/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java b/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java index 00544ff..85b2152 100644 --- a/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java +++ b/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java @@ -55,7 +55,6 @@ public class LogAspect { return result; } - @Async void saveLog(ProceedingJoinPoint joinPoint, long time) throws InterruptedException { MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); diff --git a/bootdo/src/main/java/com/bootdo/common/config/Constant.java b/bootdo/src/main/java/com/bootdo/common/config/Constant.java index be17bed..4b0054d 100644 --- a/bootdo/src/main/java/com/bootdo/common/config/Constant.java +++ b/bootdo/src/main/java/com/bootdo/common/config/Constant.java @@ -18,5 +18,7 @@ public class Constant { //缓存方式 public static String CACHE_TYPE_REDIS ="redis"; + public static String LOG_ERROR = "error"; + } diff --git a/bootdo/src/main/java/com/bootdo/common/config/SpringAsyncConfig.java b/bootdo/src/main/java/com/bootdo/common/config/SpringAsyncConfig.java index bcc17ff..c8950ec 100644 --- a/bootdo/src/main/java/com/bootdo/common/config/SpringAsyncConfig.java +++ b/bootdo/src/main/java/com/bootdo/common/config/SpringAsyncConfig.java @@ -14,10 +14,10 @@ import java.util.concurrent.TimeUnit; @Configuration @EnableAsync public class SpringAsyncConfig { - @Bean - public AsyncTaskExecutor taskExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setMaxPoolSize(10); - return executor; - } +// @Bean +// public AsyncTaskExecutor taskExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// executor.setMaxPoolSize(10); +// return executor; +// } } \ No newline at end of file diff --git a/bootdo/src/main/java/com/bootdo/common/controller/DictController.java b/bootdo/src/main/java/com/bootdo/common/controller/DictController.java index 9814b4c..e6c0c9c 100644 --- a/bootdo/src/main/java/com/bootdo/common/controller/DictController.java +++ b/bootdo/src/main/java/com/bootdo/common/controller/DictController.java @@ -18,7 +18,6 @@ import java.util.Map; /** * 字典表 - * * @author chglee * @email 1992lcg@163.com * @date 2017-09-29 18:28:07 diff --git a/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java b/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java index 30821d1..9842166 100644 --- a/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java +++ b/bootdo/src/main/java/com/bootdo/common/exception/BDExceptionHandler.java @@ -1,54 +1,87 @@ -//package com.bootdo.common.exception; +package com.bootdo.common.exception; + +import com.bootdo.common.config.Constant; +import com.bootdo.common.domain.LogDO; +import com.bootdo.common.service.LogService; +import com.bootdo.common.utils.ExceptionUtils; +import com.bootdo.common.utils.HttpServletUtils; +import com.bootdo.common.utils.R; +import com.bootdo.common.utils.ShiroUtils; +import com.bootdo.system.domain.UserDO; +import org.apache.shiro.authz.AuthorizationException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DuplicateKeyException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Date; + +/** + * 异常处理器 + */ +@RestControllerAdvice +public class BDExceptionHandler { + private Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired + LogService logService; // -//import com.bootdo.common.utils.R; -//import org.apache.shiro.authz.AuthorizationException; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.dao.DuplicateKeyException; -//import org.springframework.web.bind.annotation.ExceptionHandler; -//import org.springframework.web.bind.annotation.RestControllerAdvice; +// /** +// * 自定义异常 +// */ +// @ExceptionHandler(BDException.class) +// public R handleBDException(BDException e) { +// logger.error(e.getMessage(), e); +// R r = new R(); +// r.put("code", e.getCode()); +// r.put("msg", e.getMessage()); +// return r; +// } // -///** -// * 异常处理器 -// * -// */ -//@RestControllerAdvice -//public class BDExceptionHandler { -// private Logger logger = LoggerFactory.getLogger(getClass()); +// @ExceptionHandler(DuplicateKeyException.class) +// public R handleDuplicateKeyException(DuplicateKeyException e) { +// logger.error(e.getMessage(), e); +// return R.error("数据库中已存在该记录"); +// } // -// /** -// * 自定义异常 -// */ -// @ExceptionHandler(BDException.class) -// public R handleBDException(BDException e) { -// logger.error(e.getMessage(), e); -// R r = new R(); -// r.put("code", e.getCode()); -// r.put("msg", e.getMessage()); -// return r; -// } -// -// @ExceptionHandler(DuplicateKeyException.class) -// public R handleDuplicateKeyException(DuplicateKeyException e) { -// logger.error(e.getMessage(), e); -// return R.error("数据库中已存在该记录"); -// } -// -// @ExceptionHandler(org.springframework.web.servlet.NoHandlerFoundException.class) -// public R noHandlerFoundException(org.springframework.web.servlet.NoHandlerFoundException e) { -// logger.error(e.getMessage(), e); -// return R.error(404,"没找找到页面"); -// } -// -// @ExceptionHandler(AuthorizationException.class) -// public R handleAuthorizationException(AuthorizationException e) { -// logger.error(e.getMessage(), e); -// return R.error(403,"未授权"); -// } -// -// @ExceptionHandler(Exception.class) -// public R handleException(Exception e) { -// logger.error(e.getMessage(), e); -// return R.error("服务器错误,请联系管理员"); -// } -//} +// @ExceptionHandler(org.springframework.web.servlet.NoHandlerFoundException.class) +// public R noHandlerFoundException(org.springframework.web.servlet.NoHandlerFoundException e) { +// logger.error(e.getMessage(), e); +// return R.error(404, "没找找到页面"); +// } + + @ExceptionHandler(AuthorizationException.class) + public Object handleAuthorizationException(AuthorizationException e, HttpServletRequest request) { + logger.error(e.getMessage(), e); + if (HttpServletUtils.jsAjax(request)) { + return R.error(403, "未授权"); + } + return new ModelAndView("error/403"); + } + + + @ExceptionHandler({Exception.class}) + public Object handleException(Exception e, HttpServletRequest request) { + LogDO logDO = new LogDO(); + logDO.setGmtCreate(new Date()); + logDO.setOperation(Constant.LOG_ERROR); + logDO.setMethod(request.getRequestURL().toString()); + logDO.setParams(e.toString()); + UserDO current = ShiroUtils.getUser(); + if(null!=current){ + logDO.setUserId(current.getUserId()); + logDO.setUsername(current.getUsername()); + } + logService.save(logDO); + logger.error(e.getMessage(), e); + if (HttpServletUtils.jsAjax(request)) { + return R.error(500, "服务器错误,请联系管理员"); + } + return new ModelAndView("error/500"); + } +} diff --git a/bootdo/src/main/java/com/bootdo/common/service/DictService.java b/bootdo/src/main/java/com/bootdo/common/service/DictService.java index 5d0778e..d0227c5 100644 --- a/bootdo/src/main/java/com/bootdo/common/service/DictService.java +++ b/bootdo/src/main/java/com/bootdo/common/service/DictService.java @@ -21,9 +21,9 @@ public interface DictService { int count(Map map); - int save(DictDO sysDict); + int save(DictDO dict); - int update(DictDO sysDict); + int update(DictDO dict); int remove(Long id); diff --git a/bootdo/src/main/java/com/bootdo/common/service/impl/DictServiceImpl.java b/bootdo/src/main/java/com/bootdo/common/service/impl/DictServiceImpl.java index 3ad53f3..12f20b4 100644 --- a/bootdo/src/main/java/com/bootdo/common/service/impl/DictServiceImpl.java +++ b/bootdo/src/main/java/com/bootdo/common/service/impl/DictServiceImpl.java @@ -36,13 +36,13 @@ public class DictServiceImpl implements DictService { } @Override - public int save(DictDO sysDict) { - return dictDao.save(sysDict); + public int save(DictDO dict) { + return dictDao.save(dict); } @Override - public int update(DictDO sysDict) { - return dictDao.update(sysDict); + public int update(DictDO dict) { + return dictDao.update(dict); } @Override diff --git a/bootdo/src/main/java/com/bootdo/common/utils/ExceptionUtils.java b/bootdo/src/main/java/com/bootdo/common/utils/ExceptionUtils.java new file mode 100644 index 0000000..17d1ccb --- /dev/null +++ b/bootdo/src/main/java/com/bootdo/common/utils/ExceptionUtils.java @@ -0,0 +1,12 @@ +package com.bootdo.common.utils; + +public class ExceptionUtils { + public static String getExceptionAllinformation(Exception ex) { + String sOut = ""; + StackTraceElement[] trace = ex.getStackTrace(); + for (StackTraceElement s : trace) { + sOut += "\tat " + s + "\r\n"; + } + return sOut; + } +} diff --git a/bootdo/src/main/java/com/bootdo/common/utils/HttpServletUtils.java b/bootdo/src/main/java/com/bootdo/common/utils/HttpServletUtils.java new file mode 100644 index 0000000..ba6e92e --- /dev/null +++ b/bootdo/src/main/java/com/bootdo/common/utils/HttpServletUtils.java @@ -0,0 +1,14 @@ +package com.bootdo.common.utils; + +import javax.servlet.http.HttpServletRequest; + +public class HttpServletUtils { + public static boolean jsAjax(HttpServletRequest req){ + //判断是否为ajax请求,默认不是 + boolean isAjaxRequest = false; + if(!StringUtils.isBlank(req.getHeader("x-requested-with")) && req.getHeader("x-requested-with").equals("XMLHttpRequest")){ + isAjaxRequest = true; + } + return isAjaxRequest; + } +} diff --git a/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java b/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java index 1cdee3a..4312dfe 100644 --- a/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java +++ b/bootdo/src/main/java/com/bootdo/system/controller/LoginController.java @@ -10,6 +10,7 @@ import com.bootdo.common.utils.R; import com.bootdo.common.utils.ShiroUtils; import com.bootdo.system.domain.MenuDO; import com.bootdo.system.service.MenuService; +import io.swagger.models.auth.In; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; @@ -68,6 +69,7 @@ public class LoginController extends BaseController { @PostMapping("/login") @ResponseBody R ajaxLogin(String username, String password) { + password = MD5Utils.encrypt(username, password); UsernamePasswordToken token = new UsernamePasswordToken(username, password); Subject subject = SecurityUtils.getSubject(); @@ -90,18 +92,4 @@ public class LoginController extends BaseController { return "main"; } - @GetMapping("/test") - String test() { - Integer i = null; - System.out.println(i.toString()); - return "403"; - } - @ResponseBody - @GetMapping("/test2") - String test2() { - Integer i = null; - System.out.println(i.toString()); - return "403"; - } - } diff --git a/bootdo/src/main/resources/application-dev.yml b/bootdo/src/main/resources/application-dev.yml index 91073cf..2f8331f 100644 --- a/bootdo/src/main/resources/application-dev.yml +++ b/bootdo/src/main/resources/application-dev.yml @@ -3,7 +3,7 @@ bootdo: logging: level: root: error - com.bootdo: info + com.bootdo: debug spring: datasource: type: com.alibaba.druid.pool.DruidDataSource diff --git a/bootdo/src/main/resources/application.yml b/bootdo/src/main/resources/application.yml index 7f06989..8872c7d 100644 --- a/bootdo/src/main/resources/application.yml +++ b/bootdo/src/main/resources/application.yml @@ -1,10 +1,10 @@ server: # context-path: /myboot - session-timeout: 10 + session-timeout: 1800 # tomcat: # max-threads: 1000 # min-spare-threads: 30 - port: 8081 + port: 80 # uri-encoding: utf-8 security: basic: @@ -31,4 +31,4 @@ mybatis: mapper-locations: mybatis/**/*Mapper.xml typeAliasesPackage: com.bootdo.**.domain #配置缓存和session存储方式,默认ehcache,可选redis -cacheType: ehcache \ No newline at end of file +cacheType: ehcache diff --git a/bootdo/src/main/resources/static/js/ajax-util.js b/bootdo/src/main/resources/static/js/ajax-util.js index 307ea43..3d8fd15 100644 --- a/bootdo/src/main/resources/static/js/ajax-util.js +++ b/bootdo/src/main/resources/static/js/ajax-util.js @@ -83,11 +83,7 @@ $(document).ajaxStop(function () { layer.closeAll('loading'); }); - 1 - /** - 2 * 设置未来(全局)的AJAX请求默认选项 - 3 * 主要设置了AJAX请求遇到Session过期的情况 - 4 */ + //登录过期,shiro返回登录页面 $.ajaxSetup({ complete: function (xhr, status,dataType) { if('text/html;charset=UTF-8'==xhr.getResponseHeader('Content-Type')){ diff --git a/bootdo/src/main/resources/static/js/appjs/common/dict/add.js b/bootdo/src/main/resources/static/js/appjs/common/dict/add.js index a30d7aa..a2ea3fd 100644 --- a/bootdo/src/main/resources/static/js/appjs/common/dict/add.js +++ b/bootdo/src/main/resources/static/js/appjs/common/dict/add.js @@ -11,7 +11,7 @@ function save() { $.ajax({ cache : true, type : "POST", - url : "/common/sysDict/save", + url : "/common/dict/save", data : $('#signupForm').serialize(), // 你的formid async : false, error : function(request) { diff --git a/bootdo/src/main/resources/static/js/appjs/common/dict/dict.js b/bootdo/src/main/resources/static/js/appjs/common/dict/dict.js index 99897a0..52b5b78 100644 --- a/bootdo/src/main/resources/static/js/appjs/common/dict/dict.js +++ b/bootdo/src/main/resources/static/js/appjs/common/dict/dict.js @@ -1,5 +1,5 @@ -var prefix = "/common/sysDict" +var prefix = "/common/dict" $(function() { // var config = { @@ -25,7 +25,7 @@ $(function() { function selectLoad() { var html = ""; $.ajax({ - url : '/common/sysDict/type', + url : '/common/dict/type', success : function(data) { //加载数据 for (var i = 0; i < data.length; i++) { diff --git a/bootdo/src/main/resources/static/js/appjs/common/dict/edit.js b/bootdo/src/main/resources/static/js/appjs/common/dict/edit.js index e1cab60..4110ee4 100644 --- a/bootdo/src/main/resources/static/js/appjs/common/dict/edit.js +++ b/bootdo/src/main/resources/static/js/appjs/common/dict/edit.js @@ -11,7 +11,7 @@ function update() { $.ajax({ cache : true, type : "POST", - url : "/common/sysDict/update", + url : "/common/dict/update", data : $('#signupForm').serialize(),// 你的formid async : false, error : function(request) { diff --git a/bootdo/src/main/resources/static/js/appjs/common/log/log.js b/bootdo/src/main/resources/static/js/appjs/common/log/log.js index 7cca82d..4c3bd02 100644 --- a/bootdo/src/main/resources/static/js/appjs/common/log/log.js +++ b/bootdo/src/main/resources/static/js/appjs/common/log/log.js @@ -1,169 +1,176 @@ var prefix = "/common/log" -$(function() { - load(); +$(function () { + load(); }); $('#exampleTable').on('load-success.bs.table', function (e, data) { - if (data.total && !data.rows.length) { - $('#exampleTable').bootstrapTable('selectPage').bootstrapTable('refresh'); - } - }); + if (data.total && !data.rows.length) { + $('#exampleTable').bootstrapTable('selectPage').bootstrapTable('refresh'); + } +}); function load() { - $('#exampleTable') - .bootstrapTable( - { - method : 'get', // 服务器数据的请求方式 get or post - url : prefix + "/list", // 服务器数据的加载地址 - // showRefresh : true, - // showToggle : true, - // showColumns : true, - iconSize : 'outline', - toolbar : '#exampleToolbar', - striped : true, // 设置为true会有隔行变色效果 - dataType : "json", // 服务器返回的数据类型 - pagination : true, // 设置为true会在底部显示分页条 - // queryParamsType : "limit", - // //设置为limit则会发送符合RESTFull格式的参数 - singleSelect : false, // 设置为true将禁止多选 - // contentType : "application/x-www-form-urlencoded", - // //发送到服务器的数据编码类型 - pageSize : 10, // 如果设置了分页,每页数据条数 - pageNumber : 1, // 如果设置了分布,首页页码 - // search : true, // 是否显示搜索框 - // showColumns : true, // 是否显示内容下拉框(选择显示的列) - sidePagination : "server", // 设置在哪里进行分页,可选值为"client" 或者 - // "server" - queryParams : function(params) { - return { - limit : params.limit, - offset : params.offset, - name : $('#searchName').val(), - sort : 'gmt_create', - order : 'desc', - operation : $("#searchOperation").val(), - username : $("#searchUsername").val() - }; - }, - // //请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果 - // queryParamsType = 'limit' ,返回参数必须包含 - // limit, offset, search, sort, order 否则, 需要包含: - // pageSize, pageNumber, searchText, sortName, - // sortOrder. - // 返回false将会终止请求 - columns : [ - { - checkbox : true - }, - { - field : 'id', // 列字段名 - title : '序号' // 列标题 - }, - { - field : 'userId', - title : '用户Id' - }, - { - field : 'username', - title : '用户名' - }, - { - field : 'operation', - title : '操作' - }, - { - field : 'time', - title : '用时' - }, - { - field : 'method', - title : '方法' - }, - { - field : 'ip', - title : 'IP地址' - }, - { - field : 'gmtCreate', - title : '创建时间' - }, - { - title : '操作', - field : 'id', - align : 'center', - formatter : function(value, row, index) { - var e = ' '; - var d = ' '; - var f = ' '; - return d; - } - } ] - }); + $('#exampleTable') + .bootstrapTable( + { + method: 'get', // 服务器数据的请求方式 get or post + url: prefix + "/list", // 服务器数据的加载地址 + // showRefresh : true, + // showToggle : true, + // showColumns : true, + iconSize: 'outline', + toolbar: '#exampleToolbar', + striped: true, // 设置为true会有隔行变色效果 + dataType: "json", // 服务器返回的数据类型 + pagination: true, // 设置为true会在底部显示分页条 + // queryParamsType : "limit", + // //设置为limit则会发送符合RESTFull格式的参数 + singleSelect: false, // 设置为true将禁止多选 + // contentType : "application/x-www-form-urlencoded", + // //发送到服务器的数据编码类型 + pageSize: 10, // 如果设置了分页,每页数据条数 + pageNumber: 1, // 如果设置了分布,首页页码 + // search : true, // 是否显示搜索框 + // showColumns : true, // 是否显示内容下拉框(选择显示的列) + sidePagination: "server", // 设置在哪里进行分页,可选值为"client" 或者 + // "server" + queryParams: function (params) { + return { + limit: params.limit, + offset: params.offset, + name: $('#searchName').val(), + sort: 'gmt_create', + order: 'desc', + operation: $("#searchOperation").val(), + username: $("#searchUsername").val() + }; + }, + // //请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果 + // queryParamsType = 'limit' ,返回参数必须包含 + // limit, offset, search, sort, order 否则, 需要包含: + // pageSize, pageNumber, searchText, sortName, + // sortOrder. + // 返回false将会终止请求 + columns: [ + { + checkbox: true + }, + { + field: 'id', // 列字段名 + title: '序号' // 列标题 + }, + { + field: 'userId', + title: '用户Id' + }, + { + field: 'username', + title: '用户名' + }, + { + field: 'operation', + title: '操作' + }, + { + field: 'time', + title: '用时' + }, + { + field: 'method', + title: '方法' + }, + { + field: 'params', + title: '参数' + }, + { + field: 'ip', + title: 'IP地址' + }, + { + field: 'gmtCreate', + title: '创建时间' + }, + { + title: '操作', + field: 'id', + align: 'center', + formatter: function (value, row, index) { + var e = ' '; + var d = ' '; + var f = ' '; + return d; + } + }] + }); } + function reLoad() { - $('#exampleTable').bootstrapTable('refresh'); + $('#exampleTable').bootstrapTable('refresh'); } + function remove(id) { - layer.confirm('确定要删除选中的记录?', { - btn : [ '确定', '取消' ] - }, function() { - $.ajax({ - url : prefix + "/remove", - type : "post", - data : { - 'id' : id - }, - beforeSend : function(request) { - index = layer.load(); - }, - success : function(r) { - if (r.code == 0) { - layer.close(index); - layer.msg(r.msg); - reLoad(); - } else { - layer.msg(r.msg); - } - } - }); - }) + layer.confirm('确定要删除选中的记录?', { + btn: ['确定', '取消'] + }, function () { + $.ajax({ + url: prefix + "/remove", + type: "post", + data: { + 'id': id + }, + beforeSend: function (request) { + index = layer.load(); + }, + success: function (r) { + if (r.code == 0) { + layer.close(index); + layer.msg(r.msg); + reLoad(); + } else { + layer.msg(r.msg); + } + } + }); + }) } + function batchRemove() { - var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组 - if (rows.length == 0) { - layer.msg("请选择要删除的数据"); - return; - } - layer.confirm("确认要删除选中的'" + rows.length + "'条数据吗?", { - btn : [ '确定', '取消' ] - // 按钮 - }, function() { - var ids = new Array(); - // 遍历所有选择的行数据,取每条数据对应的ID - $.each(rows, function(i, row) { - ids[i] = row['id']; - }); - $.ajax({ - type : 'POST', - data : { - "ids" : ids - }, - url : prefix + '/batchRemove', - success : function(r) { - if (r.code == 0) { - layer.msg(r.msg); - reLoad(); - } else { - layer.msg(r.msg); - } - } - }); - }, function() { - }); + var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组 + if (rows.length == 0) { + layer.msg("请选择要删除的数据"); + return; + } + layer.confirm("确认要删除选中的'" + rows.length + "'条数据吗?", { + btn: ['确定', '取消'] + // 按钮 + }, function () { + var ids = new Array(); + // 遍历所有选择的行数据,取每条数据对应的ID + $.each(rows, function (i, row) { + ids[i] = row['id']; + }); + $.ajax({ + type: 'POST', + data: { + "ids": ids + }, + url: prefix + '/batchRemove', + success: function (r) { + if (r.code == 0) { + layer.msg(r.msg); + reLoad(); + } else { + layer.msg(r.msg); + } + } + }); + }, function () { + }); } \ No newline at end of file diff --git a/bootdo/src/main/resources/static/js/appjs/oa/notify/add.js b/bootdo/src/main/resources/static/js/appjs/oa/notify/add.js index aff42c4..1c4586c 100644 --- a/bootdo/src/main/resources/static/js/appjs/oa/notify/add.js +++ b/bootdo/src/main/resources/static/js/appjs/oa/notify/add.js @@ -51,7 +51,7 @@ function validateRule() { function loadType(){ var html = ""; $.ajax({ - url : '/common/sysDict/list/oa_notify_type', + url : '/common/dict/list/oa_notify_type', success : function(data) { //加载数据 for (var i = 0; i < data.length; i++) { diff --git a/bootdo/src/main/resources/static/js/appjs/oa/notify/edit.js b/bootdo/src/main/resources/static/js/appjs/oa/notify/edit.js index 3b110b7..14ee1ef 100644 --- a/bootdo/src/main/resources/static/js/appjs/oa/notify/edit.js +++ b/bootdo/src/main/resources/static/js/appjs/oa/notify/edit.js @@ -52,7 +52,7 @@ function validateRule() { function loadType(){ var html = ""; $.ajax({ - url : '/common/sysDict/list/oa_notify_type', + url : '/common/dict/list/oa_notify_type', success : function(data) { // 加载数据 for (var i = 0; i < data.length; i++) { diff --git a/bootdo/src/main/resources/templates/common/sysDict/add.html b/bootdo/src/main/resources/templates/common/dict/add.html similarity index 97% rename from bootdo/src/main/resources/templates/common/sysDict/add.html rename to bootdo/src/main/resources/templates/common/dict/add.html index f51ca33..e656244 100644 --- a/bootdo/src/main/resources/templates/common/sysDict/add.html +++ b/bootdo/src/main/resources/templates/common/dict/add.html @@ -1,67 +1,67 @@ - - - - - -
-
-
-
-
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
- -
- -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-
- - - + + + + + +
+
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+ + + diff --git a/bootdo/src/main/resources/templates/common/sysDict/sysDict.html b/bootdo/src/main/resources/templates/common/dict/dict.html similarity index 79% rename from bootdo/src/main/resources/templates/common/sysDict/sysDict.html rename to bootdo/src/main/resources/templates/common/dict/dict.html index 44e9276..0a0a9c3 100644 --- a/bootdo/src/main/resources/templates/common/sysDict/sysDict.html +++ b/bootdo/src/main/resources/templates/common/dict/dict.html @@ -9,11 +9,11 @@
- - @@ -21,10 +21,6 @@
-
- -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
-
- -
-
- -
-
-
-
-
-
- - - + + + + + +
+
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+ + + diff --git a/bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java b/bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java index b43cf89..a810e9a 100644 --- a/bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java +++ b/bootdo/src/test/java/com/bootdo/testDemo/TestDemo.java @@ -7,34 +7,28 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.TimeUnit; +@RestController() @RunWith(SpringRunner.class) @SpringBootTest public class TestDemo { @Autowired RedisTemplate redisTemplate; - @Test - public void jTestDemo(){ - // 从缓存中获取城市信息 - String key = "f" ; - ValueOperations operations = redisTemplate.opsForValue(); - - // 缓存存在 - boolean hasKey = redisTemplate.hasKey(key); - if (hasKey) { - Object city = operations.get(key); - System.out.println("CityServiceImpl.findCityById() : 从缓存中获取了城市 >> " + city.toString()); - } + @Test + public void jTestDemo() { - // 从 DB 中获取城市信息 - String city = "ffsff"; + } - // 插入缓存 - operations.set(key, city, 120, TimeUnit.SECONDS); - System.out.println("CityServiceImpl.findCityById() : 城市插入缓存 >> " + city.toString()); - System.out.println("ok"); + @GetMapping("/test/demo") + String restTest() { + Integer i = null; + i++; + return "hello test"; } + } -- Gitee