跟我学Shiro - 张开涛Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录 了。 记住一点,Shiro 不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过 相应的接口注入给 Shiro 即可。 接下来我们分别从外部和内部来看看 Shiro 的架构,对于一个好的框架,从外部来看应该 具有非常简单易于使用的 API,且 API 契约明确;从内部来看的话,其应该有一个可扩展 SecurityManager; 2、 我们需要给 Shiro 的 SecurityManager 注入 Realm,从而让 SecurityManager 能得到合法 的用户及其权限进行判断。 从以上也可以看出,Shiro 不提供维护用户/权限,而是通过 Realm 让开发人员自己注入。 接下来我们来从 Shiro 内部来看下 Shiro 的架构,如下图所示: Su 的,因此都很容易放到任何 IoC 容器管理。但是和一般的 IoC 容 器的区别在于,Shiro 从根对象 securityManager 开始导航;Shiro 支持的依赖注入:public 空参构造器对象的创建、setter 依赖注入。 1、纯 Java 代码写法(com.github.zhangkaitao.shiro.chapter4.NonConfigurationCreateTest):0 码力 | 219 页 | 4.16 MB | 10 月前3
基于 Java EE 的企业应用系统设计 - Spring MVC 01的特点 1. 多个视图可以对应一个模型,可以减少代码的复制,在模型 发生改变时,易于维护。 2. 模型返回的数据与显示逻辑分离。模型数据可以应用任何显 示技术,例如,使用 JSP、Velocity 模板或者直接产生 Excel。 3. 应用被分为三层,降低各层耦合,提高了可扩展性。 4. 控制层把不同模型和视图组合在一起,完成不同的请求,控 制层包含了用户请求权限的概念。 5. MVC 符合 @Autowired 和 @Service 进行依赖注入 org.springfamework.beans.factory.annotation.Autowired ▶ 将依赖注入到 Spring MVC 控制器的最简单方法是通过注解 @Autowired 到字段或方法。 org.springframework.stereotype.Service ▶ 为了能被作为依赖注入,类必须要声明为 @Service 大纲 Java Web 应用的开发演化 MVC 模式示例 Spring MVC 数据绑定和表单标签库 应用 @Autowired 和 @Service 进行依赖注入 O 应用 @Autowired 和 @Service 进行依赖注入示例 @Controller public class ProductController { ... @Autowired private ProductService0 码力 | 67 页 | 792.43 KB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译象视图(graphs)可以理解的惯例,你发 现你完全可以这样做。Shiro 利用这些假定的惯例来实现一个简单而简明的配置途径。 我们经常将这种方法认为是“可怜人的(poor man's)”的依赖注入,虽然不及成熟的 Spring/Guice/JBoss的XML文件强大,但你会发现它可以做很多事情而且并不复杂,当然当那 配置途径也可以使用,但对 Shiro 来讲并不是必须的。 仅仅吊一下胃 activeSessionsCache = $activeSessionsCache securityManager.sessionManager.sessionDAO = $sessionDAO 虽然你可以将缓存实例直接注入到 SessionDAO 如上所示,它通常是更常见的配置一般是缓存 管理器 使用 Shiro 的所有缓存的需求(会话以及身份验证和授权数据)。 在这种情况下,而不是 直接配置 缓存实例,您会告诉 sessionIdCookieEnabled (一个 boolean) sessionIdCookie, 一个 Cookie 实例. Cookie as a template 作为模板 sessionIdCookie 属性本质上是一个模板,你配置 Cookie 实例属性,该模板将在运行时用一个适 当的会话ID值设置在实际 HTTP Cookie header中 Session Cookie Configuration 配置0 码力 | 196 页 | 2.34 MB | 1 年前3
Nacos架构&原理
可以看到,MemberLookup 接口非常简单,核心接口就两个—— injectMemberManager 以及 afterLookup ,前者用于将 ServerMemberManager 注入到 MemberLookup 中,方便利用 ServerMemberManager 的存储、查询能力,后者 afterLookup 则是⼀个事件接口,当 MemberL ookup 需要进行成员 environment 中过时的 NacosPropertySource,完成这个 步骤之后,就可以通过 environment.getProperty() 动态的获取到配置值了。但问题是,@Value 方式注入的 Bean 对象的配置项是无法动态刷新的,因为 Bean 已经生成无法再更改;为了实现动 态的刷新,Nacos 又引入了 @NacosValue 注解。 注:以上内容参考:https://www ## 集群节点列表 NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848 上面的环境变量文件中定义的变量, 会在容器启动的时候通过系统环境变量的方式注入到容器内部, 通过 application.properties 的方式读入 Nacos 应用内部. 官方 docker 镜像已经预定义了许多 环境变量参数供用户使用, 具体可以在附录中看到。0 码力 | 326 页 | 12.83 MB | 9 月前3
《Java 应用与开发》课程讲义 - 王晓东涉及怎样合理的设计对象之间的交互通信,以及合理为对象分配职责,让 设计富有弹性、易维护、易复用。 责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观 察者模式、状态模式、策略模式、模板方法模式和访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关的结构型模式涉及如 何合理使用继承机制,和对象有关的结构型模式涉及如何合理的使用对象组合机 制。 适配器模式、 抽象类是对类的抽象(可以抽象但不宜实例化),而接口是对行为的抽象。 • 抽象类是对类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为) 进行抽象。 • 抽象类作为很多子类的父类,它是一种模板式设计。模板式设计:模板代表公共 部分,公共部分需要改的则改动模板即可。 • 而接口是一种行为规范,它是一种辐射式设计。辐射式设计:接口进行了变更, 则所有实现类都必须进行相应的改动。 7.3.3 怎样才是合理的设计?(门和警报的示例) 中国海洋大学信息学院计算机系 第 255 页 / 共 306 页 20.3. SERVLET 配置对象 � 20 � ServletConfig 对象在 Servlet 的 init 方法中取得,由 Web 容器以参数方式注入到 Servlet: 1 private ServletConfig config = null; 3 public void init (ServletConfig config) throws0 码力 | 330 页 | 6.54 MB | 1 年前3
Java 应用与开发 - 类加载和反射invoke 方法来调用 execute 方法。 这个过程是基于 Java 反射框架完成的。 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射的主要用途 O 依赖注入 有两个组件 A 和 B,A 依赖于 B。 1 public class A { 2 public void importantMethod() { 3 B b = ...; // get an 是接口�有多个实现该 怎么做? 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射的主要用途 3 O 依赖注入 接管对象的创建工作,并将该对象的引用注入需要该对象的组 件。例如,我们使用 Spring1框架将对象 B 注入到对象 A 中,A 需要进行如下修改,加入 setB() 方法: 1 public class A { 2 private B b; 3 id="a" class="ouc.j2ee.sample.A"> 34 1对 Spring 依赖注入框架感兴趣的请自行搜索学习。 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 接下来⋯ 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 0 码力 | 46 页 | 714.40 KB | 1 年前3
Java 应用系统开发 - ServletContext 和 Web 配置javax.servlet.ServletConfig 是一个接口,具体实 现类由容器厂商实现。 ServletConfig 对象在 Servlet 的 init 方法中取得,由 Web 容器 以参数方式注入到 Servlet: 1 private ServletConfig config = null; 3 public void init(ServletConfig config) throws0 码力 | 33 页 | 668.91 KB | 1 年前3
JAVA 应用与开发 - 高级类特性抽象类是对类的抽象(可以抽象但不宜实例化),而接口是对行 为的抽象。 抽象类是对类整体进行抽象,包括属性、行为,但是接口却是 对类局部(行为)进行抽象。 抽象类作为很多子类的父类,它是一种模板式设计。模板式设 计:模板代表公共部分,公共部分需要改的则改动模板即可。 而接口是一种行为规范,它是一种辐射式设计。辐射式设计: 接口进行了变更,则所有实现类都必须进行相应的改动。 16 29 ������� 抽象类是对类的 抽象类是对类的抽象(可以抽象但不宜实例化),而接口是对行 为的抽象。 抽象类是对类整体进行抽象,包括属性、行为,但是接口却是 对类局部(行为)进行抽象。 抽象类作为很多子类的父类,它是一种模板式设计。模板式设 计:模板代表公共部分,公共部分需要改的则改动模板即可。 而接口是一种行为规范,它是一种辐射式设计。辐射式设计: 接口进行了变更,则所有实现类都必须进行相应的改动。 16 29 �������������������0 码力 | 61 页 | 677.55 KB | 1 年前3
Java 应用与开发 - 面向对象编程进阶涉及怎样合理的设计对象之间的交互通信,以及合理 为对象分配职责,让设计富有弹性、易维护、易复用。 责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、 备忘录模式、观察者模式、状态模式、策略模式、模板方法模式 和访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关 的结构型模式涉及如何合理使用继承机制,和对象有关的结构型 模式涉及如何合理的使用对象组合机制。 适配器模式、组合 涉及怎样合理的设计对象之间的交互通信,以及合理 为对象分配职责,让设计富有弹性、易维护、易复用。 责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、 备忘录模式、观察者模式、状态模式、策略模式、模板方法模式 和访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关 的结构型模式涉及如何合理使用继承机制,和对象有关的结构型 模式涉及如何合理的使用对象组合机制。 适配器模式、组合 涉及怎样合理的设计对象之间的交互通信,以及合理 为对象分配职责,让设计富有弹性、易维护、易复用。 责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、 备忘录模式、观察者模式、状态模式、策略模式、模板方法模式 和访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关 的结构型模式涉及如何合理使用继承机制,和对象有关的结构型 模式涉及如何合理的使用对象组合机制。 适配器模式、组合0 码力 | 49 页 | 659.74 KB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版数据结构与算法的关系 如图 1‑4 所示,数据结构与算法高度相关、紧密结合,具体表现在以下三个方面。 ‧ 数据结构是算法的基石。数据结构为算法提供了结构化存储的数据,以及操作数据的方法。 ‧ 算法为数据结构注入生命力。数据结构本身仅存储数据信息,结合算法才能解决特定问题。 ‧ 算法通常可以基于不同的数据结构实现,但执行效率可能相差很大,选择合适的数据结构是关键。 图 1‑4 数据结构与算法的关系 数据结构与算法犹如图 取当前看来最好的选择。 ‧ 算法是在有限时间内解决特定问题的一组指令或操作步骤,而数据结构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法为数据结构注入生命力。 ‧ 我们可以将数据结构与算法类比为拼装积木,积木代表数据,积木的形状和连接方式等代表数据结构, 拼装积木的步骤则对应算法。 1. Q & A Q:作为一名程序员,我在日常工作中从未0 码力 | 379 页 | 18.48 MB | 10 月前3
共 15 条
- 1
- 2













