文件名称:Java EE常用框架.xmind
文件大小:19KB
文件格式:XMIND
更新时间:2023-07-10 09:55:15
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会根据对应的权限来比对。