学习参考:
http://www.iteye.com/blogs/subjects/springmvc-explore。
由于这两大角色的承载载体和编程语言实现基础都不同,因而也就产生了两种截然不同的针对表示层的解决方案的设计思路:
后一种则被称之为组件模型,也有称之为事件模型。
SpringMVC 使用方法参数进行数据映射,Struct2使用类内部属性进行请求映射
SpringMVC映射使用注解,更简单一些,Struct还需要一个XML文件配置
MVC模型的各种形态
MVC模型是一种以服务器响应程序(也就是Controller)为核心进行程序设计的,因而所有的MVC框架的历史发展进程实际上是一个围绕着Controller不断进行重构和改造的过程
Servlet是MVC模型最为基本的表现形态
Servlet是基础,jsp也是个servlet。但是这个对于复杂的情况还是有点麻烦的,所以有了框架,封装。
HttpServletRequest对象 —— 主要用于处理整个Http生命周期中的数据。
HttpServletResponse对象 —— 主要用于处理Http的响应结果。
原生的servlet需要这个两个对象,Struct1也需呀,不过到了Struct2就不用了。
Structs2的贡献:
ThreadLocal模式。使得Controller成为一个线程安全的对象被Servlet模型所调用,这也就突破了传统Servlet体系下,Servlet对象并非一个线程安全的对象的限制条件。
传统servlet的问题是,请求-响应映射关系全部在web.xml中,会造成xml不断膨胀。
springMVC开始开始,先写死了处理的servlet,就是DispatcherServlet,然后还需要解决的问题
(1)能够根据一定的规则把不同的Http请求发送到处理的servlet对象上去
(2)核心servlet要建立一套完整的对于所有Http请求的规范化处理流程
规范化:
处理流程规范化是目的,对于处理过程的步骤划分和流程定义则是手段。因而处理流程规范化的首要内容就是考虑一个通用的Servlet响应程序大致应该包含的逻辑步骤:
SpringMVC的两个容器,首先spring框架有个容器,初始化这些service daos beans这些spring一般的东西,SpringMVC有一个自己的子容器,
但是以spring框架的容器为上下文,是子容器,初始化了SpringMVC这个框架需要的内容,一般就是一些组件,然后在DispatcherServlet指定默认行为,
初始化就完成了,可以用了。