SpringMVC学习

来源:互联网 发布:python 游戏编程 编辑:程序博客网 时间:2024/05/19 20:48

学习参考:

http://www.iteye.com/blogs/subjects/springmvc-explore。

两种模型

我们现在讨论的SpringMVC和Struct2都是B/S模型,就是浏览器和服务器,J2EE表示层解决方案对应“请求--响应”,两大沟通角色:


由于这两大角色的承载载体和编程语言实现基础都不同,因而也就产生了两种截然不同的针对表示层的解决方案的设计思路: 

  • 以服务器端应用程序为主导来进行框架设计
  • 以浏览器页面组件(及其自身的事件触发模型)为主导来进行框架设计
业界对于上述这两种不同的设计模型也赋予了不同的名词定义:前一种被称之为MVC模型

后一种则被称之为组件模型,也有称之为事件模型。 

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响应程序大致应该包含的逻辑步骤: 

  • 步骤1 —— 对Http请求进行初步处理,查找与之对应的Controller处理类(方法)
  • 步骤2 —— 调用相应的Controller处理类(方法)完成业务逻辑
  • 步骤3 —— 对Controller处理类(方法)调用时可能发生的异常进行处理
  • 步骤4 —— 根据Controller处理类(方法)的调用结果,进行Http响应处理
所谓的程序化,实际上也就是使用编程语言将这些逻辑语义表达出来。在Java语言中,最适合表达逻辑处理语义的语法结构是接口,因此上述的四个流程也就被定义为了四个不同接口,它们分别是: 

  • 步骤1 —— HandlerMapping
  • 步骤2 —— HandlerAdapter
  • 步骤3 —— HandlerExceptionResolver
  • 步骤4 —— ViewResolver


SpringMVC的两个容器,首先spring框架有个容器,初始化这些service daos beans这些spring一般的东西,SpringMVC有一个自己的子容器,

但是以spring框架的容器为上下文,是子容器,初始化了SpringMVC这个框架需要的内容,一般就是一些组件,然后在DispatcherServlet指定默认行为,

初始化就完成了,可以用了。



0 0