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. Oracle 12c(12.1.0.5) oem agent silent install(静默安装agent)

    注释: 文章自oracle support 文档 ID 1360083.1,静默安装agent采用的是把OMS服务端(即oem server端)的agent用压缩包download,远程传到agent ...

  2. phpcms v9 列表页直接下载功能代码实现

    {pc:content action="lists" catid="$catid" num="3" order="id DESC& ...

  3. PHP 引用是个坑,请慎用

    去年我参加了很多次会议,其中八次会议里我进行了相关发言,这其中我多次谈到了 PHP 的引用问题,因为很多人对它的理解有所偏差.在深入讨论这个问题之前,我们先回顾一下引用的基本概念,明确什么是" ...

  4. easyui控件写法造成的错误

    <input id="driver" name="driver" class="easyui-combobox" data-optio ...

  5. 使用.NET开发AutoCAD——设计师不做画图匠(一)

    (一)前言--如何避免加班那些事 我是谁?我是一名工程设计师,有点"不务正业",在工作之余长期从事软件开发工作,开发了公路铁路行业广泛应用的设计软件.说正题之前,聊聊加班那些事.话 ...

  6. Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  7. 集大1513 & 1514班 软件工程第一次作业评分与点评

    谢谢大多数同学按时完成了作业,同学态度都比较端正,没有为了完成作业或者讨好老师而说一些假话空话. 很多同学选择CS之前并没有从兴趣或者擅长出发.这是一个普遍的现象,十年前我们是这样,十年后的孩子们还是 ...

  8. Beta第一天

    听说

  9. Faster R-CNN 的 RPN 是啥子?

     Faster R-CNN,由两个模块组成: 第一个模块是深度全卷积网络 RPN,用于 region proposal; 第二个模块是Fast R-CNN检测器,它使用了RPN产生的region p ...

  10. day-5 python协程与I/O编程深入浅出

    基于python编程语言环境,重新学习了一遍操作系统IO编程基本知识,同时也学习了什么是协程,通过实际编程,了解进程+协程的优势. 一.python协程编程实现 1.  什么是协程(以下内容来自维基百 ...