有的时候我一直在想,Spring到底是什么?Spring到底能干什么?我们为什么要用spring?我个人认为spring其实就是一个集成框架,他把一些基础的代码都给封装好了,我们只需要按照spring的一套规范去使用就好了。同时spring也是一个容器Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
其中最主要的就是ioc 依赖注入,控制反转。还有aop面向切面编程,这个在以后再去讨论。还有数据访问和集成,任何应用程序其核心就在于对于数据的访问和操作,数据有多种表现形式,如数据表,如xml,消息等,而每种数据又有每种不同的数据访问技术,如hibernate,mybatis等。这样操作起来就很麻烦,不利于整合。而spring为我们提供了一套基于Dao的开发抽象层。它把我们所需要的整合技术都封装到里面,还把所有的访问数据的检查时异常转换为非检查时异常,在Dao层有一套完整的异常体系。同时spring对于数据访问层的各种模板化技术进行了薄层封装。讲模板化的代码给隐藏起来,简化我们的代码,这样spring就建立起来了数据形式和访问技术无关的dao层,借助aop技术,spring提供了声明事务话功能。
Web及远程访问,spring提供了一套类似于struts的mvc的框架,叫做springmvc。他对web的访问和控制进行了很多封装,我们可以通过注解的方式来调用,他也对很多service框架进行了整合,使用springmvc会大大简化我们的开发。
现在来做一个登陆功能来解析spring。附上一张自己理解的springmvc流程图先
下面就以一个登陆系统来理解springmvc的一些简单原理的工作流程
首先得在web.xml里面注册一个springmvc的前端控制器
Servelt DispatcherServlet 如果我们不使用自定义的名字和位置的话,他默认是在web-inf下面的"servlet-name"+ "-servlet.xml"文件。
然后我们让这服务器启动的时候自动去加载这个类
加载到servlet拦截器的时候,他会去检查里面的代码,看看有没有错误。
接下来要写拦截器里面的配置代码
1
2
3
第一个段代码主要是开启springmvc的注解,让他去自动扫描包里面带有注解的类,如果扫描到了这个包里面的类,他就会去自动装载这些类,完成它的创建。
第二段代码主要是配置我们的视图解析器,prefix会去解析请求的视图,而suffix会解析返回的结果视图一般是进行拼装返回结果的。
第三段代码,
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
现在我们来写一个视图层,让他发送一个请求;
点击提交按钮会经过如下几步