当前位置: 首页 > news >正文

哈尔滨网站制作维护有网站模板怎么建站

哈尔滨网站制作维护,有网站模板怎么建站,杭州建设信用网新网站,车陂手机网站开发完成登录且优化#xff1a; 未优化做简单的判断#xff1a; 全部异常抓捕 优化#xff1a;返回的是json的格式 BusinessException#xff1a;所有的错误放到这个容器中#xff0c;全局异常从这个类中调用 BusinessException#xff1a; package com.lya.lyaspshop.exce… 完成登录且优化 未优化做简单的判断 全部异常抓捕 优化返回的是json的格式 BusinessException所有的错误放到这个容器中全局异常从这个类中调用 BusinessException package com.lya.lyaspshop.exception;import com.lya.lyaspshop.resp.JsonResponseStatus; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor;EqualsAndHashCode(callSuper true)//自动生成equals和hashCode方法 AllArgsConstructor//自动生成全参构造函数 NoArgsConstructor//自动生成无参构造函数 Data//自动生成getters、setters、toString public class BusinessException extends RuntimeException {// 所有的错误放到这个容器中全局异常从这个类中调用private JsonResponseStatus jsonResponseStatus;} GlobalExceptionHandler package com.lya.lyaspshop.exception;import com.lya.lyaspshop.resp.JsonResponseBody; import com.lya.lyaspshop.resp.JsonResponseStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;RestControllerAdvice//用于声明这个类是一个全局异常处理器 Slf4j public class GlobalExceptionHandler {// 已知错误ExceptionHandler(BusinessException.class)//声明这是一个异常处理方法public JsonResponseBody? exceptionBusinessException(BusinessException e) {JsonResponseStatus status e.getJsonResponseStatus();log.info(status.getMsg());//使用日志打印异常的消息。return JsonResponseBody.other(status);}// 未知错误ExceptionHandler(Throwable.class)public JsonResponseBody? exceptionThrowable(Throwable e) {log.info(e.getMessage());//使用日志打印异常的消息。return JsonResponseBody.other(JsonResponseStatus.UN_KNOWN);} } 这里为啥要写这两个类 理解编写 GlobalExceptionHandler 类可以集中处理应用程序中的各种异常提高代码的可维护性同时简化了代码 jsr303 //这里体现了为啥要建这个类1.降低代码耦合度VO 实体类可以将数据从数据库实体类中解耦 2.用户进行权限校验等操作业务逻辑与数据访问层分离开来提高代码的可读性和可维护性 如果我直接在数据库的实体类中去 !-- jsr303 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId /dependency 实体使用注解 NotBlank 抛一个异常 报错信息 这个是时候错误已经该变 连接日志查看 遇到一个问题这里就是异常就是使用的303自己带的异常不要写其他的 前后台的加密过程 从前台发送请求来 引入加密js script srchttp://www.gongjuji.net/Content/files/jquery.md5.js typetext/javascript/script加密成功 加密后数据库的原密码肯定是不对的了。这我们使用debug给截取到密码存入数据库中。 集成redis !-- redis--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency RedisServiceImpl  package com.lya.lyaspshop.service.impl;import com.lya.lyaspshop.pojo.User; import com.lya.lyaspshop.service.IRedisService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;Service public class RedisServiceImpl implements IRedisService {Autowiredprivate RedisTemplateString, Object redisTemplate;// 往redis设置Overridepublic void setUserToRedis(String token, User user) {redisTemplate.opsForValue().set(user: token, user, 7200, TimeUnit.SECONDS);}Overridepublic User getUserByToken(String token) {return (User) redisTemplate.opsForValue().get(user: token);}} IRedisService package com.lya.lyaspshop.service;import com.lya.lyaspshop.pojo.User;public interface IRedisService {/*** 将登陆User对象保存到Redis中并以Token为键*/void setUserToRedis(String token, User user);/*** 根据token令牌获取redis中存储的user对象*/User getUserByToken(String token);} redisService.setUserToRedis(token, one); 加入cookie 使用CookieUtils类 package com.lya.lyaspshop.utils;import lombok.extern.slf4j.Slf4j;import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder;Slf4j public class CookieUtils {/*** Description: 得到Cookie的值, 不编码*/public static String getCookieValue(HttpServletRequest request, String cookieName) {return getCookieValue(request, cookieName, false);}/*** Description: 得到Cookie的值*/public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {Cookie[] cookieList request.getCookies();if (cookieList null || cookieName null) {return null;}String retValue null;try {for (int i 0; i cookieList.length; i) {if (cookieList[i].getName().equals(cookieName)) {if (isDecoder) {retValue URLDecoder.decode(cookieList[i].getValue(), UTF-8);} else {retValue cookieList[i].getValue();}break;}}} catch (UnsupportedEncodingException e) {e.printStackTrace();}return retValue;}/*** Description: 得到Cookie的值*/public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) {Cookie[] cookieList request.getCookies();if (cookieList null || cookieName null) {return null;}String retValue null;try {for (int i 0; i cookieList.length; i) {if (cookieList[i].getName().equals(cookieName)) {retValue URLDecoder.decode(cookieList[i].getValue(), encodeString);break;}}} catch (UnsupportedEncodingException e) {e.printStackTrace();}return retValue;}/*** Description: 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码*/public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,String cookieValue) {setCookie(request, response, cookieName, cookieValue, -1);}/*** param request* param response* param cookieName* param cookieValue* param cookieMaxage* Description: 设置Cookie的值 在指定时间内生效,但不编码*/public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,String cookieValue, int cookieMaxage) {setCookie(request, response, cookieName, cookieValue, cookieMaxage, false);}/*** Description: 设置Cookie的值 不设置生效时间,但编码* 在服务器被创建返回给客户端并且保存客户端* 如果设置了SETMAXAGE(int seconds)会把cookie保存在客户端的硬盘中* 如果没有设置会默认把cookie保存在浏览器的内存中* 一旦设置setPath()只能通过设置的路径才能获取到当前的cookie信息*/public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,String cookieValue, boolean isEncode) {setCookie(request, response, cookieName, cookieValue, -1, isEncode);}/*** Description: 设置Cookie的值 在指定时间内生效, 编码参数*/public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,String cookieValue, int cookieMaxage, boolean isEncode) {doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);}/*** Description: 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)*/public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,String cookieValue, int cookieMaxage, String encodeString) {doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);}/*** Description: 删除Cookie带cookie域名*/public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,String cookieName) {doSetCookie(request, response, cookieName, null, -1, false);}/*** Description: 设置Cookie的值并使其在指定时间内生效*/private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {try {if (cookieValue null) {cookieValue ;} else if (isEncode) {cookieValue URLEncoder.encode(cookieValue, utf-8);}Cookie cookie new Cookie(cookieName, cookieValue);if (cookieMaxage 0)cookie.setMaxAge(cookieMaxage);if (null ! request) {// 设置域名的cookieString domainName getDomainName(request);log.info( domainName: {} , domainName);if (!localhost.equals(domainName)) {cookie.setDomain(domainName);}}cookie.setPath(/);response.addCookie(cookie);} catch (Exception e) {e.printStackTrace();}}/*** Description: 设置Cookie的值并使其在指定时间内生效*/private static void doSetCookie(HttpServletRequest request, HttpServletResponse response,String cookieName, String cookieValue, int cookieMaxage, String encodeString) {try {if (cookieValue null) {cookieValue ;} else {cookieValue URLEncoder.encode(cookieValue, encodeString);}Cookie cookie new Cookie(cookieName, cookieValue);if (cookieMaxage 0)cookie.setMaxAge(cookieMaxage);if (null ! request) {// 设置域名的cookieString domainName getDomainName(request);log.info( domainName: {} , domainName);if (!localhost.equals(domainName)) {cookie.setDomain(domainName);}}cookie.setPath(/);response.addCookie(cookie);} catch (Exception e) {e.printStackTrace();}}/*** Description: 得到cookie的域名*/private static String getDomainName(HttpServletRequest request) {String domainName null;String serverName request.getRequestURL().toString();if (serverName null || serverName.equals()) {domainName ;} else {serverName serverName.toLowerCase();serverName serverName.substring(7);final int end serverName.indexOf(/);serverName serverName.substring(0, end);if (serverName.indexOf(:) 0) {String[] ary serverName.split(\\:);serverName ary[0];}final String[] domains serverName.split(\\.);int len domains.length;if (len 3 !isIp(serverName)) {// www.xxx.com.cndomainName . domains[len - 3] . domains[len - 2] . domains[len - 1];} else if (len 3 len 1) {// xxx.com or xxx.cndomainName . domains[len - 2] . domains[len - 1];} else {domainName serverName;}}return domainName;}public static String trimSpaces(String IP) {//去掉IP字符串前后所有的空格while (IP.startsWith( )) {IP IP.substring(1, IP.length()).trim();}while (IP.endsWith( )) {IP IP.substring(0, IP.length() - 1).trim();}return IP;}public static boolean isIp(String IP) {//判断是否是一个IPboolean b false;IP trimSpaces(IP);if (IP.matches(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})) {String s[] IP.split(\\.);if (Integer.parseInt(s[0]) 255)if (Integer.parseInt(s[1]) 255)if (Integer.parseInt(s[2]) 255)if (Integer.parseInt(s[3]) 255)b true;}return b;}}自定义注解 根据isNoblank去写 这三行代码必须写的 boolean require() default false;String expr() default ;String message() default ; IsMobile package com.lya.lyaspshop.core;import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target;import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.RetentionPolicy.RUNTIME;Documented Constraint(validatedBy {IsMobileConstraintValidator.class}) Target({FIELD}) Retention(RUNTIME) public interface IsMobile {boolean require() default false;String expr() default ;String message() default ;Class?[] groups() default {};Class? extends Payload[] payload() default {};}IsMobileConstraintValidator  package com.lya.lyaspshop.core;import com.baomidou.mybatisplus.core.toolkit.StringUtils;import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext;/*** author CloudJun*/ public class IsMobileConstraintValidator implements ConstraintValidatorIsMobile, String {private boolean require;private String expr;Overridepublic void initialize(IsMobile isMobile) {expr isMobile.expr();require isMobile.require();}Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {if (!require) return true;if (StringUtils.isEmpty(value)) return false;return value.matches(expr);}}优化定义一个常量类使用的定值往这里调用就行) package com.lya.lyaspshop.core;public abstract class Constants {// 常类public static final String EXPR_MOBILE (13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8};public static final String EXPR_PASSWORD [a-zA-Z0-9]{32};public static final String USER_TOKEN_PREFIX user:;}
http://www.hkea.cn/news/14418352/

相关文章:

  • 荆州做网站公司dw软件是做什么用的
  • 哈尔滨建站免费模板建设信用卡中心网站
  • 深圳宝安商城网站建设公司wordpress手机菜单导航
  • 大寺网站建设公司多开商城
  • 做计算机题的网站网站开发合同.doc
  • 建材网站建设方案免费wap建站
  • 厦门电信网站备案网站内部链接的策略
  • 网站建设方案项目书企业公司建站平台
  • 什么网站做h5做得好淮北市官网
  • 刚做的网站怎么静安建设网站
  • 河北邯郸做wap网站攻击网站的方法
  • 网站建设进度表怎么做手机微网站建设案例及报告
  • 什么腾讯网站做任务能刷q币山西教育学会网站建设
  • wordpress如何应用插件安徽网站优化建设
  • 南京网站设计公司哪家好快站优惠券去哪里找
  • 湘潭网站建设多少钱手机连接电脑弹窗wordpress
  • 兰州网站备案商标如何自己注册
  • 黃冈建设厅官方网站姓氏logo免费设计在线生成
  • 端口映射 wordpress怎么优化网站的单个关键词排名
  • 山西建设网站公司 菠萝菠萝蜜在线高清
  • 建设网站的好处有哪些自己动手做衣服网站
  • 获取网站访客qq网站模版化配置
  • 小网站做几个关键词网站建设外包兼职平台
  • 企业站手机app界面设计模板图片
  • 娄底哪里做网站四川省采购一体化平台
  • 东莞工厂网站建设网络营销主要传播渠道
  • 怎么把别人网站的tag写上自己的自己做的网站怎么放上网
  • 如何注册自己的网站品牌设计公司
  • 网站策划案内容高级seo优化招聘
  • 重庆在线开放平台seo推广代理