记毕业设计学习之路

原文: 记毕业设计学习之路

maven 环境隔离

实际项目开发当中我们会用到不止一下三种环境,开发环境、测试环境、生产环境。使用maven将各个环境进行隔离,方便开发、同时也方便上线。让因为配置文件不一致、环境没有更换这些问题导致项目异常不存在。
+ dev(开发环境)
+ beta(测试环境)
+ prod(生产环境)

Redis学习

redis安装(window/linux)

关于redis的安装,可以参考前一篇文章如何安装redis和简单使用

redis数据结构/基本命令

键命令

PropertiesUtil工具类

对PropertiesUtil进行了优化性的封装,提供获取Integer Boolean String等不同类型配置文件value的方法

redisPool连接池

redisPool连接池封装

  • redisPool连接池的完善
  • 获取jedis对象getRedis()
  • 返回资源returnResource()
  • returnBrokenResource()使用

学习jedis源码

lombok工具

IDE工具安装lombok工具

引入其依赖,使用注解

使用lombok注解

  • @Sl4j
  • @Setter
  • @Getter
  • @Data
  • 区分@Data@Setter``@Getter使用有什么区别,各自含义

RedisPoolUtil工具类

RedisPoolUtil工具类封装

提供对Redis的set get del setEx expire等操作的方法

JsonUtil工具类

JsonUtil工具类封装

封装JsonUtil工具类,提供json和object之间相互转换方法,同时提供json转List Map

JsonUtil中objectMapper当中各种属性的配置

  • objectMapper.setSerializationInclusion(Inclusion.ALWAYS); 对象的所有字段全部列入序列化
  • objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); 取消默认转换timestamps
  • objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false); 忽略空bean转json错误
  • objectMapper.setDateFormat(new SimpleDateFormat(DateTimeUtil.STANDARD_FORMAT)); 所有的日期格式都统一为以下格式:yyyy-MM-dd HH:mm:ss
  • objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); 反序列化时,忽略在json字符串当中存在,但是在java对象当中不存在的对应属性的情况,防止错误

Tomcat集群

IDEA当中启动两个Tomcat,来模拟Tomcat集群。

  • 解决方法:在Tomcat8的conf/content.xml当中添加如下配置

    An invalid domain was specified for this cookie

    How to change Cookie Processor to LegacyCookieProcessor in tomcat 8

CookieUtil工具类封装

### 熟悉在客户端种cookie的domain跨域问题

### 封装CookieUtil
封装常用对cookie操作的read write del方法
+ String readLoginToken(HttpServletRequest request) 读cookie操作
+ void writeLoginToken(HttpServletResponse response, String token) 写cookie操作
+ void delLoginToken(HttpServletRequest request, HttpServletResponse response) 删除cookie操作

单点登录Session共享

单点登录

  • 登录操作

    将用户登录成功之后的sessionId存入cookie取名为loginToken,同时将其存入redis当中,key=sessionId value=User实体的Json字符串,同时设置redis当中数据过期时间(用户登录过期时间)

  • 查看用户信息

    从cookie当中获取loginToken,如果loginToken为null则说明用户未登录,直接返回,然后从redis当中获取key=loginToken的value,并将其Json反序列化成User对象,然后返回

  • 登出操作

    从cookie当中获取到loginToken,然后从redis当中key=loginToken的value

  • 存在问题

    loginToken存储在cookie当中存在有效时间,现在不能满足,用户进行除登出操作之外的其他请求时自动刷新loginToken的过期时间,用户登录一定时间到期后(期间无论是否进行其他操作)
    都会让用户再次登录。而我们需要的是,在有效期之内只要用户发送了除登出操作之外的请求,都会自动更新这个过期时间

解决上述单点登录存在问题

  • 使用原生过滤器

    SessionExpireFilter就是为了解决用发送请求时重置种下的loginToken 过期时间,这样就可以避免用户登录后30分钟有需要再次重新登录。
    现在只存在登录成功后30分钟之内不发送任何请求,redis当中的loginToken则会过期

联系

聪聪的独立博客 ,一个喜欢技术,喜欢钻研的95后。如果你看到这篇文章,千里之外,我在等你联系。

  • Blog@ccoder’s blog
  • CSDN@ccoder
  • Github@ccoder
  • Email@ccoder or Gmail@ccoder

你可能感兴趣的:(JavaEE,Java)