From 56bc3c6cbfed6eb6fef99ea2425c3c8c1a99fcda Mon Sep 17 00:00:00 2001 From: linjj <850658129@qq.com> Date: Thu, 7 Dec 2023 15:05:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=AA=8C=E8=AF=81=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- power-admin/pom.xml | 7 + .../com/manage/controller/FontController.java | 6 + .../controller/GlobalExceptionHandler.java | 28 ++ .../manage/controller/LoginController.java | 269 +++++++++++------- .../resources/config/applicationContext.xml | 80 ++++-- .../main/resources/config/config.properties | 8 +- .../src/main/resources/config/jdbc.properties | 4 +- .../webapp/WEB-INF/views/errorDir/error.jsp | 12 + .../webapp/WEB-INF/views/loginDir/login.jsp | 128 +++++---- .../src/main/webapp/static/js/login.js | 221 ++++---------- .../java/com/manage/dao/Power_LogMapper.java | 6 +- .../java/com/manage/entity/Power_Log.java | 18 ++ .../main/resources/mapper/Power_LogMapper.xml | 4 + .../src/main/java/com/manage/util/Msg.java | 16 ++ .../java/com/manage/service/LogService.java | 2 + .../manage/service/ipml/LogServiceImpl.java | 6 + 16 files changed, 451 insertions(+), 364 deletions(-) create mode 100644 power-admin/src/main/webapp/WEB-INF/views/errorDir/error.jsp diff --git a/power-admin/pom.xml b/power-admin/pom.xml index 3335323..4565444 100644 --- a/power-admin/pom.xml +++ b/power-admin/pom.xml @@ -53,6 +53,13 @@ 1.0-SNAPSHOT compile + + + + com.github.penggle + kaptcha + 2.3.2 + javax.servlet diff --git a/power-admin/src/main/java/com/manage/controller/FontController.java b/power-admin/src/main/java/com/manage/controller/FontController.java index eea3607..397aedf 100644 --- a/power-admin/src/main/java/com/manage/controller/FontController.java +++ b/power-admin/src/main/java/com/manage/controller/FontController.java @@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -912,4 +913,9 @@ public class FontController { } return Msg.correctMessage(); } + @RequestMapping(value = "text") + public String textPage(){ + throw new RuntimeException("出现了一个异常"); + } + } diff --git a/power-admin/src/main/java/com/manage/controller/GlobalExceptionHandler.java b/power-admin/src/main/java/com/manage/controller/GlobalExceptionHandler.java index 08852f3..a2ce88e 100644 --- a/power-admin/src/main/java/com/manage/controller/GlobalExceptionHandler.java +++ b/power-admin/src/main/java/com/manage/controller/GlobalExceptionHandler.java @@ -15,15 +15,23 @@ package com.manage.controller; import com.alibaba.fastjson.support.spring.FastJsonJsonView; import com.manage.util.ExceptionPrintUtil; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.NoHandlerFoundException; import java.util.HashMap; import java.util.Map; @ControllerAdvice public class GlobalExceptionHandler { + @ExceptionHandler(NoHandlerFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ModelAndView runtimeHandler404(Exception e) { + return return404(e, "服务器出错了,请联系系统管理员"); + } @ExceptionHandler(value = Exception.class)//指定拦截的异常 public ModelAndView errorHandler(Exception e) { @@ -35,6 +43,9 @@ public class GlobalExceptionHandler { return returnMv(e, "服务器出错了,请联系系统管理员"); } + + + private ModelAndView returnMv(Exception e, String msg) { ModelAndView mv = new ModelAndView(); /* 使用FastJson提供的FastJsonJsonView视图返回,不需要捕获异常 */ @@ -48,4 +59,21 @@ public class GlobalExceptionHandler { e.printStackTrace(); return mv; } + + + + + private ModelAndView return404(Exception e, String msg) { + ModelAndView mv = new ModelAndView(); + /* 使用FastJson提供的FastJsonJsonView视图返回,不需要捕获异常 */ + FastJsonJsonView view = new FastJsonJsonView(); + Map attributes = new HashMap<>(1); + attributes.put("code", "404"); + attributes.put("msg", msg); + view.setAttributesMap(attributes); + mv.setView(view); + ExceptionPrintUtil.printException(e); + e.printStackTrace(); + return mv; + } } diff --git a/power-admin/src/main/java/com/manage/controller/LoginController.java b/power-admin/src/main/java/com/manage/controller/LoginController.java index 7f62ff5..7dffdd6 100644 --- a/power-admin/src/main/java/com/manage/controller/LoginController.java +++ b/power-admin/src/main/java/com/manage/controller/LoginController.java @@ -2,6 +2,8 @@ package com.manage.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.code.kaptcha.Constants; +import com.google.code.kaptcha.Producer; import com.manage.bean.LoginVoRedis; import com.manage.dao.Power_Login_SetMapper; import com.manage.encrypt.Base64; @@ -21,13 +23,20 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; import redis.clients.jedis.Jedis; import sun.security.provider.MD5; +import javax.imageio.ImageIO; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.awt.image.BufferedImage; +import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -35,6 +44,9 @@ import java.util.*; @Controller public class LoginController { + @Autowired + private Producer captchaProducer; + @Value("${TOKEN_EXPIRE_TIME}") private long TOKEN_EXPIRE_TIME; @Value("${sysFlag}") @@ -62,9 +74,7 @@ public class LoginController { @Value("${EMRMEDICALRECORD_PORT}") private String port; -// -// @Autowired -// private JedisPool jedisPool; + @Value("${POWER_PORT}") private String POWER_PORT; @@ -79,128 +89,126 @@ public class LoginController { @RequestMapping(value = "login", method = RequestMethod.POST) @ResponseBody - public Msg login(Power_User powerUser, HttpServletResponse response, HttpServletRequest request, Model model) { + public Msg login(Power_User powerUser, HttpServletResponse response, HttpServletRequest request, Model model,String code) { + //判断是否在可登录时间内 + Power_Log unlockDate = logService.getUnlockDate(powerUser.getUserName()); + //不等于空说明账号次数过多被锁定 + if (unlockDate != null) { + return Msg.failUnlockUser(unlockDate.getUnlockDate()); + } + //正确的验证码 + String original =(String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); String userName = powerUser.getUserName(); String userPwd = powerUser.getUserPwd(); + if (!code.equalsIgnoreCase(original)) { + return Msg.codeUser(); + } if (!userName.equals("admin")) { String s = "00" + userName; powerUser.setUserName(s); } - Jedis redis = JedisPoolUtil.getJedisPoolInstance().getResource(); - String userInfo = redis.get(userName); - String errorPwsCount = "0"; - if (userInfo == null) { - redis.set(userName, errorPwsCount); - } - int i = Integer.parseInt(redis.get(userName)); - if (i < 5) { - try { - Power_UserVo user = powerUserService.findPowerUserByUserNameAndUserPwd(powerUser); - //添加进操作日志 - Power_Log log = new Power_Log(); - if (user != null) { - //存session密码置空 - //是否记住密码功能 - MyCookieUtil.remember(request, response); - //设置token缓存 - String token = UUID.randomUUID().toString(); - CacheManager.addExcCount("noExc"); - List list = null; - List menuList = new ArrayList<>(); - Set menus = new LinkedHashSet<>(); - if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) { - list = powerMenuService.queryAllPowerMenu(null, user.getRoleId()); - } else { - list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(), null); - } - if (null != list && !list.isEmpty()) { - for (Power_Menu powerMenu : list) { - User_Dept_Menu deptMenu = new User_Dept_Menu(); - String menuUrl = powerMenu.getMenuUrl(); - if (StringUtils.isNotBlank(menuUrl)) { - BeanUtils.copyProperties(powerMenu, deptMenu); - deptMenu.setMethodParent(powerMenu.getParentId()); - menuList.add(deptMenu); - } - if (StringUtils.isNotBlank(powerMenu.getMethod())) { - menus.add(powerMenu.getMenuUrl()); - } + try { + Power_UserVo user = powerUserService.findPowerUserByUserNameAndUserPwd(powerUser); + //添加进操作日志 + Power_Log log = new Power_Log(); + if (user != null) { + //存session密码置空 + //是否记住密码功能 + MyCookieUtil.remember(request, response); + //设置token缓存 + String token = UUID.randomUUID().toString(); + CacheManager.addExcCount("noExc"); + List list = null; + List menuList = new ArrayList<>(); + Set menus = new LinkedHashSet<>(); + if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) { + list = powerMenuService.queryAllPowerMenu(null, user.getRoleId()); + } else { + list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(), null); + } + if (null != list && !list.isEmpty()) { + for (Power_Menu powerMenu : list) { + User_Dept_Menu deptMenu = new User_Dept_Menu(); + String menuUrl = powerMenu.getMenuUrl(); + if (StringUtils.isNotBlank(menuUrl)) { + BeanUtils.copyProperties(powerMenu, deptMenu); + deptMenu.setMethodParent(powerMenu.getParentId()); + menuList.add(deptMenu); } - } - user.setMenuList(menuList); - user.setMenus(menus); - //设置科室 - StringBuilder powerDepts = new StringBuilder(); - List powerDeptsList = power_deptService.selectByPrimaryKeys(user.getDeptId()); - for (int j = 0; j < powerDeptsList.size(); j++) { - if (j < powerDeptsList.size() - 1) { - powerDepts.append(powerDeptsList.get(j).getDeptName()).append(","); - } else { - powerDepts.append(powerDeptsList.get(j).getDeptName()); + if (StringUtils.isNotBlank(powerMenu.getMethod())) { + menus.add(powerMenu.getMenuUrl()); } } - Integer roleId = user.getRoleId(); - if (null != roleId && roleId != 0 && roleId != -100) { - user.setRemark(powerDepts.toString()); - } - //清除用户登录错误次数缓存 - CacheManager.clearOnly(powerUser.getUserName()); - //设置进缓存 - CacheManager.putCache(token, new Cache(user, System.currentTimeMillis(), TOKEN_EXPIRE_TIME * 1000)); - ActionScopeUtils.setSessionAttribute("token", token, Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))); - ActionScopeUtils.setSessionAttribute("CURRENT_USER", user, Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))); - //检测弱密码强制跳转修改密码 - //大小写,中文,数据,特殊符号必须存在三种 - String reg = "^(?![A-Za-z]+$)(?![A-Z\\d]+$)(?![A-Z\\W]+$)(?![a-z\\d]+$)(?![a-z\\W]+$)(?![\\d\\W]+$)\\S{8,20}$"; - //判断是否为弱密码 - boolean msg=userPwd.matches(reg); - redis.del(userName); - JedisPoolUtil.close(redis); - if (msg==false){ - String url = "http://" + SERVER_IP + ":" + SERVER_PORT +"/power"+ "/font/updatePassword"; - return Msg.success().add("url", url); - } - //单点登录跳转 - String url = ""; - if (sysFlag == 2) { - url = EMRMEDICALRECORD_URLHEAD + "/login?token=" + token + "&userName=" + user.getUserName() + "&flag=1"; + } + user.setMenuList(menuList); + user.setMenus(menus); + //设置科室 + StringBuilder powerDepts = new StringBuilder(); + List powerDeptsList = power_deptService.selectByPrimaryKeys(user.getDeptId()); + for (int j = 0; j < powerDeptsList.size(); j++) { + if (j < powerDeptsList.size() - 1) { + powerDepts.append(powerDeptsList.get(j).getDeptName()).append(","); } else { - //获取本地端口 - int POWER_PORT = request.getLocalPort(); - url = "http://" + ip + ":" + POWER_PORT + "/power/gatewayPage"; + powerDepts.append(powerDeptsList.get(j).getDeptName()); } + } + Integer roleId = user.getRoleId(); + if (null != roleId && roleId != 0 && roleId != -100) { + user.setRemark(powerDepts.toString()); + } + //清除用户登录错误次数缓存 + CacheManager.clearOnly(powerUser.getUserName()); + //设置进缓存 + CacheManager.putCache(token, new Cache(user, System.currentTimeMillis(), TOKEN_EXPIRE_TIME * 1000)); + ActionScopeUtils.setSessionAttribute("token", token, Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))); + ActionScopeUtils.setSessionAttribute("CURRENT_USER", user, Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))); + //检测弱密码强制跳转修改密码 + //大小写,中文,数据,特殊符号必须存在三种 + String reg = "^(?![A-Za-z]+$)(?![A-Z\\d]+$)(?![A-Z\\W]+$)(?![a-z\\d]+$)(?![a-z\\W]+$)(?![\\d\\W]+$)\\S{8,20}$"; + //判断是否为弱密码 + boolean msg = userPwd.matches(reg); + if (msg == false) { + String url = "http://" + SERVER_IP + ":" + SERVER_PORT + "/power" + "/font/updatePassword"; return Msg.success().add("url", url); + } + //单点登录跳转 + String url = ""; + if (sysFlag == 2) { + url = EMRMEDICALRECORD_URLHEAD + "/login?token=" + token + "&userName=" + user.getUserName() + "&flag=1"; } else { - //登录失败 - Integer wrongNum = 1; - Cache cache = CacheManager.getCacheInfo(powerUser.getUserName()); - if (cache != null) { - //缓存中错误次数 - Integer currentNum = (Integer) cache.getValue(); - //叠加1 - wrongNum += currentNum; - } - //添加缓存 - CacheManager.putCache(powerUser.getUserName(), new Cache(wrongNum)); - log.setCreater(powerUser.getUserName()); - log.setLogTitle("登录"); - log.setLogContent("用户密码错误"); - log.setRemark("已错误【" + wrongNum + "】次"); - logService.insert(log); - request.setAttribute("msg", "用户名或密码不正确"); - redis.incr(userName); - JedisPoolUtil.close(redis); - return Msg.failUser(); + //获取本地端口 + int POWER_PORT = request.getLocalPort(); + url = "http://" + ip + ":" + POWER_PORT + "/power/gatewayPage"; + } + return Msg.success().add("url", url); + } else { + //登录失败 + Integer wrongNum = 1; + Cache cache = CacheManager.getCacheInfo(powerUser.getUserName()); + if (cache != null) { + //缓存中错误次数 + Integer currentNum = (Integer) cache.getValue(); + //叠加1 + wrongNum += currentNum; } - } catch (Exception e) { - e.printStackTrace(); - CacheManager.addExcCount("exc"); + //添加缓存 + CacheManager.putCache(powerUser.getUserName(), new Cache(wrongNum)); + log.setCreater(powerUser.getUserName()); + log.setLogTitle("登录"); + log.setLogContent("用户密码错误"); + log.setRemark("已错误【" + wrongNum + "】次"); + //如果错误次数=5添加锁定时间 + if (wrongNum == 5) { + SimpleDateFormat UnlockFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + log.setUnlockDate(UnlockFmt.format(new Date().getTime() + 15 * 60 * 1000)); + } + logService.insert(log); + request.setAttribute("msg", "用户名或密码不正确"); + return Msg.failUser(); } - } else { - //失败次数大于五时锁十五分钟 - redis.setex(userName, 900, i + ""); - JedisPoolUtil.close(redis); - return Msg.failUser2(); + } catch (Exception e) { + e.printStackTrace(); + CacheManager.addExcCount("exc"); } return null; } @@ -225,4 +233,45 @@ public class LoginController { return null; } } + + + /** + * 生成带验证码的图片 + * + * @param model + * @param request + * @param response + * @param timestamp + * @return + * @throws IOException + */ + @RequestMapping(value = "/getCaptchaImage", method = RequestMethod.GET) + public ModelAndView getCaptchaImage(Model model, HttpServletRequest request, HttpServletResponse response, + @RequestParam(value = "timestamp", required = false) String timestamp) throws IOException { + if (StringUtils.isEmpty(timestamp)) { + //System.out.println("没有时间戳\ttimestamp:" + timestamp); + model.addAttribute("timestamp", System.currentTimeMillis()); + } else { + //System.out.println("有时间戳\ttimestamp:" + timestamp); + model.addAttribute("timestamp", timestamp); + } + response.setDateHeader("Expires", 0); + response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); + response.addHeader("Cache-Control", "post-check=0, pre-check=0"); + response.setHeader("Pragma", "no-cache"); + response.setContentType("image/jpeg"); + String capText = captchaProducer.createText(); + request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText); + BufferedImage bi = captchaProducer.createImage(capText); + ServletOutputStream out = response.getOutputStream(); + ImageIO.write(bi, "jpg", out); + try { + out.flush(); + } finally { + out.close(); + } + return null; + } + + } diff --git a/power-admin/src/main/resources/config/applicationContext.xml b/power-admin/src/main/resources/config/applicationContext.xml index a18d8e9..2ce425d 100644 --- a/power-admin/src/main/resources/config/applicationContext.xml +++ b/power-admin/src/main/resources/config/applicationContext.xml @@ -29,34 +29,33 @@ - + - + - + - + - + - + - - - - - - + + + + + + - + - + - + - @@ -70,10 +69,10 @@ - + @@ -115,6 +114,45 @@ + + + + + + + + + 150 + + 50 + + 123456789abcDeFGHjkLmnoQqrsTUVWXYZ + + 4 + + no + + 105,179,90 + + 1 + + black + + 30 + + 楷体 + + black + + 3 + + com.google.code.kaptcha.impl.ShadowGimpy + + + + + + @@ -124,6 +162,6 @@ - + \ No newline at end of file diff --git a/power-admin/src/main/resources/config/config.properties b/power-admin/src/main/resources/config/config.properties index 455e4e4..cb6592f 100644 --- a/power-admin/src/main/resources/config/config.properties +++ b/power-admin/src/main/resources/config/config.properties @@ -1,7 +1,7 @@ # \u62E6\u622A\u83DC\u5355\u914D\u7F6E\u6587\u4EF6 ljx 2019-4-27 #interceptRequest \u672A\u767B\u5F55\u4E4B\u524D\u653E\u884C\u3002\u9ED8\u8BA4\u4E3Anone #ajaxRequest ajax\u8BF7\u6C42\u6CA1\u6709\u5BF9\u5E94\u6A21\u5757\uFF0C\u9700\u8981\u653E\u884C\u3002 \u9ED8\u8BA4\u4E3Anone -releaseRequest = /login,/logout,/services,/font,/refuse,/swagger-ui.html,/webjars,/swagger-resources,/v2,/ssoLogin,/getQRcode,/qRCodeLogin +releaseRequest = /login,/logout,/services,/font,/refuse,/swagger-ui.html,/webjars,/swagger-resources,/v2,/ssoLogin,/getQRcode,/qRCodeLogin,/check,/checkcode,/captcha,/getCaptchaImage ajaxRequest = none #session\u8FC7\u671F\u65F6\u95F4,\u5355\u4F4D\u79D2 @@ -12,7 +12,7 @@ TOKEN_EXPIRE_TIME = 7200 #SERVER_IP = localhost #SERVER_PORT = 8081 -SERVER_IP = 10.100.23.1 +SERVER_IP = localhost SERVER_PORT = 8081 #power\u6743\u9650\u7CFB\u7EDFip @@ -23,11 +23,11 @@ POWER_PORT = ${SERVER_PORT} #\u75C5\u6848\u5F52\u6863\u7CFB\u7EDFip EMRMEDICALRECORD_IP = ${SERVER_IP} #\u75C5\u6848\u5F52\u6863\u7CFB\u7EDF\u7AEF\u53E3 -EMRMEDICALRECORD_PORT = ${SERVER_PORT} +EMRMEDICALRECORD_PORT = 8084 #\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDFip EMRRECORD_IP = ${SERVER_IP} #\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDF\u7AEF\u53E3 -EMRRECORD_PORT = ${SERVER_PORT} +EMRRECORD_PORT = 8083 #\u75C5\u6848\u590D\u5370\u9884\u7EA6ip EMRAPPLYCOPY_IP = ${SERVER_IP} diff --git a/power-admin/src/main/resources/config/jdbc.properties b/power-admin/src/main/resources/config/jdbc.properties index 6602083..dfb6ccd 100644 --- a/power-admin/src/main/resources/config/jdbc.properties +++ b/power-admin/src/main/resources/config/jdbc.properties @@ -1,8 +1,8 @@ #jdbc.url=jdbc\:mysql\://200.100.104.40\:3306/power?useUnicode\=true&characterEncoding\=utf-8 #jdbc.password=AbcXyz123 -jdbc.url=jdbc\:mysql\://localhost\:3306/gmpower?useUnicode\=true&characterEncoding\=utf-8 -jdbc.password=docus702 +jdbc.url=jdbc\:mysql\://localhost\:3306/fs_power?useUnicode\=true&characterEncoding\=utf-8&serverTimezone\=GMT +jdbc.password=root jdbc.driver=com.mysql.jdbc.Driver jdbc.username=root diff --git a/power-admin/src/main/webapp/WEB-INF/views/errorDir/error.jsp b/power-admin/src/main/webapp/WEB-INF/views/errorDir/error.jsp new file mode 100644 index 0000000..7fa758b --- /dev/null +++ b/power-admin/src/main/webapp/WEB-INF/views/errorDir/error.jsp @@ -0,0 +1,12 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + 操作失败 + + + +
+

服务器异常,请联系管理员处理

+
+ + \ No newline at end of file diff --git a/power-admin/src/main/webapp/WEB-INF/views/loginDir/login.jsp b/power-admin/src/main/webapp/WEB-INF/views/loginDir/login.jsp index fe8a897..7e828c6 100644 --- a/power-admin/src/main/webapp/WEB-INF/views/loginDir/login.jsp +++ b/power-admin/src/main/webapp/WEB-INF/views/loginDir/login.jsp @@ -4,18 +4,18 @@ <%@ include file="/WEB-INF/jspf/common.jspf" %> <% String path = request.getContextPath(); - String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; - String password=""; - String userName=""; - String checked=""; + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; + String password = ""; + String userName = ""; + String checked = ""; Cookie[] cookies = request.getCookies(); //取出cookie对象组 - for(int i = 0; cookies != null && i < cookies.length;i++){ + for (int i = 0; cookies != null && i < cookies.length; i++) { Cookie cookie = cookies[i]; // 取出其中的一个对象,含有name ,value - if(cookie != null && "name".equals(cookie.getName())){ //获取第一个cookie对象的name + if (cookie != null && "name".equals(cookie.getName())) { //获取第一个cookie对象的name userName = URLDecoder.decode(cookie.getValue(), "UTF-8");//进行解码 checked = "checked"; } - if(cookie != null && "password".equals(cookie.getName())){ + if (cookie != null && "password".equals(cookie.getName())) { password = cookie.getValue(); password = Base64.decodeBase64(password); } @@ -29,18 +29,20 @@ 嘉时软件