Spring MVC(一)Spring MVC的原理

  1、Spring MVC的目的

  构建向Spring框架那样灵活和松耦合的Web应用程序。

  2、Spring MVC中如何处理Request?

  每当用户在Web浏览器中点击链接或者提交表单时,Request就开始工作了。

  从离开浏览器开始到获取响应返回,Request会在经历过的每一站留下一些信息,也会获取一些信息。

  DipatcherServlet——前端控制器Servlet,负责将Request发送给Spring MVC的Controller;

  Handler Mapping——处理器映射,应用中会有多个控制器,DipatcherServlet需要知道发送给哪个控制器,所以会查询一个或多个HandlerMapping确定下一站。而Handler Mapping会根据Request所携带的URL信息进行决策;

  Controller——控制器,Request到控制器后,会得到用户提交的信息,然后处理这些信息。实际中,设计良好的控制器本身只处理很少的工作,而是将业务逻辑委托给一个或者多个服务对象进行处理。控制器做的最后一件事就是把模型数据打包~~

  Model——模型,是控制器在完成逻辑处理后,会产生的一些信息,这些信息需要返回给用户并在浏览器上显示。

  View Resolver——视图解析器,原始模型产生后,需要通过View进行必要的格式化。View Resolver就是根据得到的逻辑视图名匹配一个View,告诉DipatcherServlet。DipatcherServlet知道由哪个视图渲染结果,Request的任务基本完成,还有最后一站去完成视图的实现。

  View——视图,Request在这里交付数据模型,完成任务。View使用模型数据渲染输出,这个输出通过Response对象传递给客户端。

  3、传统方式,在Web应用程序中配置DipatcherServlet

  传统方式中,DipatcherServlet这样的Servlet会配置在web.xml文件中,web.xml会放到应用的war包中。

<!--配置springmvc DispatcherServlet(中心控制器)-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <!--Sources标注的文件夹下需要新建一个spring文件夹-->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:spring/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

  4、新方式基于Servlet 3规范和Spring 3.1,可以使用Java将DipatcherServlet配置在Servlet容器中,而不再使用web.xml。(同时使用也没问题)

  了解凡是扩展(继承)了AbstractAnnotationConfigDipatcherServletInitializer的类,都会自动配置DipatcherServlet和Spring的应用上下文,Spring的应用上下文会位于应用程序的Servlet上下文中。

  这个类中三个方法:

  String[] getServletMappings()、getRootConfiClasses()、getServletConfigClasses().(后两个返回类,即xxx.class)

  5、两个应用上下文(基于Java配置)

  当DipatcherServlet启动时,它会创建Spring应用上下文,并加载配置文件or配置类中所声明的bean。

  在Spring Web应用中,通常会有另外一个应用上下文,这个由ContextLoaderListener(Servlet监听器)创建。

  我们希望DipatcherServlet加载包含web组件的bean,如控制器、试图解析其以及处理及映射,而ContextLoaderListener加载应用中的其它bean,这些bean通常是驱动应用后端的中间层和数据层组件。

  实际上,AbstractAnnotationConfigDipatcherServletInitializer会同时创建DipatcherServlet和ContextLoaderListener。

  6、启用Spring MVC

  一,XML配置中,使用<mvc:annotation-driven>启用注解驱动的Spring MVC;

  二,基于Java进行配置,即创建一个Java类进行配置。

原文地址:https://www.cnblogs.com/bigbigbigo/p/8375744.html

时间: 2024-10-13 16:35:16

Spring MVC(一)Spring MVC的原理的相关文章

spring mvc + mybatis + spring aop声明式事务管理没有作用

在最近的一个项目中,采用springMVC.mybatis,发现一个很恼人的问题:事务管理不起作用!!网上查阅了大量的资料,尝试了各种解决办法,亦未能解决问题! spring版本:3.0.5 mybatis版本:3.2.2 1.applicationContext.xml配置: mvc + mybatis + spring aop声明式事务管理没有作用" title="spring mvc + mybatis + spring aop声明式事务管理没有作用">2.spr

Spring MVC&Spring Data JPA过滤数据的另一种API

这就是我滚动的方式2014年3月23日在春天mvc | 规格 | 春季资料 | jpa | 参数解析器 | java | 搜索 | 搜索 | 滤波 Spring MVC&Spring Data JPA过滤数据的另一种API 更新 自从我写这篇文章以来已经有一段时间了.我仍然认为它值得阅读,但请务必检查Github页面,因为所描述的库已经发展,并已成为Maven Central中的一个完整的开源项目. 我坚信,一个卓越的框架最终会成为一种(领域特定的)语言. 我已经使用了Spring MVC好几年

Spring MVC 和 Spring 总结

1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测.事务管理.日志记录等. 3). 声明式事务的支持 4). 方便集成各种优秀框架 5). 降低Java EE API的使用难度 如对JDBC,JavaMail,远程调用等提供了简便封装 2. 什么是IoC,为什使用IoC ?

java框架整合例子(spring、spring mvc、spring data jpa、hibernate)

这是自己参考springside开源项目整合的框架,主要整合了spring.spring mvc.spring data jpa.hibernate这几个框架,对于这几个框架其中感觉比较舒服的还是spring data jpa这个框架,这个框架在写dao类的时候,只需要写一个接口声明,spring data jpa会自动的实现其实现类,使用起来比较方便,至于详细的使用方法还请自己百度吧,因为我也不清楚.个人感觉还有一个比较不错的地方就是能够打印sql语句,都知道hibernate打印的sql语句

spring mvc和spring配置扫描包问题

spring mvc和spring俩配置文件,其中都要配置扫描包. <context:component-scan base-package="com.controller" /> <context:component-scan base-package="com.service;com.dao" /> 理解很简单啦 spring负责扫描整个程序的bean,包括service/repository等bean.所以spring要扫描servic

Spring MVC 和 Spring 总结 (转载自留)

Spring MVC 和 Spring 总结 1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测.事务管理.日志记录等. 3). 声明式事务的支持 4). 方便集成各种优秀框架 5). 降低Java EE API的使用难度 如对JDBC,JavaMail,远程调用等提供了简便

Struts2 MVC 同 Spring MVC 的比较

1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了. 2.由上边原因,SpringMVC的方法之间基本上独立的,独享request r

java(样品集成框架spring、spring mvc、spring data jpa、hibernate)

这是你自己的参考springside集成框架的开源项目.主要的整合spring.spring mvc.spring data jpa.hibernate几个框架,对于这些框架中仍然感觉更舒适spring data jpa该框架,该框架编写dao上课时间,只需要编写一个接口声明,spring data jpa会自己主动的实现事实上现类,使用起来比較方便,至于具体的用法还请自己百度吧,由于我也不清楚. 个人感觉另一个比較不错的地方就是可以打印sql语句,都知道hibernate打印的sql语句并不会

Spring 学习6 -Spring MVC-2 (Spring MVC讲解)

在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简化它的配置. 目录 MVC框架是什么Dispatcher Servlet(Spring控制器)Spring入门示例运行时依赖库web.xml和spring-servlet.xml文件配置请求控制器EmployeeController.java视图模型EmployeeVO.javaDao类业务层类视图

Struts的MVC和Spring的MVC的区别

最近才发现spring也能实现MVC,于是在网上找了找相关介绍: 当初选框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢 不用不知道一用就发现开发效率确实比struts2高 我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置 spring3 mvc可以认为已经100%零配置了(除了配置springmvc-servlet.xml外) 比较了一下strus2与spring3 mvc的差别 ===================