当前位置: 首页 > news >正文

SpringMVC学习笔记(一)

一.MVC的流程图

分析流程图

  

1、 首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的1、2步骤;
2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图中3、4、5步骤;
3、 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2中的步骤6、7;
4、 前端控制器再次收回控制权,将响应返回给用户,图中的步骤8;至此整个结束。

二.SpringMVC的流程图

Spring工作流程描述

      1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;

      2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;

      3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)

       4.  提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:

      HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息

      数据转换:对请求消息进行数据转换。如String转换成Integer、Double等

      数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等

      数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中

      5.  Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;

      6.  根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;

      7. ViewResolver 结合Model和View,来渲染视图

      8. 将渲染结果返回给客户端。

 

三,创建SpringMVC的步骤:

   1.工程结构如图

    

 

   2.加入springMVC所需jar包

    

 3.添加Web.xml配置文件中关于SpringMVC的配置

<servlet>
     <servlet-name>springMVC</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <init-param>
        <param-name>contextConfigLocation</param-name>
        <!-- SpringMVC配置文件不在WEB-INF下的情况 classpath:========>/web-inf/class/ (源文件下的文件经过编译后产生的字节码文件所在的文件夹)
        <param-value>classpath:springMVCAnnotation.xml</param-value>
 -->
     </init-param>
  </servlet>
  <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <url-pattern>*.do</url-pattern>
  </servlet-mapping>

 

4.在WEB-INF下添加springMVC-servlet.xml配置文件

 <!-- 讲解HandleMapping 映射 :映射的作用:根据请求URL找到对应的Controller类 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!-- 注册控制层类 -->
    <bean name="/index.do" class="com.eduask.ykq.controller.BeanNameController"></bean>

  <!-- 视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/view/"></property>
       <property name="suffix" value=".jsp"></property>
    </bean>

5.创建Controller类

public class BeanNameController extends AbstractController {

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        System.out.println("===========");
        ModelAndView andView=new ModelAndView("beanName");
        return andView;
    }

}

 

  

 

转载于:https://www.cnblogs.com/tony-hyn/p/6211621.html

相关文章:

  • C#操作Excel,套用模板并对数据进行分页
  • 【SC】SCOM配置AD集成
  • 去了一趟微软
  • 设计模式的有趣解释-追MM
  • 组策略控制Win7电源选项
  • Nginx基本配置备忘
  • 感觉日子变苦了
  • mysql没有delete操作,那是delete from操作,
  • Mybatis架构
  • 关于使用Lock的疑问。
  • ASP.NET MVC5----基本用法
  • 网络分析的发展
  • Web前端MVC框架
  • jquery笔记之属性选择器 查找以某种条件开头的页面元素
  • 分享:微软提供的一个开源控件treeview 的一小个用法
  • 【前端学习】-粗谈选择器
  • JAVA SE 6 GC调优笔记
  • JavaScript创建对象的四种方式
  • javascript从右向左截取指定位数字符的3种方法
  • Javascript设计模式学习之Observer(观察者)模式
  • Java比较器对数组,集合排序
  • Joomla 2.x, 3.x useful code cheatsheet
  • Mybatis初体验
  • Redis 懒删除(lazy free)简史
  • v-if和v-for连用出现的问题
  • 初识 beanstalkd
  • 浮动相关
  • 给第三方使用接口的 URL 签名实现
  • 检测对象或数组
  • 前嗅ForeSpider采集配置界面介绍
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 微信开放平台全网发布【失败】的几点排查方法
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​linux启动进程的方式
  • # Maven错误Error executing Maven
  • #ifdef 的技巧用法
  • #Linux(帮助手册)
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #pragma once
  • $().each和$.each的区别
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)(1.13) SiK无线电高级配置(六)
  • (4)(4.6) Triducer
  • (C语言)逆序输出字符串
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Git) gitignore基础使用
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (四) 虚拟摄像头vivi体验
  • (小白学Java)Java简介和基本配置
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)u-boot-nand.bin的下载
  • *p++,*(p++),*++p,(*p)++区别?
  • .htaccess 强制https 单独排除某个目录
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!