SpringMVC执行步骤、Model的使用详解

目录
  • 第一个SpringMvc HelloWorld
    • 无启动类
    • 前端操作
    • 后台执行步骤
  • 第二个SpringMvc项目
    • 项目简介
    • 知识点整合
    • 代码实例:SpringMvc02
      • SpringMvc对rest风格url的支持
      • SpringMvc文件上传
      • SpringMvc文件上传
  • 图解SpringMvc的执行流程

第一个SpringMvc HelloWorld

无启动类

springboot才有启动类

前端操作

访问项目名进入默认主页,显示一个链接

点击链接后请求helloWorld.do跳转另一个jsp页面

后台执行步骤

*也对应controller的RequestMapping,若要映射多有请求则为/

web.xml负责拦截请求并分发到controller处理

spring-mvc.xml负责解析controller的返回值,跳转到相应的页面上。

spring-mvc.xml以及在web.xml中的声明都可以用Java Configuration来代替

项目实例:eclipse/SpringMvc01

第二个SpringMvc项目

项目简介

访问首页,请求后台controller初始化学生列表,装入ModelAndView后返回list.jsp,显示学生列表。

list.jsp点击“添加学生”链接请求后台controller,controller处理页面跳转为add.jsp。

list.jsp点击“修改”操作,带学生id参数到后台controller处理,controller调出该id学生信息,封装到ModelAndView中并返回update.jsp页面。

知识点整合

SpringMvc对象属性自动封装。参见add.jsp。

SpringMvc乱码解决:配置一个过滤器。参见web.xml。

SpringMvc重定向与转发:转发能带参数,但是网址栏不会改变,重定向会改变。参见StudentController

SpringMvc对servlet API的支持:支持request、response等。参见UserController。

SpringMvc自动解析json:引入jar包、命名空间、加注解。参见UserController。

代码实例:SpringMvc02

SpringMvc对rest风格url的支持

特点:请求任何controller都没有.do后缀,请求前端页面没有.jsp;所有的url都没有后缀(但博主似乎支持带.html后缀)。

@PathVariable获取url参数。

SpringMvc对静态资源的映射

代码实例:SpringMvc5Rest

SpringMvc文件上传

引入jar包、配置bean

SpringMvc文件上传

引jar包、配置bean

单文件上传

多文件上传

代码实例:SpringMvc6FileUpload

图解SpringMvc的执行流程

1.用户发起请求到前端控制器DispatcherServlet

前端控制器
<!--    前端控制器-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:ApplicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--    这里不能使用/*   /*要在过滤器中使用-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

2.前端控制器发送url请求处理器映射器HandlerMapping根据url查找Handler

3.处理器映射器返回前端控制器一个执行链

4.前端控制器请求处理器适配器进行Handler

5.处理器适配器选择合适的处理器(Handler一般是controller)

controller控制器返回ModelandView以及视图名

//接受路径名为h1的请求
@RequestMapping("/h1")
public String hello(Model model){
    //将内容Hello,SpringMvc以参数名msg返回给经视图解析器解析的hello页面
    model.addAttribute("msg","Hello,SpringMvc");
    return "hello";//会被视图解析器处理
}
//这里我使用了Model

6.Handler将ModelAndView返回给处理器适配器

7.处理器适配器将ModelAndView返回给前端控制器

8.前端控制器请求视图解析器View resolver进行视图解析 根据逻辑视图添加前缀和后缀解析成真正的物理视图(jsp等)

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

9.视图解析器向前端控制器返回view

10.渲染视图,将模型数据填充到request域

11.响应视图

前端控制器,处理器映射器,处理器适配器不需要我们写

处理器需要我们写(一般就是Controller)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringMVC通过模型视图ModelAndView渲染视图的实现

    SpringMVC通过模型视图ModelAndView渲染视图大致流程 代码样例 1.准备工作 A.因为文中用到jsp,所以需要引入jsp标准标签库standard.jar和jstl.jar 官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 本地下载地址:lib_jb51.rar B.添加Tomcat依赖如下: <dependency> <groupId>org.springframew

  • springmvc处理模型数据ModelAndView过程详解

    这篇文章主要介绍了springmvc处理模型数据ModelAndView过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springmvc提供了以下几种途径来输出模型数据: (1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据. (2)Map及Model:入参为org.springframework.ui.Model.org.springframework.ui.ModelMa

  • SpringMVC中重定向model值的获取方式

    目录 SpringMVC重定向model值的获取 1.步骤一:在控制器中编写 2.编写对应跳转 3.测试:在浏览器访问自己项目下的对应控制器 4.然后浏览器跳转 SpringMVC中model的理解 1.首先将数据添加到Model中 2.然后再将其在页面上展示出来 SpringMVC重定向model值的获取 1.步骤一:在控制器中编写 /*重定向测试*/ @RequestMapping("/m1/t2") public String test1(Model model, String

  • SpringMVC中的Model对象用法说明

    模型对象的作用主要是保存数据,可以借助它们将数据带到前端. 常用的模型对象有以下几个: ModelAndView(顾名思义,模型和视图,既可以携带数据信息,也可以携带视图信息,常规用法如下) /** * ModelAndView 绑定数据到视图 (ModelMap用于传递数据 View对象用于跳转) * @return * @throws Exception */ @RequestMapping(value="/case2") public ModelAndView case2() t

  • Springmvc ModelAndView原理及用法详解

    ModelAndView以org.springframework.ui.ModelMap的形式来保持模型数据,通过构造方bai法传入的或者通过实例方法添加的模型数据都将添加到这个ModelMap中.至于ModelMap中保持的模型数据将会在视图渲染阶段,由具体的View实现类来获取并使用. 我们需要为添加到ModelAndView的一组或者多组模型数据提供相应的键(Key),以便具体的View实现类可以根据这些键获取具体的模型数据,然后公开给视图模板.通常,模型中的数据对应的键需要与视图模板中的

  • SpringMVC中@ModelAttribute注解的使用教程

    前言 @ModelAttribute最主要的作用是将数据添加到模型对象中,用于视图页面展示时使用. @ModelAttribute等价于 model.addAttribute("attributeName", abc); 但是根据@ModelAttribute注释的位置不同,和其他注解组合使用,致使含义有所不同.具体区别如下: 1.@ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被

  • SpringMVC ModelAndView的用法使用详解

    (一)使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图.从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用.业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架.框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上. 具体作用: 1.返回指

  • springmvc与mybatis集成配置实例详解

    简单之美,springmvc,mybatis就是一个很好的简单集成方案,能够满足一般的项目需求.闲暇时间把项目配置文件共享出来,供大家参看: 1.首先我们来看下依赖的pom: <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.ve

  • Java程序执行过程及内存机制详解

    本讲将介绍Java代码是如何一步步运行起来的,其中涉及的编译器,类加载器,字节码校验器,解释器和JIT编译器在整个过程中是发挥着怎样的作用.此外还会介绍Java程序所占用的内存是被如何管理的:堆.栈和方法区都各自负责存储哪些内容.最后用一小块代码示例来帮助理解Java程序运行时内存的变化. Java程序执行过程 步骤 1: 写源代码,源代码将以.java的文件格式保存在电脑硬盘中. 步骤 2: 编译器(compiler)检查是否存在编译期错误(例如缺少分号,关键字拼写错误等).若通过检测,编译器

  • Java SpringMVC拦截器与异常处理机制详解分析

    目录 拦截器(interceptor)的作用 拦截器快速入门 案例:用户登录权限控制 拦截器方法说明 SpringMVC异常处理 异常处理的思路 异常处理两种方式 拦截器(interceptor)的作用 Spring MVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. 将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain).在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用.拦截器也是AOP思

  • SpringMVC域对象共享数据示例详解

    目录 SpringMVC域对象共享数据 一.域对象 1. 域对象的作用 2. 域对象生命周期 3. 使用原则 二.向域对象共享数据 1. 向 request 域对象共享数据 2. 向 session 域共享数据 3. 向 application 域共享数据 SpringMVC域对象共享数据 一.域对象 1. 域对象的作用 就是在一定范围内可以共享数据,通常有 3 种: request: 一次请求,多个资源共享数据 session: 默认一次会话,多个请求,多个资源共享数据 servletCont

  • Spring MVC的完整执行流程和常用组件详解

    目录 1.Spring MVC执行流程 2.Spring MVC常用组件 2.1 DispatcherServlet 2.2 HandlerMapping 2.3 HandlAdapter 2.4 Handler 2.5 ViewResolver 总结 1.Spring MVC执行流程 Spring MVC的完整执行流程如下: 客户端发送请求给DispatcherServlet前端控制器 DispatcherServlet根据请求调用HandlerMapping处理器映射器 HandlerMap

  • MySql执行流程与生命周期详解

    目录 一.MySQL 客户端 二.MySQL 服务端 1. 查询缓存 2. SQL 解析器 3. 查询优化器 4. SQL 执行器 总结 我们经常会在一起讨论怎样优化 SQL.怎样优化数据库,那么请问你知道执行一条 SQL 的过程中都经过了哪些动作吗?如果不知道的话,又怎么去优化 SQL.优化数据库呢?为了更好地优化 MySQL 数据库,接下来我们就来讨论一下执行一条 SQL 都经过哪些步骤. 为了方便理解,在介绍 SQL 执行流程之前,我们先通过一张图,来详细阐述一下 SQL 执行流程. 由上

  • MySQL执行SQL语句的流程详解

    目录 1.通常sql执行流程 1.1 问题1:MySQL谁去处理网络请求? 1.2 问题2:MySQL如何执行sql语句? 1.3 查询解析器 1.4 查询优化器 1.5 存储引擎 1.6 执行器 2.总结 1.通常sql执行流程 用户发起请求到业务服务器,执行sql语句时,先到连接池中获取连接,然后到mysql服务器执行查询. 1.1 问题1:MySQL谁去处理网络请求? msyql服务器谁负责从这个连接中去监听这个网络请求?谁负责从网络连接里把数据读出来? 其实大家都知道,网络连接必须得分配

  • SpringMVC整合SSM实现异常处理器详解

    目录 异常处理器 项目异常处理方案 项目异常处理代码实现 根据异常分类自定义异常类 自定义异常编码(持续补充) 触发自定义异常 异常处理器 程序开发过程中不可避免的会遇到异常现象 出现异常现象的常见位置与常见诱因如下: 框架内部抛出的异常:因使用不合规导致 数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超时) 业务层抛出的异常:因业务逻辑书写错误导致(例如:遍历业务书写操作,导致索引异常等) 表现层抛出的异常:因数据收集.校验等规则导致(例如:不匹配的数据类型间导致异常) 工具类抛出的

  • 基于使用paramiko执行远程linux主机命令(详解)

    paramiko是python的SSH库,可用来连接远程linux主机,然后执行linux命令或者通过SFTP传输文件. 关于使用paramiko执行远程主机命令可以找到很多参考资料了,本文在此基础上做一些封装,便于扩展与编写脚本. 下面直接给出代码: # coding: utf-8 import paramiko import re from time import sleep # 定义一个类,表示一台远端linux主机 class Linux(object): # 通过IP, 用户名,密码,

随机推荐