Java EE

【Spring Cloud】网关

微笑、不失礼 提交于 2020-08-05 19:42:34
1. 背景 通过 Spring Cloud 和微服务 的学习,我们了解到使用Spring Cloud实现微服务的架构基本成型,大致是这样的: 我们使用Spring Cloud Netflix中的Eureka实现了 服务注册中心 以及服务注册与发现;而服务间通过 Ribbon 或Feign实现服务的消费以及均衡负载。为了使得服务集群更为健壮,使用 Hystrix 的熔断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。 在该架构中,服务集群包含:内部服务Service A 和 Service B,他们都会注册与订阅服务至Eureka Server,而Open Service是一个对外的服务,通过均衡负载公开至服务调用方。我们把焦点聚集在对外服务这块,直接暴露我们的服务地址,这样的实现是否合理,或者是否有更好的实现方式呢? 先来说说这样的架构需要做的一些事儿以及存在的不足: • 破坏了服务无状态特点。 为了保证对外服务的安全性,我们需要实现对服务访问的权限控制,而开放服务的权限控制机制将会贯穿并污染整个开放服务的业务逻辑,这会带来的最直接问题是,破坏了服务集群中REST API无状态的特点。 从具体开发和测试的角度来说,在工作中除了要考虑实际的业务逻辑之外,还需要额外考虑对接口访问的控制处理。 • 无法直接复用既有接口。 当我们需要对一个即有的集群内访问接口,实现外部服务访问时

Session--验证码案例(Java)

て烟熏妆下的殇ゞ 提交于 2020-08-05 19:02:32
Session--验证码案例(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 案例 用户输入用户名,密码以及验证码。 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误 如果验证码输入有误,跳转登录页面,提示:验证码错误 如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您 思路 在生成验证码的时候将它的值存入到session中,在比对的时候再取出来进行对比 代码 index.jsp <%-- Created by IntelliJ IDEA. User: tanglei Date: 2020/6/26 Time: 下午12:48 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>login</title> <script> window.onload = function(){ document.getElementById("img").onclick = function(){ this.src="

【JAVA SE基础篇】27.面向对象三大特征之封装

為{幸葍}努か 提交于 2020-08-05 18:48:23
1.封装的作用 程序设计要追求”高内聚,低耦合“ 高内聚:类的内部数据操作细节自己完成,不允许外部干涉。 低耦合:仅暴露少量的方法给外部使用,尽量方便外部调用。 类似设计电视,冰箱也是,外部看起来很简单,就几个开关,方便使用。内部很复杂,不对外展示。 封装的概念就产生于此, 把对象的属性和操作结合为一个独立的整体,并且尽可能的隐藏对象的内部实现细节。 封装的优点: 1.提高代码的安全性和复用性 2.高内聚(封装细节,便于修改内部代码,提高可维护性) 3.低耦合(简化外部调用,便于调用者使用,便于扩展和协作) 没有封装代码会有问题 例: 2.封装的实现 为了实现封装,我们使用了访问控制符 在java中有四个访问控制符:private default protected public 其权限图为 修饰符 同一个类 同一个包 子类 所有类 private √ × × × default √ √ × × protected √ √ √ × public √ √ √ √ 1.private:表示私有,只有自己的类能访问 2.default:表示默认,没有修饰符的时候默认为defalut,只有同一个包内能访问 3.protected:表示保护,可以被同一个包的类及其子类访问 4.public:表示公共,可以被该项目所有的包的所有类访问 例: 3.封装的使用细节 类的使用处理: 1

紫薇星上的SSM——SSM框架的一些补充

ぃ、小莉子 提交于 2020-08-05 18:14:36
既然已经学到了这里,那就顺便补充一些知识点,包括:json、Ajax、拦截器、文件的上传与下载 1.json 进入前后端分离时期,后端程序员就要学会使用JSON,这是前端与后端的连接方式,在前端我们可以简单的将数据变为键值对的字符串形式: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script> var user = { name: "zijun", age: 3, sex: "男" }; var json = JSON.stringify(user); console.log(json); console.log(user); var obj = JSON.parse(json); console.log(obj); </script> </head> <body> </body> </html> 可以看到user对象被变成了一个字符串,而且是以键值对对应的形式显示的,这个情况主要由js自带的JSON方法实现;而同样的JSON字符串也可以被转换为对象,这样在前后端分离的时候,只需要定义好接口,前端程序员通过后端程序员传过来的JSON字符串就可以实现数据的动态导入。 Jackson 对于后端程序员来说,一般都会使用Jackson,首先我们导入依赖:

web动态工程中Deployment Descriptor:xxx的缺失

廉价感情. 提交于 2020-08-05 16:32:34
之前出现这个问题我采取了网上查的一些方法去解决但并没有成功,不过也转载了,可能对一些人有所帮助,不过后来我发现了 我这种情况的真正原因 就是因为web.xml文档中少了</web-app>结尾导致的 加上之后就恢复正常了。 所以还是要认真啊! 来源: oschina 链接: https://my.oschina.net/u/4545225/blog/4336158

Tomcat 系统架构与原理剖析

≡放荡痞女 提交于 2020-08-05 16:03:10
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 1. 浏览器访问服务器的流程 浏览器访问服务器使用的是Http协议,Http协议是应用层协议,用于定义数据通信的格式,具体的数据传输使用的是TCP/IP协议。 2. Tomcat 系统总体架构 Tomcat是一个Http服务器(能够接受并且处理http请求,所以Tomcat是一个Http服务器)。 2.1. Tomcat 处理请求大致流程 HTTP服务器接收到请求之后把请求交给Servlet容器来处理,Servlet容器通过Servlet接⼝调⽤业务类。 Servlet接⼝和Servlet容器这⼀整套内容叫作Servlet规范。 Servlet容器有解耦的作用,避免Http服务器和业务类的直接耦合。 由于Tomcat根据Servlet规范实现了Servlet容器,同时它又具有Http服务器的功能,所以Tomcat拥有两个重要身份: Servlet容器 Http服务器 2.2. Tomcat Servlet容器处理流程 当用户请求某个URL资源时: 1) Http服务器会把请求信息封装成Request对象,再转化成ServletRequest对象,传入Servlet容器; 2) Servlet容器接收到请求后,根据URL和Servlet的映射关系(必要的配置信息)

finereport集成到现有web步骤

微笑、不失礼 提交于 2020-08-05 13:38:59
一、部署 1、在帆软官网下载finereport相关版本,并安装。 2、在web工程WEB-INF下新建两个目录reportlets(存在报表模板文件)和resources(存放数据连接信息)。 3、在web.xml 配置报表处理报表的servlet。 1 <servlet> 2 <servlet-name>ReportServer</servlet-name> 3 <servlet- class >com.fr.web.ReportServlet</servlet- class > 4 <load-on-startup> 0 </load-on-startup> 5 </servlet> 6 <servlet-mapping> 7 <servlet-name>ReportServer</servlet-name> 8 <url-pattern>/ReportServer</url-pattern> 9 </servlet-mapping> 4、配置数据库连接 在resources目录下添加datasource.xml文件,配置数据库连接url,user,password 。 5、编辑报表文件cpt并放到reportlets目录中。 二、访问报表方式 1、url访问: 1 http: // localhost:8080/jsp-examples/ReportServer

HTTP

早过忘川 提交于 2020-08-05 12:24:53
一 HTTP简介 Hyper Text Transfer Protocol 超文本传输协议 定义了客户端和服务器通信时 发送数据的格式 二 HTTP特点 1. 基于TCP/IP的高级协议 2. 默认端口号80 3. 基于请求/响应模型 一次请求对应一次响应 4. 无状态的 每次请求之间相互独立 不能交互数据 三 请求消息数据格式 原始数据 POST /login.html HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Referer: http://localhost/login.html Connection: keep-alive Upgrade-Insecure-Requests: 1 username=zhangsan 1. 请求行 GET

国外程序员整理的Java资源大全(全部是干货)

偶尔善良 提交于 2020-08-05 12:14:32
原文 译者 唐尤华 翻译自 github akullpp 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。 Gradle:Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven进行依赖管理,并且把Ant脚本当作头等公民。 字节码操作 编程操作Java字节码的函数库。 ASM:通用底层字节码操作及分析。 Javassist:尝试简化字节码编辑。 Byte Buddy:使用“流式API”进一步简化字节码生成。 代码分析 软件度量和质量评估工具。 Checkstyle:对编程规范和标准进行静态分析。 FindBugs:通过字节码静态分析找出潜在Bug。 PMD:对源代码中不良编程习惯进行分析。 SonarQube:通过插件集成其它分析组件,提供评估最终结果报告。 编译器 创建分析器、解释器和编译器的框架。 ANTLR:功能完备的自顶向下分析复杂框架。 JavaCC:相对ANTLR更具体,上手略为简单。支持语法语法超前预测(syntactic lookahead)。 持续集成 支持持续集成、测试和应用发布的工具。 Bamboo

js WebUploader 分片上传

一个人想着一个人 提交于 2020-08-05 12:14:12
前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践。该博客重在实践。 一. Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 简单来说,就是一个基于应用层的通信规范:双方要进行通信,大家都要遵守一个规范,这个规范就是HTTP协议。 1.特点: (1)支持客户/服务器模式。 (2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 (3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 (4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 (5