《Spring实战》学习笔记
captxb
这个作者很懒,什么都没留下…
展开
-
chater01_Spring之旅_1_Spring容器
在基于Spring的应用中,对象生存于Spring容器中Spring自带多种容器实现,可以分为 bean工厂(org.springframework.beans.factory.BeanFactory) 和 应用上下文(org.springframework.context.ApplicationContext) 两大类。应用上下文更受欢迎使用应用上下文(1) Annotati...原创 2019-02-21 14:48:57 · 92 阅读 · 0 评论 -
chapter07_SpringMVC的高级技术_1_SpringMVC配置的替代方案
(1) "…/第五章 构建Spring Web应用程序/Spring MVC起步.md"中写过,配置DispatcherServlet只需要扩展 AnnotationConfigDispatcherServletInitializer这个类,并重写3个方法(2) 重载 customizeRegistration(Dynamic registration)方法,可以对DispatcherSer...原创 2019-02-23 09:26:42 · 133 阅读 · 0 评论 -
chapter07_SpringMVC的高级技术_2_处理Multipart形式的数据
multipart格式的数据会将一个form拆分成多个part,每个part对应一个输入域(1) Spring中解析Multipart交给了MultipartResolver接口的实现类(2) Spring内置了 MultipartResolver的实现类, CommonsMultipartResolver 和 StandardServletMultipartResolver,更优...原创 2019-02-23 09:26:49 · 165 阅读 · 0 评论 -
chapter07_SpringMVC的高级技术_3_处理异常
无论在服务器端的程序是否出现异常,有一个request过来时,总会有一个response响应回去。当内部不做任何处理时,如果出现异常,就会映射成 500 Internal Server Error有时,由于路径错误等问题造成了空指针,产生NullPointerException,如果不做处理,也会输出 500 错误;而事实上这是由于没有找到资源文件造成的。我们希望它输出404 Not F...原创 2019-02-23 09:26:56 · 72 阅读 · 0 评论 -
chapter07_SpringMVC的高级技术_4_跨重定向请求传递数据
处理完Post请求后,一般要进行重定向。防止因为浏览器刷新或回退时重新执行Post请求使用转发forward时,由于控制器方法和视图处理的是同一个request,所以转发的过程中,request的属性得以保存控制器方法中的Model对象最终是以请求参数的形式复制到请求中的,因此发生重定向时,不能用Model传递数据常用的跨重定向传递数据的方式有2种(1) 通过URL模板以_...原创 2019-02-23 09:27:03 · 85 阅读 · 0 评论 -
chapter09_保护Web应用_2_选择查询用户详细信息的服务
有的时候需要对用户的信息进行存储,以便判断登录进系统时的权限。我们需要的是__用户存储__,在进行认证决策的时候,进行检索Spring Security内置了了多种数据存储方式来认证用户,包括__内存__、关系型数据库、__LDAP__等使用基于内存的用户存储(1) 适用于开发、测试的场景,数据量小(2) 要重载 WebSecurityConfigurerAdapter的con...原创 2019-02-23 09:24:12 · 108 阅读 · 0 评论 -
chapter09_保护Web应用_3_拦截请求
需求:某些请求需要进行认证,某些请求需要具备特定权限的用户才能访问……对每个请求进行细粒度的安全性控制的关键是__重载configure(HttpSecurity http)方法__(1) 示例 SecurityConfig.java @Configuration @EnableWebMvcSecurity public class SecurityConfig exte...原创 2019-02-23 09:24:05 · 115 阅读 · 0 评论 -
chapter09_保护Web应用_4_认证用户
添加自定义的登录页(1) 示例login.html <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> ... <div id="content">原创 2019-02-23 09:23:57 · 115 阅读 · 0 评论 -
chapter09_保护Web应用_5_保护视图
之前的种种操作都是为了不要让某些没有权限的用户看到某个页面,接下来要做的是这些用户能看到页面,但是看不到页面的全部。即,页面中的某些部分根据用户有无权限决定是否渲染JSP的视图保护方案(1) 声明<%@ taglib prefix=“security” uri=“http://www.springframework.org/security/tags” %>(2) 标签...原创 2019-02-23 09:23:48 · 100 阅读 · 0 评论 -
chapter10_通过Spring和JDBC征服数据库_1_Spring的数据访问哲学
当开发Spring应用的__持久层__时, 会有多种选择:JDBCHibernateJava持久化API其他持久化框架NoSQL等数据访问的功能放到一个或多个专注于此任务的组件中, 这样的组件称为__DAO__或__Repository__ 服务对象 -----> Repository接口 | ...原创 2019-02-23 09:23:40 · 125 阅读 · 0 评论 -
chapter10_通过Spring和JDBC征服数据库_2_配置数据源
在声明模板和Repository之前, 我们需要先在Spring中配置一个数据源用于数据库连接Spring提供了多种配置数据源bean的方式(1) JDBC驱动程序定义的数据源(2) JNDI查找的数据源(3) 连接池的数据源(4) 嵌入式数据源使用JNDI数据源 P294使用连接池数据源 P295基于JDBC驱动的数据源(1) 种类1° DriverMan...原创 2019-02-23 09:23:32 · 85 阅读 · 0 评论 -
chapter10_通过Spring和JDBC征服数据库_3_在Spring中使用JDBC
JDBC的__优势__(1) 不需要掌握其他查询语言, 建立在SQL之上(2) 可以在比较底层处理数据, 便于对数据访问进行性能调优失控的JDBC代码(1) 如果直接使用JDBC提供的操作数据库的API, 那么总是要写很多"模板代码": 建立连接、 准备语句、 关闭资源、 catch异常(2) 这些代码都是必要的, 否则会有资源泄漏的隐患使用JDBC模板(1) Sprin...原创 2019-02-23 09:23:25 · 137 阅读 · 0 评论 -
chapter06_渲染Web视图_4_使用Thymeleaf
JSP的问题(1) JSP及其标签库缺乏良好的格式(2) JSP与Servlet紧耦合,应用场景受限Thymeleaf(1) 原生模板,不依赖标签库(2) 不仅限于Servlet配置Thymeleaf视图解析器(1) 需要添加3个bean:ThymeleafViewResolver(将逻辑视图名称解析为Thymeleaf模板视图)、SpringTemplateEngine...原创 2019-02-23 09:26:34 · 206 阅读 · 0 评论 -
chapter06_渲染Web视图_3_使用Apache Tiles视图定义布局
需求:为所有的页面定义一个通用的头部和底部(例如copyright)方法:使用布局引擎Apache Tiles,Spring提供视图解析器TilesViewResolver用于支持Apache Tiles配置Tiles视图解析器(1) 需要添加几个Bean示例WebConfig.java @Configuration @EnableWebMvc @ComponentS...原创 2019-02-22 15:15:20 · 131 阅读 · 0 评论 -
chapter06_渲染Web视图_2_理解视图解析
控制器和视图之间的唯一联系应该是模型Model中的数据,其他方面应该解耦视图的基本接口是 ViewResolver和ViewViewResolver.java public interface ViewResolver { View resolveViewName(String viewName, Locale locale) throws Exception; }...原创 2019-02-22 15:14:49 · 108 阅读 · 0 评论 -
chapter02_装配Bean_1_装配Bean
依赖注入对象的依赖关系由系统中负责协调各个对象的__第三方组件(Spring)__在创建时进行设定。一个对象只通过接口来表明依赖关系,对象会在运行期被赋予它们所依赖的对象,而不需要主动获得装配(1) 定义创建应用对象之间的协作关系(2) 装配机制1 自动2 Java Config 配置类3 Xml(3) 优先级自动 > Java Config > Xml 配...原创 2019-02-21 15:52:15 · 86 阅读 · 0 评论 -
chapter03_高级装配_4_bean的作用域
bean的作用域一共有 4种(1)单例: 整个应用中,只创建一个bean的实例(默认)(2)原型: 每次注入或者通过应用上下文获取时,都创建一个新实例(ConfigurableBeanFactory.SCOPE_PROTOTYPE)(3)会话session: 为每个会话创建一个bean实例(WebApplicationContext.SCOPE_SESSION)(4)请求request...原创 2019-02-21 16:34:50 · 90 阅读 · 0 评论 -
chapter03_高级装配_2_Profile与条件化Bean
开发和部署可能会使用不同的数据库,Profile就在解决这个问题通过配置 profile bean,Spring可以在运行时确定使用哪个beanJava Config配置@Profile(“xxx”)示例 @Configuration public class DataSourceConfig { @Bean @Profile("dev") public ...原创 2019-02-21 16:37:14 · 95 阅读 · 0 评论 -
chapter03_高级装配_3_运行时值注入
目标:避免硬编码,通过运行时读取配置文件的值确定Bean的构造器或setter参数,而非在Bean的类中写硬编码代码,实现解耦运行时求值的方式(1) 从外部 properties文件直接读(2) 属性占位符 ${ … }(3) Spring EL #{ … }属性文件(1) 属性文件放在 src/main/resources 目录下示例 disc.title=Sgt....原创 2019-02-21 16:42:25 · 79 阅读 · 0 评论 -
chapter04_面向切面的Spring_1_基本概念
横切关注点散布于应用中多出的功能,例如日志、安全等功能。这些功能应该与应用的业务逻辑分离。让横切关注点和业务逻辑相分离是面向切面编程(AOP)要解决的问题切面实现了__横切关注点__的类。我们可以通过外部声明的方式决定__切面__在何处、何时应用,而受影响的类本身并不知情。通知(1) 描述了__切面完成的工作__ 和 何时执行工作(2) 何时执行工作一共有5种情况1 前置...原创 2019-02-22 09:39:36 · 91 阅读 · 0 评论 -
chapter04_面向切面的Spring_2_切点
Spring AOP 中,使用AspectJ的切点表达式语言来定义切点,但是只使用一部分,因为Spring不支持字段级别的切面,而AspectJ支持常用切点指示器execution()arg()within()编写切点(1) 示例 execution(* concert.Performance.perform(..))(2) 说明第一个*代表返回任意类型中间的 ...原创 2019-02-22 09:47:27 · 88 阅读 · 0 评论 -
chapter04_面向切面的Spring_3_使用JavaConfig创建切面
添加 @Aspect注解,代表一个类是一个切面示例 @Aspect public class Audience { ... }通知的时刻有5种,详见"基本概念.md"示例 @Aspect public class AroundAudience { @Around("execution(* com.springinaction.spring...原创 2019-02-22 10:02:12 · 77 阅读 · 0 评论 -
chapter04_面向切面的Spring_4_使用Xml创建切面
首先要在头部添加aop命名空间 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2019-02-22 10:03:59 · 81 阅读 · 0 评论 -
chapter05_构建Spring Web应用程序_1_Spring MVC起步
SpringMVC中请求和响应的过程(1) 浏览器 --请求–> DispatcherServlet(2) DispatcherServlet: 查询 处理器映射(3) DispatcherServlet --请求–> 某个具体的控制器(4) 控制器 --模型、视图名–> DispatcherServlet(5) DispatcherServlet调用__视图解析...原创 2019-02-22 14:40:18 · 189 阅读 · 0 评论 -
chapter05_构建Spring Web应用程序_2_基本控制器
控制器的类上方要添加 @Controller 注解用于声明,@Controller是@Component的子注解,便于自动扫描 @ComponentScan@RequestMapping注解(1) 可以添加在控制器的类上方,也可以添加在方法上方。当控制器在类上添加@RequestMapping注解时,这个注解会应用到控制器的所有方法上(2) value属性用于匹配路径,里面可以包含一...原创 2019-02-22 14:47:07 · 81 阅读 · 0 评论 -
chapter05_构建Spring Web应用程序_3_接受请求的输入
接受请求的输入在SpringMVC中一共有__3种__方式(1) 查询参数(2) 路径参数(3) 表单参数处理查询参数(1) 在url中添加查询参数示例 "/spittles?max=238900&count=50"(2) 处理方式:添加__@RequestParam__注解示例 @Controller @RequestMapping("/spittl...原创 2019-02-22 14:57:17 · 118 阅读 · 1 评论 -
chapter06_渲染Web视图_1_创建JSP视图
通常将JSP文件放在 /WEB-INF目录下,防止对它的直接访问InternalResourceViewResolver是JSP的视图解析器,它遵循一种约定,会在视图名上添加前缀和后缀,进而定位JSP文件的位置(1) JavaConfig @Configuration @EnableWebMvc @ComponentScan("spittr.web") public c...原创 2019-02-22 15:14:14 · 94 阅读 · 0 评论 -
chapter09_保护Web应用_1_Spring Security简介
安全性是绝大多数应用的一个重要__切面__。Spring Security是一个安全框架,它基于Spring AOP和Servlet中的Filter过滤Web请求(1) Spring Security借助一系列Servlet Filter提供各种安全性功能(2) 但是我们只需要配置一个Filter,当我们启用Web安全性的时候,会自动创建这些Filter(3) web.xml配置...原创 2019-02-23 09:26:23 · 123 阅读 · 0 评论