自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Shiro 改造成 Restful 风格

Apache Shiro 具有两种认证方式:①Filter 认证方式;②注解认证方式:在需要认证的方法上添加注解 @RequiresAuthentication、@RequiresPermissions、@RequiresRoles 等等1.针对 Filter 的认证方式Apache Shiro 默认配置了 11 个 Filter,分别是public enum Defaul...

2018-04-13 19:54:00 5580 2

原创 HTTP请求头部Content-Type字段

研究HTTP请求头部的 Content-Type 字段,基于 Chrome 插件 DHC1. GET 请求GET 请求不存在请求实体部分,键值对参数放置在 URL 尾部,因此请求头不需要设置 Content-Type 字段非 ASCII 码会自动进行编码转换,例如发送请求:www.bilibili.com?hehe=你的我的GET /?hehe=%E4%BD%A0%E7%9A%...

2018-03-09 11:40:40 32320 1

原创 源码解析 XmlWebApplicationContext

XmlWebApplicationContext 是使用最频繁的 WebApplicationContext,值得深入了解和学习它既是 DispatcherServlet 的 (WebApplicationContext)默认策略,又是 ContextLoaderListener 创建 root WebApplicationContext(根容器,同时也是 DispatcherServlet ...

2018-02-20 01:32:30 1788

原创 源码解析 DefaultListableBeanFactory

DefaultListableBeanFactory,是 GenericApplicationContext 和 AbstractRefreshableApplicationContext 的(bean工厂)默认策略,而这两者是所有 xxxApplicationContext 的基类,因此 DefaultListableBeanFactory 可以说是 ApplicationContext 的标准...

2018-02-15 16:29:47 1654

原创 Jedis编程-订阅发布pub/sub

pom.xml dependency> groupId>redis.clientsgroupId> artifactId>jedisartifactId> version>2.9.0version> type>jartype> scope>compiles

2018-02-02 12:04:56 613

原创 SpringBoot 配置 Servlet、Filter、Listener

嵌入式的 Servlet 3.0+ 容器不会直接使用 ServletContainerInitializer 和 WebApplicationInitializer,即通过以上两个接口实现的(Servlet、Filter、Listener)配置是无效的,这是为了防止第三方代码的设计损坏应用程序,原文如下 Embedded servlet containers will not direct...

2018-01-17 11:56:25 458

原创 源码解析 RequestMappingHandlerMapping

RequestMappingHandlerMapping 比 DefaultAnnotationHandlerMapping(DispatcherServlet的默认策略,但Spring 3.2不再推荐使用)更强大 可以看出这是一个桥接模式,其中PathMatcher、CorsProcessor、HandlerMethodMappingNamingStrategy都是接口,它们独立于Hand

2018-01-15 01:20:10 1068

原创 源码解析 SpringMVC - DispatcherServlet

HttpServletBean 由 HttpServlet 扩展而来,其旨在将 web.xml 里配置的 servlet参数(init-param)填入 Bean的属性(即HttpServletBean派生类的成员变量),此类是一个提供了参数自动映射功能的抽象类,与MVC设计关系不大查看 FrameworkServlet 源码public abstract class FrameworkS

2018-01-11 23:16:38 208

原创 JAVA 数据结构接口-对比分析

JAVA 推荐面向接口编程,这样在代码重构时,只需替换掉具体的实现类而不影响现有的代码,因此,当我们在考虑数据结构时,第一步就是要选出一个合适的接口JAVA 集合框架接口(继承体系)哈希接口(散列表结构) 集合接口 Map 介绍Map散列表(哈希表),通过 Key 对象的哈希值来决定 Value 存储位置,但判断 Key 时需要同时保证 hashCode(...

2018-01-07 22:21:19 1034

原创 解析 Shiro-Spring 过滤器全流程

对于Spring 集成 Shiro,一般要求配置一个如下的Filter(web.xml)<!-- The filter-name matches name of a 'shiroFilter' bean inside applicationContext.xml --><filter> <filter-name>shiroFilter</filter-name> <filter-c

2017-12-23 03:43:40 694

原创 源码解析 ThreadPoolExecutor JAVA1.8

1. 构造函数corePoolSize:池里维持的最小线程数,即使它们是空闲线程,也不会进行销毁maximumPoolSize:最大线程数keepAliveTime:当池里的线程数量超过了corePoolSize时,如果额外线程在keepAliveTime时间段内都未执行新任务,将被销毁 核心线程和额外线程是明确区分的,核心线程一般不会被销毁unit:keepAliveTime的时间单位

2017-12-22 00:04:34 265

原创 Spring Session 整合 JWT Token

依赖库 pom.xml <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.3.1.RELEASE</version>

2017-12-07 12:04:24 5200

原创 IDEA自动部署WEB项目至Tomcat-原理解析

IDEA 部署 WEB 项目的方式比较特别,它对每一套应用系统都新建了一份服务器配置,使得各个应用环境互不影响,且无需修改 Tomcat 原生配置 ${CATALINA_HOME}/conf/,保证了 IDEA 项目开发不影响服务器配置,减少服务器配置问题第一种,项目打包类型为 ResidentManager:war explodedIDEA 部署步骤: 注意 Artifact...

2017-11-19 23:10:38 3234 3

原创 SpringBoot 配置 WebSocket

原文如下 Spring Boot provides WebSockets auto-configuration for embedded Tomcat (8 and 7), Jetty 9 and Undertow. If you’re deploying a war file to a standalone container, Spring Boot assumes that the con

2017-11-19 22:47:41 1870

原创 HashMap、HashTable、ConcurrentHashMap

HashMap vs HashTable HashMap 的键和值都允许 null 值存在(当 key == null 时,哈希值为 0),而 HashTable 则不行HashMap 不加锁,所以效率高,非线程安全;HashTable 加锁,是线程安全的,但效率低ConcurrentHashMap vs HashTable ConcurrentHashMap 是加锁版的 HashMap...

2017-10-22 20:47:16 255

原创 Spring Boot 配置静态资源处理

先讲几点有关嵌入式 Tomcat 运行的事项 request.getSession().getServletContext().getRealPath(“/”),这个不用多说了,总之很重要,先将其简称为 docBase,即 “文档根目录”当项目中不存在 src/main/webapp 目录时,docBase 为C盘临时目录,例如 C:\Users\Administrator\AppData\...

2017-10-15 23:12:49 5774

原创 将 Apache Shiro 改造成 JWT 认证方式

要想成功改造,只需做到三点用 Shiro 提供的 DefaultWebSessionManager 替代默认的 ServletContainerSessionManager - ServletContainerSessionManager 是 DefaultWebSecurityManager 使用的默认实现,用于 Web 环境,其直接使用 Servlet 容器的会话 ...

2017-09-30 00:38:21 5965

原创 源码解析 Lock Condition

接上一篇:源码解析 ReentrantLockhttp://blog.csdn.net/pomer_huang/article/details/780470521. await()查看 ReentrantLock.newCondition() 的 await() 方法void await() throws InterruptedException;这是一个接口方法,实现者是 AbstractQu

2017-09-25 01:20:47 272

原创 源码解析 ReentrantLock

==基于 Java 1.8.0_91==相关类的继承体系1. 查看 ReentrantLock.lock() 源码 public void lock() { //默认创建使用的是非公平同步器:NonfairSync //可以通过构造函数参数来设置公平同步器:FairSync sync.lock(); }查看 NonfairSync.loc

2017-09-21 00:03:34 190

原创 ThreadLocal 类

ThreadLocal 类,当工作于多线程中的对象使用 ThreadLocal 维护变量时,ThreadLocal 为每个使用该变量的线程分配一个独立的变量副本,所以每一个线程都可以独立地改变自己的本地副本,而不会影响其他线程的副本Spring 通过 ThreadLocal 来使得非线程安全的资源(如 DataSource)变成了线程安全的资源,因而可作为 Singleton概括来说,对于多线程

2017-09-12 15:31:19 220

原创 源码解析 - JDBC

获取 JDBC 连接的代码如下//使用调用者的类加载器,加载全限定名指定的类Class.forName("com.mysql.jdbc.Driver");//通过已注册的 JDBC 驱动,根据参数获取数据库连接conn = DriverManager.getConnection(DB_URL,USER,PASS);查看 com.mysql.jdbc.Driver 的静态代码块(在类被加载时执行

2017-09-12 13:23:17 870

原创 Spring Security 访问控制-实现 RESTful API

要想实现 Spring Security 返回 JSON 格式串,只需重写以下几个处理器(JavaConfig)http.exceptionHandling().accessDeniedHandler()http.exceptionHandling().authenticationEntryPoint()http.formLogin().successHandler()http.for...

2017-09-09 01:07:13 11496

原创 Spring Web:Java 替代 web.xml 原理

在 Servlet 3.0 环境中,服务器的 Servlet 容器会在类路径中查找实现 javax.servlet.ServletContainerInitializer 接口的类,如果能发现的话,就调用它的 onStartup(*)这个实现类一般不需要我们写,因为 Spring 已经提供了:SpringServletContainerInitializer//javax.servlet.ann

2017-08-27 20:44:41 744

原创 @EnableWebMvc 与 @EnableAutoConfiguration 的关系

先讲自动配置:@EnableAutoConfiguration,引入两个 JAVA 类@AutoConfigurationPackage@Import(EnableAutoConfigurationImportSelector.class)public @interface EnableAutoConfiguration {}@Import(AutoConfigurationPackages.R

2017-08-14 22:12:59 1243

原创 CAS 客户端登录验证

基于 cas-client v3.2.1参考文章:http://blog.csdn.net/dovejing/article/details/44426547CAS 客户端登录验证的核心在于两个 Filter,如下CAS 客户端的 web.xml<!--该过滤器负责用户的认证工作--><filter> <filter-name>CAS Authentication Filter</fi

2017-08-07 22:53:45 2730

原创 CAS 服务端登录验证流程(四)

CAS 已经登录成功,cookies 中存在 TGC登录另一个 CAS 客户端,此时转向 CAS 服务器 /login<on-start> <evaluate expression="initialFlowSetupAction" /></on-start>InitialFlowSetupAction 的 doExecute 初始化完成后,登录流程流转到第一个state(ticketGr

2017-08-07 22:50:04 927

原创 CAS 服务端登录验证流程(三)

接着上一次结束的地方 WEB-INF/login-webflow.xml<view-state id="viewLoginForm" view="casLoginView" model="credentials"> <binder> <binding property="username" /> <binding property="passwor

2017-08-07 22:48:10 1410

原创 CAS 服务端登录验证流程(二)

前面已经展示了登录流程的初始化,接下来转到 第一个state(ticketGrantingTicketExistsCheck)<decision-state id="ticketGrantingTicketExistsCheck"> <if test="flowScope.ticketGrantingTicketId != null" then="hasServiceCheck" els

2017-08-07 22:45:55 2069

原创 CAS 服务端登录验证流程(一)

CAS 首次登录流程基于 cas-server v3.5.2参考文章:http://blog.csdn.net/dovejing/article/details/44523545#comments查看 web.xml <servlet> <servlet-name>cas</servlet-name> <servlet-class> org.jasig.cas.w

2017-08-07 22:42:21 2426

原创 CAS 交互流程

CAS 的核心就是其 Ticket,及其在 Ticket 之上的一系列处理操作ST(Service Ticket) ST 是 CAS 为用户签发的访问某一 service(即集成 CAS 单点登录验证的应用系统资源 url)的票据TGT(Ticket Grangting Ticket) TGT 是 CAS 为用户签发的登录票据,拥有 TGT,就代表用户已登录 TGC(Ticket G...

2017-08-07 22:35:48 1534

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除