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. SpringMVC常用注解知识总结

    1.@Controller 注解到类名上,表示该类是控制器. 2.@RequestMapping("/xxxx") 可以放在类名/方法名之上,表示访问请求该方法时的url.如果该方 ...

  2. Task 暂停与继续

    static void Main(string[] args) { CancellationTokenSource tokenSource = new CancellationTokenSource( ...

  3. linux 系统优化,调优

    1.系统安装前的规则 a.分区:不同环境不同分法,按自己的需求来 以硬盘500G为例 /boot 100M-200M(只存放grub和启动相关文件,不存放其他) /  80G-100G (因为很多人默 ...

  4. sql (4) key and Join

    新建表: "Persons" 表:Id_P LastName FirstName Address City1 Adams John Oxford Street London2 Bu ...

  5. canvas绘制线和矩形

    ###canvas绘制矩形 HTML中的元素canvas只支持一种原生的图形绘制:矩形.所有其他的图形的绘制都至少需要生成一条路径 1.绘制矩形 canvas提供了三种方法绘制矩形: ----> ...

  6. 【JZOJ5431】序列操作

    description 一开始有n个非负整数hi,接下来会进行m次操作,第i次操作给出一个数c[i],要求你选出c[i]个大于零的数并将它们减去1. 问最多可以进行多少轮操作后无法操作(即没有c[i] ...

  7. thinkphp 模版引擎

    系统支持原生的PHP模板,而且本身内置了一个基于XML的高效的编译型模板引擎,系统默认使用的模板引擎是内置模板引擎,关于这个模板引擎的标签详细使用可以参考模版引擎部分. 内置的大理石平台检定规程模板引 ...

  8. Sonatype Nexus Repository Manager清除无用的docker镜像

    1.创建定时任务 2.先run一下看是否能删除无用镜像

  9. duilib教程之duilib入门简明教程8.完整的自绘标题栏

    看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题栏吧~    看到下面这个效果图,小伙伴们是不是有点惊呆了呢~O(∩_∩)O~      duilib实现以 ...

  10. System.IO.Directory.cs

    ylbtech-System.IO.Directory.cs 1.返回顶部 1. #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, Pub ...