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>
相关推荐
第三部分是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和...
理解MVC设计模式 了解SpringMVC的架构以及请求流程 掌握SpringMVC开发环境搭建 会使用springMVC获取前台数据和灵活的返回结果
OA( Office Automation System)办公自动化系统是一个企业用来管理日常事务的系统,它一般用来管理各种流程(报销、请假. . .)审批,通讯录、日程、文件管理、通知、公告等功能。OA系统可以实现更加简单、规范...
构建的maven-spring-springmvc-mybatis-mysql-jetty(tomcat)小demo,可以在jetty和tomcat上跑起来,实现了最基本的请求响应的一整套流程。留存一下,为以后搭建新项目用。
技术实现上,后端使用SpringBoot简化开发流程和配置工作,SpringMVC负责请求响应周期,MyBatis或Hibernate作为ORM工具与MySQL或其他数据库交互。前端可能采用Angular、React或Vue.js等现代JavaScript框架构建一个...
源码介绍:本项目采用了SSM框架进行开发,包括Spring作为IOC容器管理,SpringMVC作为MVC框架处理请求和响应,以及MyBatis作为持久层框架进行数据库操作。同时,项目还使用了Thymeleaf作为模板引擎,以实现动态页面...
SpringMVC负责处理请求和响应,可以实现灵活的URL映射和请求处理。MyBatis或Hibernate可以简化数据库操作,提供了方便的ORM(对象关系映射)功能,使得数据的持久化变得简单和高效。 通过以上技术选择和框架搭建,该...
在程序开发上,我们采用SSM框架搭建系统的后端架构,利用SpringMVC处理前端请求,Spring管理业务逻辑,MyBatis实现与数据库的交互。同时,我们结合前端技术,设计了直观友好的用户界面,使用户能够方便地进行商品...
源码:本资源包含完整的医院门诊管理系统源代码,包括后端的Java代码(使用Spring、SpringMVC和MyBatis框架编写)、前端的Vue.js代码以及数据库设计文件。这些代码将帮助您快速搭建一个基本的门诊管理系统。部署说明:...
本项目提供了详细的部署说明文档,包括数据库安装与配置、项目导入与配置、服务器环境搭建等步骤。通过按照部署说明进行操作,可以轻松地在本地或云服务器上部署运行本项目。 4. 演示视频: 本项目提供了一段演示...
本项目提供了详细的部署说明文档,包括数据库安装与配置、项目导入与配置、服务器环境搭建等步骤。通过按照部署说明进行操作,可以轻松地在本地或云服务器上部署运行本项目。 4. 演示视频: 本项目提供了一段演示...
在程序开发上,我们利用SSM框架进行后端架构的搭建,通过SpringMVC处理前端请求,Spring管理业务逻辑,MyBatis实现与数据库的交互。平台提供丰富的在线课程和学习资源,支持视频播放、课程下载、学习进度跟踪等功能...
在程序开发上,我们采用SSM框架搭建后端架构,通过SpringMVC处理前端请求,Spring管理业务逻辑,MyBatis实现与数据库的交互。系统实现了学生信息管理、课程安排、成绩录入与查询、考试安排与通知等功能,并支持数据...
在程序开发上,我们利用SSM框架搭建起稳定可靠的后端架构,通过SpringMVC处理前端请求,Spring管理业务逻辑,MyBatis负责与数据库进行交互。系统实现了作业发布、作业提交、作业批改、成绩查看等功能,并支持多种...
在程序开发上,我们利用SSM框架搭建起稳定可靠的后端架构,通过SpringMVC处理前端请求,Spring管理业务逻辑,MyBatis负责与数据库进行交互。系统实现了用户注册登录、健身课程浏览与预约、健身计划制定与跟踪、社区...
2、后端:使用SpringBoot搭建的Maven多模块,并使用SpringSecurity作为安全框架、Jwt用于生成token令牌、MybatisPlus+SpringMVC+Redis+RabbitMQ+Activiti7 3、数据库用的是mysql。 4、缓存中间件:redis、缓存...
部署说明:提供了详细的部署说明,包括环境配置、依赖安装等,帮助用户快速搭建和运行项目。 总之,本资源提供了一个完整的考研论坛设计项目,采用了SSM框架进行开发,具有丰富的功能和良好的用户体验。无论是对于...
在程序开发上,我们利用SSM框架搭建起稳定可靠的后端架构,通过SpringMVC处理前端请求,Spring管理业务逻辑,MyBatis负责与数据库进行交互。系统实现了客户信息管理、销售机会跟踪、客户服务支持等核心功能,支持...
技术架构上,后端使用SpringBoot简化了项目搭建和配置工作,SpringMVC用于处理请求和响应流程,MyBatis作为ORM框架与数据库交互,保障数据的一致性和安全性。前端可能采用Angular、React或Vue.js等现代JavaScript...
Spring框架负责业务逻辑的处理,SpringMVC负责请求的接收与响应,MyBatis则负责数据库的交互操作,三者结合,形成了一套高效的开发流程。同时,系统采用了前后端分离的设计思想,前端使用HTML、CSS、JavaScript等...