自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ascend2015的博客

不会写代码的化学狗不是好的韭菜

  • 博客(146)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 BootStrap(1)——排版、代码、表格和按钮

从今天开始,正式地开始记录一些关于前端的笔记,前端还是能够很好很快地反映出自己学过的东西,立等可见的东西最容易有成就感。基本的html、css、js、jQuery的概念都有,所以就直接从bootstrap开始了,当然因为都是一带而过,所以基础并不牢靠,如果出现关于基础知识的疑惑,我会倒回去看,然后再记录过来,所有的知识都按部就班学实在太过费时费力。BootStrap的排版1. 标题(.

2017-11-21 15:55:42 636

原创 Shiro——认证策略

在上一篇中介绍了一下关于多个realm的配置,那么随之而来的疑问是,当我们配置好多个realm之后,当用户进行登录操作时,是同时满足所有realm才算认证成功还是说,只要有一个或者部分realm即可?这就涉及到了认证策略的问题。所以这里也说一下。 关于AuthenticationStategy:FirstSuccessfulStrategy:只要第一个realm验证成功即可,只返回第一个real

2017-11-19 16:32:24 663

原创 Shiro——多个Realm的配置

为什么需要使用多个Realm?经过MD5或者其他加密算法的加密、盐值的使用之后,我们的数据看似已经十分的安全,但是也未必,所以,更好的方式是将数据存储于多个数据库中,混合使用不同的加密算法。第一种配置多Realm的方式这个过程也十分地简单,仅仅按照之前我们自定义Realm的方式,再行配置一个Realm即可。要注意将securityManager的realm属性改为realms集合属性:<bean i

2017-11-18 16:13:31 918

原创 Shiro认证源码解析和工作原理

先行回顾一下使用shiro的步骤: 1. 创建Subject实例对象currUser; 2. 判断当前currUser是否认证过; 3. 如果没有认证过,那么应当调用currUser的login(token)方法,token也就是令牌,用以封装用户输入的登录信息; 4. 实现自定义Realm,用以完成和数据库的交互,由Shiro底层来完成用户输入信息和数据库信息的比对,完成认证。当然与

2017-11-18 16:03:20 5332 1

原创 Shiro的MD5加密

MD5的全称是Message Digest5,就是消息摘要算法5,需要知道它是一中不可逆算法,这意味着,尽管你知道结果是100,但你也不可能知道是99+1或者是50+50。 Shiro的MD5加密可以借助于AuthenticatingRealm的credentialsMatcher属性,借助于该属性,我们可以为其创建一个内部bean,指定bean相关属性。<bean id="myrealm" cl

2017-11-17 00:48:40 306

原创 Shiro——Realm数据交互的实现

自定义一个Realm,自定义Realm可以实现Realm接口,当然,根据自己的业务需求,也可以继承不同的父类,例如,我们需要实现认证功能,那么就可以继承AuthenticatingRealm,实现该接口的getAuthenticationInfo()方法。代码如下:public class MyRealm extends AuthenticatingRealm { /** * 1.d

2017-11-16 01:12:54 591

原创 shiro的URL配置

让我们再次回忆一下spring容器中shirofilter的配置: <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property n

2017-11-09 00:35:53 797

原创 Shiro:DelegatingFilterProxy

一 用途和意义回忆一下quickStart中的配置过程不难得出结论,shiro的核心配置应当位于Spring的applicationContext中的id为shiroFilter的bean。但我们在web.xml中还有一个name为shiroFilter的Filter的配置,它的类型是DelegatingFilterProxy

2017-11-07 01:00:29 448

原创 shiro的quick-start

pom如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0

2017-11-07 00:58:25 284

原创 Shiro(3)——授权

授权,也就是访问控制,即在应用中控制谁能访问哪些资源,比如页面访问、数据编辑等等操作的权限。在授权操作中需要这样几个关键对象:主体(Subject)、资源(Resources)、权限(Permission)、角色(Role)。主体主体也就是当前的用户,在Shiro中使用Subject代表当前用户。该用户只有被授权之后才能访问相应的资源资源应用中的图片、打印、页面、一些业务方法等等一切可以被访问的东西

2017-10-14 11:51:29 962

原创 Shiro笔记(2)——身份验证

认证(Authentication)其实是一个身份认证的过程,也就是饱受吐槽的“证明你自己是你自己”。用户需要向Shiro提交principals以及credentials以验证它们是否是应用所需。 Principals:事实上是主体的标识,它可以是任何东西,身份证、手机号、邮箱等等。 Credentials:通常是只有主体知道的秘密值,常见的例如密码、指纹、生物虹膜信息等。 在此我们需要引

2017-10-11 19:11:43 396

原创 Shiro学习笔记(1)——综述

刚刚接触Shiro我是懵逼的,我从来没见过这个东西,所以程序员是非常有趣的职业,虽然我还不是,这意味着工作的过程中会碰到各种奇怪的闻所未闻的东西,因此保持好奇和学习的能力十分重要,没错,我要学习Shiro了。Shiro简介Shiro是一款强力易用的Java安全框架,可以用于认证、授权、加密以及会话管理等等用途,无论是Java SE还是Java EE环境,它都能够发挥作用。Shiro具有以下特征:

2017-10-10 19:44:18 367

原创 Gradle构建项目

来个小栗子/**构建脚本中默认是有一个project实例的,脚本中所有代码的默认作用域都是project**//**apply是project的一个方法,省略括号,plugin是其参数,值为'java';version是project的一个属性**//**repositories依然是project的一个方法,以闭包作为参数,闭包中调用mavenCentral()方法,dependencies也

2017-10-01 19:04:06 264

原创 Groovy初步了解

简介Groovy是一种基于JVM的强大的动态语言,它是成熟的面向对象编程语言,同时又可以用作纯粹的脚本语言。由于其简单而熟悉的语法,能够很大程度上提升Java平台开发人员的生产力。它能够和Java程序无缝衔接,然后使得你的程序具备其强大的特性,包括其脚本、域专用语言,运行时以及编译时的元编程、功能编程。Groovy和Java语法上的一些区别方法的最后一句会作为返回值;一个语句结束可以没有分号;

2017-10-01 14:07:58 233

原创 Java动态代理

所谓动态代理,就是在程序运行时生成代理类,而无需像静态代理那样一个个得编写代理类,动态代理的实现方式比较多:有java代理、CGlib代理、ASM库等等。依次了解一下。Java动态代理InvocationHandler接口Java动态代理需要代理类实现InvocationHandler接口,当我们通过代理类调用一个方法时,这个方法就会被转发给代理类的invoke方法来调用,InvocationHan

2017-09-30 22:34:26 277

原创 Java反射机制

讲道理其实这个并不是很难的东西,之前学的时候也不觉得难,但是学完之后也并没有觉得有什么卵用,毕竟当你使用框架的时候,核心的东西都是别人实现好的,没错,就是指例如Struts2中的各种invoke方法。但是直到我在Spring中看到动态代理,我觉得还是有必要把它拎出来,复习一下。简介根据百科的定义,所谓java反射,是指Java程序在运行过程中,对于任意一个类,依然能够获取其方法、属性;对于任意一个对

2017-09-29 20:49:05 221

原创 SpringMVC笔记(二)——默认配置

一个中心,三大组件在上一篇中大致地说了一下SpringMVC请求处理的基本流程,其中,DispatcherServlet是前端控制中心,HandlerMapping负责返回包含对应的handler的HandlerExcutionChain,HandlerAdapter负责执行相应的handler,最后由ViewResolver来根据ModelAndView来渲染视图。 这里HandlerMappi

2017-09-28 01:01:07 202

原创 JSTL详解

其实之前在用JSTL的时候还是比较懵逼的,虽然在列表页时通常都会用到foreach标签,但其实并没有真正的理解,这也是重新学习的理由。简介JSTL全称:JSP Standard Tag Library,即JSP标准标记库,它是一个开源的JSP标签库,由Apache在维护,封装了许多JSP应用程序通用的核心功能,因而使用广泛,JSTL由四个定制标签库(core、fmt、xml和sql)组成。其中,co

2017-09-27 01:04:11 342

原创 SpringMVC笔记(一)——请求流程

简介SpringMVC是一个开源的JavaWeb框架。Spring框架最初由Rod Johnson编写,据说只是为了证明一下,MVC并不是一件十分困难的事情。 SpringMVC提供了MVC架构以及用于开发灵活以及松散耦合的Web应用程序的组件,所谓MVC也就是将模型层、视图层以及控制层进行分离。前端控制器DispatcherServletDispatcherServlet是SpringMVC的核

2017-09-23 22:19:54 287

原创 Gradle——依赖管理和多项目构建

依赖管理这可能是没有必要专门写一篇的,毕竟看了下课程也太短了。 但是无所谓了,就记一下好了。 为什么要进行依赖管理?主要因为我们不想重复造轮子,但是在实际构建项目的过程中又不可避免地要使用外部类库以重用其现有功能。自动化的依赖管理可以明确依赖的版本,可以解决因传递性依赖而带来的版本冲突问题。工件坐标所谓工件,我们可以简单将其理解为一个外部依赖jar包,而坐标则是它的三个属性:group、name

2017-09-18 16:45:21 812

原创 Struts2(11)——拦截器(二)

回顾上一篇主要介绍了拦截器的实现方式以及原理,以及自定义拦截器的三种方法,从本质上来说,它们都是实现了Interceptor接口,interceptor会贯穿整个项目的生命周期,根据doIntercept()中拦截业务逻辑与invocation.invoke()方法所处位置的不同分为前处理与后处理的拦截器。拦截方法的返回结果是视图逻辑名,如果拦截业务决定不将请求交由下一级拦截器或者Action处理,

2017-09-18 01:03:22 392

原创 spring笔记(1)——Spring介绍和helloWorld

在本系列笔记之前,已经看过极客学院上所有的免费版spring教程视频,极客学院上的视频短,但实在不够系统性,学习过程显得十分的零碎,因此效果是不太好的,这也是本次学习的重要原因。Spring的简介spring是一款诞生于2003年的轻量级开源框架,其诞生之初是为了解决企业级应用开发的复杂性,它的主要优势之一就是分层架构,分层设计架构允许开发者选择性使用组件。Spring的核心是控制反转(IOC)和面

2017-09-17 01:01:12 299

原创 Struts2笔记(10)——拦截器(Interceptor)(一)

拦截器(interceptor)用于AOP编程中某个字段或者方法访问前以及被访问后加入某些操作,拦截是AOP的一种实现策略。拦截器的使用还有一个重要的概念,就是拦截器链(InterceptorChain),意味着被使用的拦截器将会按照一定的顺序形成一条链,在访问被拦截的方法或者字段时就会被顺序调用。拦截器的实现原理拦截器大多是通过代理方式实现,Struts2的实现方式相对较为简单。当请求Struts

2017-09-16 21:57:01 331

原创 Struts2(9)——struts2与OGNL的结合(二)

前面几篇笔记中,我们在jsp页面中向Action传递了参数,通过这样三种方式: 1.属性驱动 将参数作为Action的一个属性 2.对象驱动 将实体类作为Action的属性 3.模型驱动 Action实现ModelDriven接口;实体类作为私有变量并实例化;实现getModel()方法,并返回实体对象。现在探究一下原理: 在数据提交到Action的过程中将会经过

2017-09-14 19:39:31 213

原创 Struts(8)——OGNL与Struts结合的原理

ValueStackValueStack是Struts2的一个借口,字面翻译为值栈,OgnlValueStack是它的一个实现类。在客户端向程序发起请求时,Struts2会创建一个Action,同时创建一个OgnlValueStack的实例,OgnlValueStack贯穿整个Action的生命周期,Struts2将请求参数封装为一个对象放入到值栈中,并通过OGNL表达式访问该对象。OgnlValu

2017-09-14 15:39:52 282

原创 Struts(7)——OGNL表达式

OGNL的简介OGNL即Object Graphic Navigation Langauage,译为对象图导航语言,是一种功能强大的表达式语言,通过简单一致的语法,可以轻易地访问对象的属性、方法,遍历整个对象的结构图。Struts2 的默认表达式语言就是OGNL,它试图以OGNL代替原来的EL表达式语言,来实现界面数据的绑定,也就是将视图界面中的某个元素和模型层的某个对象关联在一起,以便修

2017-09-13 01:04:13 264

原创 Struts2(6)——Action传递参数

1. 将参数作为Action的成员变量在Action中给定一个私有属性,并实现其set、get访问器,然后即可直接接收请求中的参数。package com.imm.demo;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import java.util.Map;pu

2017-09-12 20:17:22 1518

原创 深入理解ThreadLocal

Struts2的笔记中,在学习关于调用ServletAPI的过程中,我们接触到关于如何获取ActionContext对象,它是通过ThreadLocal设定一个为线程所独享的对象。关于ThreadLocal,我有所疑惑,所以单独列出来探索一下。ThreadLocal的介绍ThreadLocal在java.lang包下,译为线程局部变量,它并不是为了解决多线程共享变量而存在的,而是为每个线程创建一个独

2017-09-11 17:05:38 448

原创 Struts(5)——调用ServletAPI

Struts2 中有一个类,叫做ActionContext,它是Action的上下文,Struts2中的Action就通过它来访问原生Servlet的API。该类中封装了所有用于访问Servlet的方法:1.static HttpServletRequest getRequest():获得HttpServletRequest对象;2.static HttpServletResponse g

2017-09-10 23:16:12 230

原创 Struts(4)——结果处理方式

结果的处理大致可以分为四种:转发、重定向、转发到Action以及重定向到Action。 这些方式可以在result标签中通过type属性进行配置。1. 转发默认的处理方式是转发ServletDispatcherResult 可以在package org.apache.struts2.dispatcher下查看到其源码,其内部doExcute(String finalLocation, Actio

2017-09-10 12:43:23 561

原创 Struts2笔记(3)——Struts的配置文件详解

基础配置1.<package/>元素:将Action配置封装,package中可以有多个Action;name:给予package一个名字作为标识;namespace:给Action的访问路径中定义一个命名空间;extends:继承一个指定包,这里可以先设定为”struts-default”,意为继承默认包,该包在Struts的默认配置文件struts-default.xml中可以找到,它为我

2017-09-09 14:10:19 512

原创 Struts2笔记(2)——Struts的请求流程

Struts2.0简介Struts2是阿帕奇旗下的一款流行的Web框架,基于MVC模式,成功结合了Webwoker和Struts1.X的优势。虽然名字上叫做Struts2.0,但除此之外它和Struts1.X的关系并不大。 Struts2.0的核心功能都是使用拦截器实现“值栈”这个概念,OGNL表达式和Struts2.0标签来解决应用程序数据,以及大量的注解,使得这个框架更易于使用。这些优势足以说

2017-09-07 17:25:49 391

原创 struts2笔记(1)——搭建一个HelloWorld

1.导入struts2相关依赖IDE使用IDEA2017 以下是maven的pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/

2017-09-07 00:52:59 323

原创 Hibernate(6)——注解的使用

Hibernate注解的简介Hibernate注解基于JPA2规范,并支持其所有功能,它的分类可以分为:类级别的注解,属性级别的注解以及映射关系的注解。所有JPA注释都在javax.persistence.*包中定义。 Hibernate EntityManager实现由JPA规范定义的接口和生命周期。使用注解的优势使用hibernate注释的核心优点是我们不需要创建映射(*.hbm.xml)文件直

2017-09-05 20:51:06 730

原创 Hiernate(5)——缓存策略的概述

缓存这里的缓存并不是说CPU的内存或者一二级缓存,而是指为了降低应用程序对物理数据源访问的次数从而提高运行程序的性能的一种策略。 ORM框架访问数据库的效率直接决定了应用程序的运行速度,因而提升和优化ORM的执行效率是至关重要的,Hibernate缓存是提升和优化Hibernate性能的重要手段,所以需要掌握Hibernate缓存的配置和使用。缓存的工作原理区别与不使用缓存时应用程序直接访问物理数

2017-09-05 17:16:56 338

原创 Hibernate(补充)——inverse和cascade属性的用法

<set/>标签中有一个<inverse/>属性,它是用来指定关联关系的控制方向的,默认由一方来进行维护,关联关系中,inverse=”false”的一方是主动方,主动方负责维护关联关系。 在上一篇中,我们设置了单向的多对一,上上篇中,设置了单向的一对多。但是在事务中。我们依然需要保存班级表、保存学生表这样的操作。有没有可能我们在保存班级表的同时,学生表的数据也自动保存。 当然是可以的。 这需

2017-09-04 22:02:24 448

原创 Java基础数据结构——链表与顺序表

抽象数据类型所谓抽象数据类型,就是带有一组操作的对象的集合。一般常有的操作是增(add)、删(delete)、包含(contains)、查(find)。我们常用的一些数据结构类型有表、栈、队列等等,这也是数据结构中最为基本的类型。这些东西老是没法熟记,要写的时候虽然也能憋出来,总觉得不够畅快。这里先说下表,表一般是两种类型,以数组为核心的顺序表和以抽象节点为核心的链表。先说下顺序表

2017-09-03 14:53:47 401

原创 Hibernate(4)——单向多对一关系

即在一方的表中的一个外键参照另一张表的主键。通过在多方持有一方的引用实现,需要在多方使用 配置。首先在多方的实体类中定义一个多方的引用。依然以上篇中的Student类为例//多方中定义一个一方的引用,并添加其setter和getterprivate Grade grade;然后修改其映射文件。xml version="1.0" encoding="UT

2017-09-02 01:06:29 204

原创 Java类的生命周期

1. Java虚拟机和程序的生命周期当通过java命令运行一个Java程序时,就启动了一个Java虚拟机进程。Java虚拟机进程从启动到终止时,称为Java虚拟机的生命周期。在以下情况下,Java虚拟机将结束生命周期:程序正常结束。程序在执行中因为出现异常或者错误而异常终止。执行了System.exit()。由于操作系统出现错误而导致Java虚拟机进程终止。 Java程序从开始运

2017-09-01 23:58:39 299

原创 Hibernate(3)——一对多映射关系

本篇为慕课网hibernate课程笔记。数据库中,可以通过添加外键的方式实现一对多的关系。Java程序中则可以通过集合的方式实现。举例:一个班级可以有多个学生,这就是一个一对多的关系,那么在一个学生表中,就可以将“班级”这个字段设置为外键。CREATE TABLE grade( gid INT PRIMARY KEY , gname VARCHAR(20) NOT NULL

2017-08-31 00:12:46 220

空空如也

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

TA关注的人

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