SpringMVC部分重点组建介绍

  前端处理器(DispatcherServlet):接受请求,响应结果,是SpringMVC的核心

  处理映射器(HandlerMapping):根据URL去查找处理器

  处理器(Handler):由程序员自己编写

  处理器适配器(HandlerAdapter):把处理器包装成适配器

  视图解析器(ViewResovler):视图解析,多返回的字符串,进行处理,解析成对应的页面

执行顺序

  前端发送的所有请求被DispatcherServlet所拦截,然后DispatcherServlet会去寻找对应的HandlerMapping中合理的映射,返回一个Handller。

  请求解析Handel,调用HandlerAdapter处理器适配器执行Hander,返回一个ModelAndViewl对象。

  DispatcherServlet发出解析ModelAndView的请求,通过ViewReslover视图解析器解析,返回一个View

  DispatcherServlet根据View进行视图渲染,然后渲染视图将Model数据转换为response响应传回前端。

  大致流程如下图:

注解

@Controller

  注解控制层,把对应的请求分发到对应的方法上

@ResquestMapping("abc")

  映射路径,使用此注解的方法会被@Controller识别,当有与注解内的字符串请求传入时,执行方法体内的方法;并且由方法体返回一个字符串,经过配置文件的拼接跳转页面

/*
如果请求是abc,则执行方法体a;
通过model.addArribute()方法将name为msg,value为"SpringMVC"的值传入index.jsp前端;
这里的index.jsp是由相关的配置文件拼接而成
*/
@RequestMapping("abc")
public String a(Model model){
model.addAttribute("msg","SpringMVC");
return "index";
}

  

  4种请求方式:get、post、delete、put;根据请求参数的不同可以拦截不同的请求,例如:

/*
加上method=RequestMethod.POST注解之后,这个方法题就只能够接受post请求,
同样,如果是GET的话,那就只能够接受get请求
*/ @RequestMapping(value = "abc",method=RequestMethod.POST)
public String a(Model model){
model.addAttribute("msg","SpringMVC");
return "index";
}

  参数控制  params={"name"}

/*
当加上params={"name"}之后表示传入的参数中必须要有name,否则报错
*/
@RequestMapping(value = "abc",method=RequestMethod.POST,params={"name"})
public String a(Model model){
model.addAttribute("msg","SpringMVC");
return "index";
}

  使用同名匹配原则会造成与前端的耦合,可以使用@RequestParam("指定参数名" string "自己的名字")来进行变量名的绑定,这个注解有三个变量:value,指定name属性的名称;required,指定是否必须有该参数,可以设置true和false;defaultvalue,设置默认名

@ResponBody

  这是异步刷新技术,ajax

SpringMVC配置文件

  Maven项目中pom.xml导入SpringMVC的jar包支持

    <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>

  web.xml

    <!--配置前端处理器DispatcherServlet-->
<servlet>
<servlet-name>springmvc01</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--配置拦截请求-->
<servlet-mapping>
<servlet-name>springmvc01</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

  spring-mvc.xml

    <!--配置driver-->
<mvc:annotation-driven/>
<!--静态处理-->
<mvc:default-servlet-handler/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>

  

SpringMVC学习总结的更多相关文章

  1. SpringMVC学习系列-后记 解决GET请求时中文乱码的问题

    SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...

  2. 史上最全的SpringMVC学习笔记

    SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...

  3. SpringMVC学习系列-后记 开启项目的OpenSessionInView

    在系列的 SpringMVC学习系列(12) 完结篇 的示例项目中,由于当时考虑到OpenSessionInView会对性能有一定的影响,所以就没有配置项目的OpenSessionInView.在ma ...

  4. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码

    在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...

  5. SpringMvc学习心得(五)控制器产生与构建

    SpringMvc学习心得(五)控制器产生与构建 标签: springspring mvc框架 2016-03-22 15:29 140人阅读 评论(0) 收藏 举报  分类: Spring(4)  ...

  6. springmvc学习笔记--REST API的异常处理

    前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...

  7. springmvc学习笔记---面向移动端支持REST API

    前言: springmvc对注解的支持非常灵活和飘逸, 也得web编程少了以往很大一坨配置项. 另一方面移动互联网的到来, 使得REST API变得流行, 甚至成为主流. 因此我们来关注下spring ...

  8. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  9. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

  10. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

随机推荐

  1. 002-Java数据类型

    Java数据类型 基本数据类型 和 引用数据类型 基本数据类型 整型:byte - 8bit / short - 2字节 / int - 4字节 / long - 8字节 浮点型:float doub ...

  2. nodejs http ejs

    // ejs-demo.jsvar http = require('http'); var ejs = require('ejs'); var url = require('url'); // 搭建 ...

  3. 2019牛客暑期多校训练营(第八场)D-Distance 定期重构

    题目传送门 题意: 在一个三维空间中,给出q次操作,每次操作可以在空间中加上一个固定点,或者询问一个点,对于一个询问操作,输出距离这个点最近的固定点的曼哈顿距离. 思路: 官方题解:先假设所有询问都在 ...

  4. hdu6393 Traffic Network in Numazu 树链剖分

    题目传送门 题意:给出n个点n条边的无向带权图,再给出两种操作,操作1是将第x条边的边权修改为y,操作2是询问点x到点y的最短路径. 思路:如果是n个点n-1条边,题目就变成了树,修改边权和询问最短路 ...

  5. ECharts (mark)

    首页 文档 下载 实例 社区 工具 关于 2.0 EN ECharts 特性 特性 丰富的可视化类型 多种数据格式无需转换直接使用 千万数据的前端展现 移动端优化 多渲染方案,跨平台使用! 深度的交互 ...

  6. 把云数据库带回家!阿里云发布POLARDB Box数据库一体机

    9月26日,2019杭州云栖大会上,阿里云宣布正式推出高性能数据库一体机——POLARDB Box,用户部署在自有数据中心即可享受云数据库的便捷体验,同时还为Oracle等传统数据库用户提供一键迁移功 ...

  7. thinkphp 控制器定义

    控制器和操作 一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法. 下面就是一个典型的控制器类的定义: <?php namespace Home\Controller; ...

  8. 「题解」:$e$

    问题 B: $e$ 时间限制: 2 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 话说一天考两个主席树这回事…… 正解可以叫树上主席树??(脸哥说也叫主席树上树???) 对于树上的每 ...

  9. 大杀器Bitset

    其实并不怎么会用,有一次有位学长提到了这个名字,就这么取题目了. 1.BZOJ 3687 简单题 求子集的算术和的异或和 http://www.lydsy.com/JudgeOnline/proble ...

  10. Redis理解和使用

    摘抄并用于自查笔记 1. Redis简介 我们日常Java Web开发,一般使用数据库进行存储,在数据量较大的情况下,单一使用数据库保存数据的系统会因为面向磁盘,磁盘读写速度比较慢而存在严重的性能弊端 ...