Java EE

Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之17.Session

不想你离开。 提交于 2020-08-06 05:15:01
–Session 简介 –Session API –Session 实例 • 登录Session #################Michael分割线#################### • Session 简介 –由于HTTP协议的无状态性,无法持久保持对象的状态,那么怎么才能实现持久保存对象的状态呢? Java的解决方案有两种: • Cookie –见上一节 • Session –Session 是用来跟踪用户当前状态的一种机制,是针对浏览器和服务器的一对一关系。 –Session 的一般用法是,在用户登录时将用户的登录信息保存到session中,以便以后使用。 • Session API –Session 接口HttpSession • 通常我们只使用HttpSession接口,接口的实现由web容器来完成 –获得HttpSession • 可以从HttpServletRequest中获得HttpSession –request.getSession(); –将信息保存在HttpSession中 • session.setAttribute(“UserSession”,obj); –从HttpSession中获得信息 • session.getAttribute(“UserSession”); –使HttpSession失效 • session.invalidate()

Spring Cloud Zuul过滤器介绍及使用

旧街凉风 提交于 2020-08-06 04:47:52
过滤器类型 Zuul 中的过滤器跟我们之前使用的 javax.servlet.Filter 不一样,javax.servlet.Filter 只有一种类型,可以通过配置 urlPatterns 来拦截对应的请求。 而 Zuul 中的过滤器总共有 4 种类型,且每种类型都有对应的使用场景。 1)pre 可以在请求被路由之前调用。适用于身份认证的场景,认证通过后再继续执行下面的流程。 2)route 在路由请求时被调用。适用于灰度发布场景,在将要路由的时候可以做一些自定义的逻辑。 3)post 在 route 和 error 过滤器之后被调用。这种过滤器将请求路由到达具体的服务之后执行。适用于需要添加响应头,记录响应日志等应用场景。 4)error 处理请求时发生错误时被调用。在执行过程中发送错误时会进入 error 过滤器,可以用来统一记录错误信息。 请求生命周期 可以通过图 1 看出整个过滤器的执行生命周期, 图 1 过滤器生命周期 通过上面的图可以清楚地知道整个执行的顺序,请求发过来首先到 pre 过滤器,再到 routing 过滤器,最后到 post 过滤器,任何一个过滤器有异常都会进入 error 过滤器。 通过 com.netflix.zuul.http.Zuul Servlet 也可以看出完整执行顺序,ZuulServlet 类似 Spring -Mvc 的

SpringMVC,MyBatis商品的增删改查

浪尽此生 提交于 2020-08-06 04:08:58
一、需求 商品的增删改查 二、工程结构 三、代码 1.Mapper层 (1) ItemsMapperCustom.java 1 package com.tony.ssm.mapper; 2 3 import java.util.List; 4 5 import com.tony.ssm.po.ItemsCustom; 6 import com.tony.ssm.po.ItemsQueryVo; 7 8 public interface ItemsMapperCustom { 9 // 商品查询列表 10 public List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo) throws Exception; 11 } ItemsMapperCustom.xml 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="com.tony.ssm.mapper.ItemsMapperCustom" > 4 5 <!--

Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之16.Cookie

北战南征 提交于 2020-08-06 03:39:26
–Cookie 简介 –设置Cookie –创建Cookie –获得Cookie –Cookie应用实例 • 使用cookie检测初访者 • 自动登录 ################Michael分割线###################### –Cookie 简介 • Cookie 是保存在客户端的一个“键-值”对,用来标识用户的一些信息 • Cookie的应用 –在电子商务会话中标识用户 –对站点进行定制 –定向广告 • 创建Cookie –调用Cookie的构造函数,给出cookie的名称和cookie的值,二者都是字符串 • Cookie c = new Cookie("userID", "a1234"); –设置最大时效 • 如果要告诉浏览器将cookie存储到磁盘上,而非仅仅保存在内存中,使用setMaxAge (参数为秒数) • c.setMaxAge(60*60*24*7); // One week –将Cookie放入到HTTP响应 • response.addCookie(c); • 获得Cookie –调用request.getCookies •这会得到Cookie对象组成的数组 • 在这个数组中循环,调用每个对象的getName,直到找到想要的cookie为止 TestCookiesServlet.java package com.michael

Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置

南笙酒味 提交于 2020-08-06 03:16:14
上一篇 我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现。接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用。 添加多数据源的配置 先在Spring Boot的配置文件 application.properties 中设置两个你要链接的数据库配置,比如这样: spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1 spring.datasource.primary.username=root spring.datasource.primary.password=123456 spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/test2 spring.datasource.secondary.username=root spring.datasource.secondary.password=123456 spring.datasource.secondary.driver-class-name=com.mysql.cj

软件测试IT人必读:写给浮躁的软件测试IT同仁(请不要做浮躁的人)

不问归期 提交于 2020-08-06 02:16:05
IT人必读:写给浮躁的软件测试IT同仁(请不要做浮躁的人) 1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2. 初学者 请不要看太多太多的书那会误人子弟的,先找本测试基础的书学,很多人用了很久都是只对部分功能熟悉而已,往往这些还是不够的。 3.看帮助,不要因为很难很长而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。 4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。 5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。 6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。 7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览群书。 8.看再多的书是学不全脚本的,要多实践。 9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。 10.学习脚本最好的方法之一就是多练习。 11.在任何时刻都不要认为自己手中的书已经足够了。 12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。 13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍; 14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件; 15

云服务和SOA架构以及微服务架构的区别及联系

牧云@^-^@ 提交于 2020-08-06 01:17:03
截止目前,如果之前有看我文章的,关于SSM框架的原理,应该都差不多理解了,毕竟都是看我写过源码的人了,接下来会进入Spring Boot和Spring Cloud的原理,源码解析。在此之前,我们需要了解如下几个概念。云服务、SOA架构、微服务架构。 1、 基于IOC原理,手写SpringIOC源码 2、 基于MVC原理,手写SpringMVC源码 3、 基于连接池和AOP原理,手写MyBatis源码 1.云服务 首先看看百科的介绍:云服务是基于互联网的相关服务的增加、使用和交互模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。恩,读起来有点咬口,还是不是很理解。接下来慢慢来解读云服务吧。 云服务只是一个统称,我们可以将其分成三层:一层IAAS、二层PAAS、三层SAAS。 1.1.IAAS基础设施服务 Infrastructure-as-a-Service(基础设施即服务),把IT基础设施作为一种服务通过网络对外提供。 在这种服务模型中,用户不用自己构建一个数据中心,而是通过租用的方式来使用基础设施服务,包括服务器、存储和网络等。例如我们可直接在网络上购买阿里云服务器来使用,而不用自己构建机房、网络、储存等设设备。 换句话说就是,我们把网络、服务器、存储等这些IT基础设施作为一种资源,通过网络给用户提供服务。 1.2.PAAS平台服务 Platform-as-a

【bug记录】jpa 解决org.hibernate.lazyinitializationexception could not initialize proxy

限于喜欢 提交于 2020-08-05 23:52:33
前言 最近开发项目比较忙,Spring Cloud的笔记得稍稍放放了,下午出来个bug,恶心的不行,功能很简单,也没有什么级联或复杂的映射关系,就是一直在报三个异常 Caused by: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.shunneng.core.web.rest.util.Result["data"]->com.shunneng.flup.web.rest.dto.SaveFlupDTO["flupForm"]->com.shunneng.flup.domain.FlupForm_$$_jvst158_3["handler"]) 2018-05-14 16:54:44,571 ERROR XNIO-2 task-3 c.s.c

蚂蚁SOFAStack:云上自有江湖

前提是你 提交于 2020-08-05 20:29:19
有人说,历史是由懒汉推动的。 科技的演进史,其实就是人类不断偷懒的过程。我们懒得浪费体力,于是有了蒸汽机;我们懒得动笔演算,于是有了电子计算机;我们懒得随身携带现钞,于是有了线上交易和无接触支付……程序和信息成为这个时代的基底,服务和应用围绕着我们的指尖打转。 我们从网络上索取一切,海量的数据和代码在赛博空间里奔流不息。 突然有一天,构筑代码世界的工人们也犯懒了。为首的“懒汉”开始思考,能不能把一些通用的代码模块打包起来,供给上层随时取用,这样就省下了重复“造轮子”的力气,让敲代码也成为一种模块化的工作? 这一“偷懒”,就偷出了一个新概念:中间件。 无人探索的道路 对普通人来说,“中间件”是一个很遥远的词汇。 从技术层面来讲,中间件是介于基础设施和业务系统之间的特殊软件。程序员们别出心裁地构思了各种比喻:有人说它是建筑工地上的“预制件”,让工人不必从头开始搅拌水泥;有人说它是整合货源的“中间商”,让商家免于一次次询价比价的操劳…… “基础设施和业务系统之间,有很多通信和集成方面的要求,让每个业务系统都去做一遍是很浪费人力的。”蚂蚁集团高级产品专家马振雄这么说,“大家都有这样的诉求。” 时势造英雄,SOFAStack在蚂蚁集团应运而生。 它诞生得悄无声息,初衷只是为了“解救”支付宝。那还是青涩年代的支付宝,没有琳琅满目的蚂蚁森林、花呗和健康码,用4个“一”就能概括它的全部

微信小程序登录流程及解析用户openid session_key,获取用户信息

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-05 19:55:58
为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取或展示用户信息: UnionID 机制说明 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。所以我们有时候需要获取这个UnionID 这个图简单的可以看做三部分 1.微信小程序客户端 2.微信官方服务器 3.第三方服务器(这个可以看做是自己的) 具体步骤如下; 1. 客户端获得code,并将code传给第三方服务端 微信小程序端调用wx.login,获取登录凭证(code),并调用接口,将code发送到第三方客户端 2. 第三方服务端用code换session_key和openid 小程序端将code传给第三方服务器端,第三方服务器端调用接口,用code换取session_key和openid 3. 第三方服务端生成新的session(3rd_session)