SpringMVC是Spring框架的一个模块,无需通过中间层整合在一起。
SpringMVC是一个基于MVC设计模式web框架,MVC-model-view-controller:MVC将服务器端分为M、V、C三个组件,各模块负责各自的业务,实现了数据、业务逻辑和视图显示的分离。使软件模块化。model处理数据属于业务逻辑,controller完成数据和业务的调度,view完成视图显示。

SpringMVC的几个重要组件:
DispatcherServlet:前端控制器,主要是接收前端数据,通过HandlerMapping查找相应的Handler(通过HandlerAdapter适配)。DispatcherServlet将数据调度到相应的Handler执行。Handler(即SpringMVC中的Controller的实例?)执行得到ModelAndView,返回给DispatcherServlet。然后DispatcherServlet调用ViewResolver进行视图解析,ViewResolver解析完成得到View返回给DispatcherServlet,最后DispatcherServlet渲染数据到JSP/JSTL等返回给客户。
HandlerMapping映射器:根据请求的url查找Handler。
HandlerAdapter适配器:通过适配器DispatcherServlet无需实现所有的Handler的调用规则,只需执行对HandlerAdapter的调用。按照特定规则(HandlerAdapter要求的规则)去执行Handler
处理器Handler(需要攻城狮开发):编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行HandlerHandler。是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要攻城狮根据业务需求开发Handler
视图解析器ViewResolver(不需要攻城狮开发),由框架提供:进行视图解析,根据逻辑视图名解析成真正的视图(view)。ViewResolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
视图View(需要攻城狮开发jsp...)

xml配置方式的SpringMVC的开发:
1、在web.xml中配置前端控制器(DispatcherServlet)
<servlet>
    <!--   配置前端控制器(DispatcherServlet)  -->
    <!--   配置name&class   -->
    <!--   <init-param>是SpringMVC配置文件在web.xml的映射  -->
    <!--   <servlet-mapping>中将所有的.action结尾的url交给DispatcherServlet解析  -->
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <!-- contextConfigLocation:指定springmvc配置的加载位置,如果不指定则默认加
           载WEB-INF/servlet名称—servlet.xml(springmvc-servlet.xml)
     -->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!-- load-on-startup:表示servlet随服务启动; -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!--
          第一种:*.action 或者 *.do,访问以.action或*.do结尾 由DispatcherServlet进行解析
          第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析
          使用此种方式可以实现 RESTful风格的url
          第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,
          仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错。
   -->
    <url-pattern>*.action</url-pattern>
</servlet-mapping>
<!-- springMvc前端控制器配置 -->
2、配置Spring MVC的配置文件
Spring MVC的配置文件由<servlet><init-param></init-param></servlet>指定
在springmvc中配置处理器适配器
<!-- 处理器适配器 所有处理器适配器都实现 HandlerAdapter接口 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
3、开发handler(及Controller)
需要实现Controller(com.springmvc.controller)接口实现handleRequest方法:方法原型:ModelAndView handleRequest(HttpServletRequest req,
HttpServletResponse res) throws Exception
返回ModelAndView接口
4、配置Handler
      <!-- 配置Handler -->
    <bean id="itemsController1" name="/queryItems_test1.action" class="com.springmvc.controller.ItemsController01" />

5、配置视图解析器
              <!-- 视图解析器   解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包   -->
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <!-- 配置jsp路径的前缀 -->
              <property name="prefix" value="/WEB-INF/jsp/"/>
              <!-- 配置jsp路径的后缀 -->
              <property name="suffix" value=".jsp"/>
          </bean>
6、配置HandlerMapping:一个映射器可以有多个Url和Controller的映射,也可同时存在多个HandlerMapping映射器,url和Controller是一对一的关系,而Controller与url可以是一对多的关系。Controller可以处理多个url请求,url要指定一个Controller来执行,否则引起混乱。
       <!--简单url映射  -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <!-- 对itemsController1进行url映射,url是/queryItems1.action -->
                <prop key="/queryItems1.action">itemsController1</prop>
                <prop key="/queryItems2.action">itemsController1</prop>
                <prop key="/queryItems3.action">itemsController2</prop>
            </props>
        </property>
    </bean>
7、配置DispatcherSerlvet.properties
路径在org.springframework.web.servlet.DispatcherSerlvet.properties

二、使用注解

Spring MVC基础学习的更多相关文章

  1. Spring Framework基础学习

    Spring Framework基础学习 Core support for dependency injection,transaction management,web applications,d ...

  2. Spring MVC 基础

    Spring MVC 基础 1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是 ...

  3. ASP.NET MVC基础学习

    ASP.NET MVC基础学习 传统的MVC概念 模型:组类,描述了要处理的数据以及修改和操作数据的业务规则 视图:定义应用程序用户界面的显示方式 控制器:一组类,用来处理来自用户,整个应用程序流以及 ...

  4. springboot学习章节代码-Spring MVC基础

    1.项目搭建. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  5. Spring MVC基础了解

    参考网址:https://www.yiibai.com/spring_mvc/springmvc_overview.html Spring框架相关 Spring Security 一个灵活强大的身份验 ...

  6. Intellij IDEA 2019 + Java Spring MVC + Hibernate学习笔记(2)

    书接上文 首先根据各种Spring MVC教程,建立了基础的结构,是否合理不知道,姑且先这样,有问题再解决问题.学习新东西,不能怕掉坑里... 查询网上别人的经历说需要把根目录下的lib目录下的所有包 ...

  7. spring boot基础学习教程

    Spring boot 标签(空格分隔): springboot HelloWorld 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 ...

  8. spring mvc 深入学习

    参考文章: 第二章 Spring MVC入门 —— 跟开涛学SpringMVC Spring MVC 3.0 深入总结:http://blog.csdn.net/sunitjy/article/det ...

  9. spring mvc 注解 学习笔记(一)

    以前接触过spring,但是没有接触spring mvc 以及注解的应用,特习之,记之: 注解了解 @Component 是通用标注, @Controller 标注web控制器, @Service 标 ...

随机推荐

  1. 爬虫(scrapy第一篇)

    ---------------------------------------------------------------------------------------------------- ...

  2. mybatis整合oracle 实现一对多查询 备注?

    <resultMap type="com.asiainfo.channel.model.weeklyNewspaper.WorkReportInfo" id="Wo ...

  3. python元类理解2

    恩,对元类理解又有新的收获,其实类似于装饰器,只不过装饰器是修饰函数,元类用来定制一个类. 代码如下,这是一个使用了函数做元类传递给类: input: def upper_attr(class_nam ...

  4. JavaScript(第十二天)【基本包装类型】

    1.基本包装类型概述 2.Boolean类型 3.Number类型 4.String类型 为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类型:Boolean.Number和Strin ...

  5. 105&250-高级软件工程2017第3次作业

    小组成员 2017282110250 王婷婷 2017202110105 张芷祎 github地址 https://github.com/setezzy/Calculator_GUI PSP PSP2 ...

  6. 【Alpha版本】冲刺阶段 - Day5 - 破浪

    今日进展 袁逸灏:解决音乐播放问题以及跳转问题.(5h) 刘伟康:大致检查了测试规范,参考了其他 alpha 阶段的博客.(1h) 刘先润:解决了敌车与障碍物溢出边界的代码问题,给用户车辆增加了火焰喷 ...

  7. 设计模式NO.2

    设计模式NO.2 本次博客内容为第二次设计模式的练习.根据老师的要求完成下列题目: 题目1 如果需要开发一个跨平台视频播放器,可以在不同操作系统平台(如Windows.Linux.UNIX等)上播放多 ...

  8. 《Language Implementation Patterns》之 数据聚合符号表

    本章学习一种新的作用域,叫做数据聚合作用域(data aggregate scope),和其他作用域一样包含符号,并在scope tree里面占据一个位置. 区别在于:作用域之外的代码能够通过一种特殊 ...

  9. 利用Python爬取新浪微博营销案例库并下载到本地

    from bs4 import BeautifulSoup import requests,urllib.request,urllib.parse import json import time im ...

  10. itchat 微信的使用

    #coding=utf8 import itchat # 自动回复 # 封装好的装饰器,当接收到的消息是Text,即文字消息 @itchat.msg_register('Text') def text ...