`
wangmengbk
  • 浏览: 292423 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SpingMVC请求流程以及搭建环境

 
阅读更多

Spring mvc 概述

1.Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet是 SpringMVC的总导演以及总策划,他负责截获请求并将其分派给相应的处理器进行处理。Spring MVC 框架包括注解驱动注释器、请求及响应的信息处理、试图解释、本地化解析、上传文件解析、异常处理以及变得标签绑定等内容。

2.Spring MVC 是基于Model2实现的技术框架。Model2是经典的MVC(Model,view,control)模型在web应用中的变体,这个改变主要源于HTTP 协议的无状态性。Model2的目的和MVC 一样。也是利用处理器分离模型、视图和控制,达到不同技术层级间松散层耦合的效果。提高系统灵活性、复用性、可维护性。

3.由于Spring MVC 是基于Model2 实现的框架。所以它底层的机制也是MVC,通过下图描述Spring MVC的整体架构。



 

 

从上图可以看出springMVC 从接受请求到返回响应,Spring MVC 框架的众多组件通力配合、各司其职,有条不紊的完成分内的工作。在整个框架中,DispatcherServlet 处于核心的位置,它负责协调和组织不同组件以完成请求处理并返回响应的工作。和大多数web MVC 框架一样,Spring MVC 通过一个前端Servlet接收所有的请求,并将具体工作委托给其他组件进行处理,DispatcherServlet 就是Spring MVC 的前端Servlet。下面我们对 SpringMVC处理请求的整体过程做一下高空俯瞰。

  • 1首先客户端发送HTTP请求,web应用服务器接收到这个请求,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web 容器将该请求转交给DispatcherServlet处理。
  • 2 DispatcherServlet接收到这个请求后,将根据请求的信息(包括URL,HTTP方法、请求报文头,请求参数、Cookie等)以HandlerMapping 的配置找到处理请求的处理器(Handler)。可将HandlerMapping 看成路由器控制器,将Handler看成目标主机。
  • 3 当 DispatcherServlet 根据HandlerMapping 得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用 Handler。HandlerAdapter 是Spring MVC 的框架接口,顾名思义,HandlerAdapter 是一个适配器,它用统一的接口对各种handler方法进行调用。
  • 4 处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView 包含了视图逻辑名和模型数据信息。
  • 5 ModelAndView 中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由 ViewResolver完成逻辑视图名到真实视图对象的解析工作。
  • 6 当得到真实的视图对象 View 后, DispatcherServlet就使用这个View 对象对ModelAndView中的模型数据进行视图渲染。
  • 7 最终客户端得当的响应信息,可能是一个普通的HTML页面,也可能是一个XML或JSON 串,甚至是一张图片或一个PDF文档等不同的媒体形式。

4.配置 DispatcherServlet 对象并进行初始化,可以在web.xml 进行如下配置信息进行初始化:

        也可以参考一下配置进行SpringMVC + ibatis 环境创建。

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="web" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>application</display-name>

 

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath*:com/wangmeng/**/server/META-INF/spring.xml,/WEB-INF/spring.xml</param-value>

</context-param>

<!-- 过滤器配置-->

 <filter>

<filter-name>encoding</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encoding</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

<filter-mapping>

<filter-name>framework</filter-name>

<url-pattern>*.do</url-pattern>

</filter-mapping>

 

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

                <description>Spring MVC 配置文件</description>

<param-name>contextConfigLocation</param-name>

<param-value>classpath*:com/wangmeng/**/server/META-INF/*-servlet.xml</param-value> 

  </init-param>

</servlet>

 

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

 

<!-- Welcome file lists -->

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

 

5.SpringMVC Servlet 配置文件(XXX-servlet.xml)

 

以下是XXX-servlet.xml 配置信息,对应web.xml 中的<init-param></init-param>配置信息。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                        xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context 

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/jee 

http://www.springframework.org/schema/jee/spring-jee-3.0.xsd

http://www.springframework.org/schema/tx 

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

http://www.springframework.org/schema/aop 

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!-- 对web包中的所有类进行扫描,已完成Bean创建和自动依赖注入的功能 -->  

    <context:component-scan base-package="com.wangmeng.dpap"/>

 <!-- 相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,

       配置一些messageconverter。即解决了@Controller注解的使用前提配置 

     -->  

    <mvc:annotation-driven />

<!-- 这里拦截器还有一种配置方法【针对路径进行配置】 推荐使用这个,方便直观-->  

   <!--  <mvc:interceptors>  

        <mvc:interceptor>   

            <mvc:mapping path="/springmvctest/*"/>  

            <bean  class="com.wangmeng.dpap.framework.springmvc.interceptor.ModuleInterceptor"></bean>  

        </mvc:interceptor>  

    </mvc:interceptors>   -->

<!-- 全局配置    --> 

    <mvc:interceptors>  

        <bean class="com.wangmeng.dpap.framework.springmvc.interceptor.ModuleInterceptor"></bean>  

        <!-- <bean class="com.deppon.dpap.framework.springmvc.interceptor.JSONInterceptor"></bean> --> 

    </mvc:interceptors> 

<!-- jsp页面解析器,当Controller返回XXX字符串时,先通过拦截器,然后该类就会在/WEB-INF/pages/目录下,查找XXX.jsp文件-->  

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  

        <property name="prefix" value="/WEB-INF/pages/"></property>  

        <property name="suffix" value=".jsp"></property>  

    </bean>  

</beans>

 

6.Spring.xml 配置文件 即在 web.xml 中配置<context-param></context-param> 初始化

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"

xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" 

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="

 http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/jee

http://www.springframework.org/schema/jee/spring-jee-3.0.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

<bean id="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />

<property name="url" value="jdbc:oracle:thin:@192.168.67.190:1521:dpap" />

<property name="username" value="bpapuser" />

<property name="password" value="bpapuser" />

</bean>

<!-- 数据连接管理 -->

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource" />

</bean>

<!-- 事务注解支持-->

<tx:annotation-driven transaction-manager="transactionManager" />

 

<!-- myBatis文件 -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="configLocation" value="/WEB-INF/ibatis.xml" />

<property name="mapperLocations"

value="classpath*:com/deppon/**/META-INF/ibatis/springmvc*.xml" />

<property name="dataSource" ref="dataSource" />

</bean>

<context:component-scan base-package="com.wangmeng" />

</beans>

 

 

  • 大小: 33.7 KB
分享到:
评论

相关推荐

    SpringMVC请求流程源码分析.doc

    ### SpringMVC请求流程源码分析 #### 一、SpringMVC使用与配置 ##### 1. 工程创建 为了构建一个支持SpringMVC框架的项目,首先需要创建一个Maven工程。在这个过程中,我们需要完成以下几个步骤: - **创建项目...

    spring4+springMVC+Mybatis项目搭建以及测试demo

    在本文中,我们将深入探讨如何搭建一个基于Spring4、SpringMVC和Mybatis的项目,以及如何进行测试。这个项目组合通常被称为“SSM”框架,是Java Web开发中的主流选择,提供了强大的依赖注入、MVC架构和持久层管理...

    springMVC 简单的环境搭建

    但作为初学者,理解并完成上述基本环境搭建和简单请求处理,就已经迈出了Spring MVC学习的第一步。随着经验的积累,可以逐渐深入学习Spring MVC的更多功能和最佳实践,提高开发效率和代码质量。

    Spring+SpringMVC+Hibernate框架搭建

    下面将详细介绍这三个框架以及如何搭建SSH整合环境。 首先,Spring是一个全方位的Java企业级应用开发框架,它提供了依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)、...

    Spring+SpringMVC+Mybatis简单搭建

    以上就是使用Spring、SpringMVC和Mybatis框架搭建项目的基本流程和主要知识点。在实际开发中,还需要考虑安全性、性能优化、异常处理等多方面的问题。理解并掌握这些框架的原理和使用方式,能够帮助开发者高效地构建...

    SpringMVC-SpringBoot项目搭建.docx

    Spring Boot则是一个简化Spring应用初始搭建以及开发过程的框架,它集成了许多默认配置,使得开发者无需过多的配置就能快速启动项目。 本文将指导您如何一步步地搭建一个基于SpringMVC的项目,然后将其转换为Spring...

    搭建springmvc环境源码.zip

    本教程将帮助你理解如何搭建一个Spring MVC的开发环境,并通过源码分析深入理解其工作原理。 首先,我们需要安装和配置Java Development Kit (JDK)。确保你的系统已经安装了JDK 8或更高版本,因为Spring MVC通常与...

    maven搭建SpringMVC+spring+ibatis

    首先,Maven是一个项目管理和综合工具,它通过一个配置文件(pom.xml)管理项目的依赖关系,构建流程,以及打包和部署等任务。使用Maven,你可以轻松地导入和管理所需的库,避免了手动下载和配置的繁琐过程。Maven的...

    spring+springmvc+hibernate框架搭建项目+jar包

    SpringMVC通过DispatcherServlet作为前端控制器,接收请求,分发到各个处理器(Handler),并最终将结果返回给客户端。 Hibernate是一个强大的ORM(Object-Relational Mapping)框架,它简化了数据库操作,通过映射...

    Spring+SpringMVC+Mybatis 基础环境搭建工程(带测试用例)

    它简化了从前端控制器到业务逻辑再到视图的请求处理流程。在这个工程中,SpringMVC负责接收HTTP请求,调用相应的服务层方法,然后返回响应数据。 3. **Mybatis**:Mybatis是一个持久层框架,它支持定制化SQL、存储...

    springMVC+hibernate框架搭建源码

    6. **Controller层**:Controller层接收SpringMVC分发的请求,调用Service层的方法,最后返回ModelAndView。 在MyEclipse中,你可以创建一个新的动态Web项目,导入SpringMVC和Hibernate的相关库,按照上述步骤进行...

    springmvc基础框架搭建

    首先,我们需要了解 Spring MVC 的核心组件和工作流程: 1. **DispatcherServlet**:它是整个 Spring MVC 框架的入口点,负责接收 HTTP 请求,然后根据请求信息找到对应的 Handler(控制器)进行处理。 2. **@...

    spring+springmvc+mybits+easyui+maven完整项目搭建

    在实际搭建过程中,首先需要配置Maven的环境,然后创建项目目录结构,并在pom.xml文件中定义项目依赖。接着,设置Spring的配置文件,包括bean的定义和数据源配置。之后,搭建SpringMVC的配置,包括视图解析器、拦截...

    Spring+SpringMVC+Mybatis+Maven搭建框架适合初学者拿来即用

    总结来说,Spring+SpringMVC+Mybatis+Maven的组合为初学者提供了一个强大且易上手的开发环境。它能够帮助新手快速掌握Java Web开发的基本流程,同时提供了扩展性和灵活性,便于应对复杂的应用场景。在实践中不断学习...

    SpringMVC+Hibernate+Jpa Maven环境搭建

    本篇将详细介绍如何利用Maven来搭建整合SpringMVC、Hibernate和JPA的开发环境。 首先,我们来看SpringMVC,它是Spring框架的一部分,专门用于处理Web请求。SpringMVC通过模型-视图-控制器(MVC)架构模式,使得业务...

    ssm(spring springmvc mybatis)框架搭建

    - 配置SpringMVC的`web.xml`,设置DispatcherServlet,以及配置SpringMVC的配置文件如`servlet-context.xml`,声明视图解析器、拦截器等。 - 配置MyBatis的`mybatis-config.xml`,包括数据源、事务管理器等,并...

    SpringMVC入门项目搭建JavaConfig配置方式(零XML)

    以上就是使用JavaConfig配置方式搭建的SpringMVC入门项目的基本流程。通过这种方式,我们可以更直观地理解和管理项目的配置,使得代码更加模块化,也更容易进行单元测试。在SpringMVCDemo项目中,你可以看到具体的...

    使用 eclipse oxygen maven 搭建 springmvc mybatis druid 的增删改框架代码

    在SpringMVC中,你可以定义控制器(Controller)来处理请求,模型(Model)来存储数据,以及视图(View)来展示结果。 `MyBatis` 是一个持久层框架,它简化了数据库操作,将SQL语句与Java代码分离,提供了动态SQL和...

    springmvc框架搭建,已测试

    在这个"springmvc框架搭建,已测试"的项目中,我们可以探索SpringMVC的搭建过程以及其核心组件和工作原理。 1. **SpringMVC的组成** - **DispatcherServlet**:作为前端控制器,它是SpringMVC的入口点,负责接收...

    maven+springMVC+mybatis框架搭建

    SpringMVC通过DispatcherServlet作为入口,负责接收请求并分发到相应的处理器。它支持多种视图技术,如JSP、FreeMarker、Thymeleaf等,并提供了数据绑定、模型验证、本地化等功能。使用注解如@Controller、@...

Global site tag (gtag.js) - Google Analytics