Spring七大组件
核心容器(Spring core)
核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。BeanFactory使用依赖注入的方式提供给组件依赖。
Spring上下文(Spring context)
Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,如JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring面向切面编程(Spring AOP)
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring框架中。所以,可以很容易地使 Spring框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO模块
DAO模式主要目的是将持久层相关问题与一般的的业务规则和工作流隔离开来。Spring 中的DAO提供一致的方式访问数据库,不管采用何种持久化技术,Spring都提供一直的编程模型。Spring还对不同的持久层技术提供一致的DAO方式的异常层次结构。
Spring ORM模块
Spring 与所有的主要的ORM映射框架都集成的很好,包括Hibernate、JDO实现、TopLink和IBatis SQL Map等。Spring为所有的这些框架提供了模板之类的辅助类,达成了一致的编程风格。
Spring Web模块
Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web层使用Web层框架,可选的,可以是Spring自己的MVC框架,或者提供的Web框架,如Struts、Webwork、tapestry和jsf。
Spring MVC框架(Spring WebMVC)
MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的。Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器。Spring支持多种视图技术。
(1)九大内置对象:page(页面)、pageContext(页面上下文对象)、request(请求)、response(响应)、session(会话)、application(应用)、out(向外)、exception(异常)、config(配置)(必须会拼写)
(2)四大作用域:pageContext、request、session、application(必须会拼写)
(3)七大动作:include(包含)、useBean、param(参数)、forward(转向)、setProperty、getProperty
plugin动作:<jsp:plugin>:用于指定在客户端运行的插件(必须会拼写)
(4)三大指令:page、include、taglib
Spring mvc的运行原理
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。
过滤器是wed组件 在wed.xml里写 过滤的路径 底层原理用的是函数回调或者说是映射
拦截器是c层框架 在c层框架里的核心控制文件中写 拦截的是行为方法 底层原理是反射
Maven的坐标和依赖
Maven的坐标
Maven的仓库中拥有着无数的构件,每一个构件都是一个jar或者war等文件,如果没有坐标,那么我们将无法唯一标识该构件,结果就是Maven将无法帮助我们自动下载构件。所以,Maven定义了一组规则:世界上任何一个构件都可以使用Maven坐标来唯一标识。Maven坐标的主要元素包括groupId,artifactId,version,packaging(可选)和classifier(可选),通过这些元素,我们可以明确标识任何一个构件。
groupId:该元素定义了当前Maven项目隶属的实际项目,一般情况下该项元素都与公司域名相对应,比如com.taobao.
artifactId:该元素定义了实际项目中的一个Maven Module
version:该元素表示当前构件的版本,包括稳定(release)版本和测试(snapshot)版本
packaging:该元素定义Maven项目的打包方式,默认为jar,还有war和pom方式
classifer:该元素用来帮助定义构件输出的一些附属构件,例如通过配置插件,可以在打包的同时生成-javadoc.jar和sources.jar 等构件。
示例如下:
<groupId>com.baidu</groupId>
<artifactId>passport-agent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<package>jar</package>
<classifier>jdk15-javadoc</classifier>
Maven的依赖
依赖范围
Maven有如下6种依赖范围:
compile: 编译依赖范围(Default,大多数情况下我们都是在使用compile编译范围)
test: 测试依赖范围 (编译主代码和运行时无效)
provided: 已提供依赖范围(就是说在运行的时候容器已经给我们提供该依赖了,比如说servlet-api)
runtime: 运行时依赖范围
system: 系统依赖范围(生成的构建一般与本机系统绑定,不具备移植性不建议使用)
import: 导入依赖范围(将其它地方官依赖配置导入,后续讲到依赖管理dependencyManagement详细阐述)
定时任务实现的几种方式:
- Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。
- ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。
- Spring Task:Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。
- Quartz:这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。
什么是Oracle数据库的体系结构
Oracle服务器由Oracle数据库和Oracle实例组成,
物理结构:
q 数据文件用于存储数据库数据,如表、索引数据等
q 控制文件是记录数据库物理结构的二进制文件
q 日志文件记录对数据库的所有修改信息,用于故障恢复
逻辑结构:
q 表空间(Table Space):Oralce中,最大的逻辑存储结构是表空间。表空间和物理上的数据文件相对应
q 段(Segment)是一组盘区,这组盘区组成了被Oracle视为一个单位的数据库对象,比如表或索引。因此,段是数据库终端用户将处理的最小单位
q 区(Area):Oracle中,区是磁盘空间分配的最小单位
q 块(Block)是用来管理存储空间的最基本单位,也是最小的逻辑存储单位
q 模式对象(Model):表、视图、序列、存储过程、函数等
创建用户
create user myuser identified by 123456 |
授权用户:
grant create session,create table,unlimited tablespace to myuser; 1.5授权 命令:grant xxx权限 on Table to USER grant select,insert,update,delete,all on 表名 to 用户名 例:将test表的查询权限赋予tom这个用户 grant select on test to tom 撤销权限 revoke 赋予的权限 from 用户; |
Oracle数据类型包括
字符类型
1)CHAR 数据类型 固定字节长度 2000字节
2)VARCHAR2 数据类型 可变字节长度 4000字节
3)NVARCHAR2 数据类型 可变字符长度 2000字符
数值类型
1) 可以存储整数、浮点数和实数
2) 最高精度为 38 位
3) NUMBER [( p[, s])]
4) P表示精度,S表示小数点的位数
日期类型
1) DATE - 存储日期和时间部分,精确到整个的秒
2) TIMESTAMP - 存储日期、时间和时区信息,秒值精确到小数点后6位
数据结构的几种语言
数据查询语言DQL,
数据操纵语言DML,
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE
数据定义语言DDL,
1) 创建:creat
2) 更新:alter
3) 删除:drop
数据控制语言DCL。
1) grant:授权
TCL语言:
2) Commit:提交事务
3) Rollback:事务回滚