【文件属性】:
文件名称:Java EE常用框架.xmind
文件大小:19KB
文件格式:XMIND
更新时间:2020-06-19 16:08:35
java java EE 常用框架
Java EE常用框架
WebService
介绍
基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用
术语
XML. Extensible Markup Language -扩展性标记语言
WSDL – WebService Description Language – Web服务描述语言。
SOAP-Simple Object Access Protocol(简单对象访问协议)
SOA(Service-Oriented Architecture) :面向服务的架构
它是一种思想,IBM大力倡导是即插即用的,IBM大力提倡,希望以组装电脑的方式来开发应用
它是目录服务,通过该服务可以注册和发布webservcie,以便第三方的调用者统一调用
使用:
二、我们可以使用Java自带的WsImport来实现本地代理。这种方法会将WebService翻译成Java类,我们使用类一样去访问WebService就行了。非常好用。
三、除了调用别人发布的webService,也可以自己发布WebService服务
四、CXF框架可以与spring无缝连接,就不用我们自己Endpoint了。它还能记录日志之类的
五、我们还可以使用Idea下的webservice,能够使用图形画面的方式获取本地代理和生成WSDL文件。
Activiti
介绍
Activiti5是一个业务流程管理(BPM)框架
如果我们的业务是比较复杂的话,我们才会用到工作流!
使用Activiti的步骤
定义工作流
画一个BPMN图就可以了
部署工作流
执行工作流-->按照我们定义的工作流来执行
工作流在执行的过程中肯定会涉及到很多数据,Activiti是默认提供数据库表给我们使用的
Activiti工作流框架快速入门:
定义工作流,使用插件来把我们的流程图画出来。这个流程图就是我们定义的工作流。
工作流引擎是工作流的核心,能够让我们定义出来的工作流部署起来。
由于我们使用工作流的时候是有很多数据产生的,因此Activiti是将数据保存到数据库表中的。这些数据库表由Actitviti创建,由Activiti维护。
部署完的工作流是需要手动去执行该工作流的。
根据由谁处理当前任务,我们就可以查询出具体的任务信息。
根据任务的id,我们就可以执行任务了。
细节
流程定义:涉及到了四张数据库表
我们可以通过API把我们的流程定义图读取出来
可以根据查询最新版本的流程定义
删除流程定义
部署流程定义的时候也可以是ZIP文件
流程运行:涉及到两个对象,四张数据库表:
流程实例
获取流程实例和任务的历史信息
判断流程实例是否为空来判断流程是否结束了
查看正在运行服务的详细信息
通过流程实例来开启流程
流程变量:它涉及到了两张表。
流 程变量实际上就是我们的条件。
作用
我们可以在流程开始的时候设置流程变量,在任务完成的时候设置流程变量。
运行时服务和流程任务都可以设置流程变量。
连线
通过连线我们可以在其中设置条件,根据不同的条件流程走不同的分支
排他网关
SpringData JPA
简介
API
Repository接口
PagingAndSortingRepository
JpaRepository
JpaSpecificationExecutor
过滤条件查询接口
注解
nameQuery注解
SQL命名,调用的时候根据名称调用
查询注解
1,targetEntity 属性表示默认关联的实体类型,默认为当前标注的实体类。
2,cascade属性表示与此实体一对一关联的实体的级联样式类型。
3,fetch属性是该实体的加载方式,默认为即时加载EAGER
4,optional属性表示关联的该实体是否能够存在null值,默认为ture,如果设置为false,则该实体不能为null,
5, mapperBy属性:指关系被维护端
1,@JoinColumn注释是保存表与表之间关系的字段
2,如果不设置name,默认name = 关联表的名称+”-“+关联表主键的字段名
需要注意的问题:
注解写在get方法上
如果写在属性上可能会出现: Could not locate field nor getter method for property named
Lucene
简介
Lucene是根据关健字来搜索的文本搜索工具(全文搜索引擎),只能在某个网站内部搜索文本内容,不能跨网站搜索
全文搜索引擎是在硬盘上的搜索,比传统Mysql数据库是要快的
比传统SQL多的功能:查询的结果有相关的排名,可以有高亮显示
存储数据的地方我们称之为索引库
原始记录表
分词表(倒排序表)
使用
将JavaBean对象封装到Document对象中
后通过IndexWriter把document写入到索引库中
当用户需要查询的时候,就使用IndexSearcher从索引库中读取数据,找到对应的Document对象,从而解析里边的内容
最后将内容封装到JavaBean对象中
索引库优化
合并文件
采用一种算法,将中英文本中的字符拆分开来,形成词汇,以待用户输入关健字后搜索
流程
步一:按分词器拆分出词汇
步二:去除停用词和禁用词
步三:如果有英文,把英文字母转为小写,即搜索不分大小写
IKAnalyzer分词器:一个比较出名的中文分词器
搜索结果排序
搜索结果摘要
条件搜索
SpringBoot
SpringBoot就是为了简化我们的配置:约定大于配置
启动方式
在idea中直接使用启动
使用mvn 命令来启动
使用mvn编译,而后在class目录生成jar包,使用Java命令来启动
使用@configurationProperties和@Value注解来获取SpringBoot配置文件上的信息
使用@SpringBootTest来搭建测试环境,使用@AutoConfigueMockMVC类实现Mock http操作
热部署和热加载
热部署代表的是:我们不需要重启服务器,能够将新war包替换旧的war包。
热加载代表的是:我们不需要重启服务器,就能够类检测得到,重新生成类的字节码文件
无论是热部署或者是热加载、都是基于Java类加载器来完成的。
SpringBoot实现热部署
1、在plugin标签中加入插件
Shiro
简介
shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权
传统使用URL拦截的时候,要将所有的URL都配置起来,繁琐、不易维护
而我们的Shiro实现系统的权限管理,有效提高开发效率,从而降低开发成本。
粗粒度和细粒度权限
粗粒度权限管理比如:超级管理员可以访问户添加页面、用户信息等全部页面。部门管理员可以访问用户信息页面包括 页面中所有按钮。
细粒度权限管理:对资源实例的权限管理。资源实例就资源类型的具体化,比如:用户id为001的修改连接,1110班的用户信息、行政部的员工。细粒度权限管理就是数据级别的权限管理。
Shiro认证流程
ModularRealmAuthenticator作用进行认证,需要调用realm查询用户信息(在数据库中存在用户信息)
ModularRealmAuthenticator进行密码对比(认证过程)。
自定义realm
在Shiro中默认是使用ini文件去对比的,但我们开发往往是去数据库比较,因此我们需要自定义realm
自定义也很简单:继承AuthorizingRealm类就好了
自定义的realm支持散列算法
授权方式
编程式:通过写if/else 授权代码块完成
注解式:通过在执行的Java方法上放置相应的注解完成
Spring与Shiro整合
在web.xml配置拦截器
在Shiro配置文件上配置在web.xml对应的bean
配置安全管理器
配置自定义的realm
Shiro过滤器
anon:例子/admins/**=anon 没有参数,表示可以匿名使用。
authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,FormAuthenticationFilter是表单认证,没有参数
使用过滤器实现登录和退出功能
步骤
当用户没有认证时,请求loginurl进行认证【上边我们已经配置了】,用户身份和用户密码提交数据到loginurl
FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的)
FormAuthenticationFilter 调用realm传入一个token(username和password)
realm认证时根据username查询用户信息(在Activeuser中存储,包括 userid、usercode、username、menus)。
如果查询不到,realm返回null,FormAuthenticationFilter向request域中填充一个参数(记录了异常信息)
退出
不用我们去实现退出,只要去访问一个退出的url(该 url是可以不存在),由LogoutFilter拦截住,清除session。
数据回显
授权过滤器使用
XML配置方式
1.在配置文件上配置配置filter规则。/items/queryItems.action = perms[item:query]
2.用户请求url,/items/queryItems.action
3.被PermissionsAuthorizationFilter拦截,发现需要“item:query”权限
4.PermissionsAuthorizationFilter 调用realm中的doGetAuthorizationInfo获取数据库中正确的权限
5.PermissionsAuthorizationFilter对item:query 和从realm中获取权限进行对比,如果“item:query”在realm返回的权限列表中,授权通过。
6. realm中获取认证的信息,查询出该用户对应的权限,封装到simpleAuthorizationInfo中,PermissionsAuthorizationFilter会根据对应的权限来比对。