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. "_CMTimeGetSeconds", referenced from:

    CMTime is defined in the CoreMedia.framework. Add that framework to your project.

  2. BCZM : 1.5

    https://blog.csdn.net/zs634134578/article/details/18046317 有很多服务器存储数据,假设一个机器仅存储一个标号为ID的记录,假设机器总量在10亿 ...

  3. leetcode-50-pow()

    题目描述: 方法一: class Solution: def myPow(self, x: float, n: int) -> float: if n<0: x = 1/x return ...

  4. CSS压缩

    通过W3C 统一验证工具的检测没有错误后,为了提高加载速度和节约空间(相对来说,css量很少的情况下,几乎没啥区别),可以通过css压缩工具把css进行压缩. w3c css压缩 http://too ...

  5. day23 内置函数,匿名函数,递归

    Python之路,Day11 = Python基础11 内置函数divmod(x, y)   # (商, 模)enumerate(可迭代对象)     # (序号,值)eval(字符串) # 把字符串 ...

  6. C语言结构体初始化方法

    早上苏凯童鞋问我这个问题来着,写在这里. 我了解到的C中结构体初始化的方法大概有三种. 如这里我定义了一个结构体: typedef struct node { int x, y; }Node; 第一种 ...

  7. Java笔记 – JDBC编程

    JDBC通过分层技术实现了跨数据库编程.为不同的数据库开发了统一的编程接口,为不同的数据库提供了不同的JAR类库. 一.JDBC基础 1.开发环境 (1)下载对应的Jar包 Oracle的本地Jar包 ...

  8. Andriod Fragment 的作用和基本用法

    1.什么是Fragment: Fragment (片段)在Google Android 开发指南中的解释是:片段是Activity中的一部分,一个Activity中可以有多个Fragment.一个Fr ...

  9. Bootstrap——可拖动模态框(Model)

    还是上一个小项目,o(╥﹏╥)o,要实现点击一个div或者button或者一个东西然后可以弹出一个浮在最上面的弹框.网上找了找,发现Bootstrap的Model弹出框可以实现该功能,因此学习了一下, ...

  10. MFC入门--显示静态图片及调用本地软件

    MFC是微软开发的基础类库,主要用来开发图形界面应用程序,在学习中,我们要验证算法好坏,一般需要对结果进行可视化. OpenCV是计算机视觉中的开源算法库,集成了很多先进算法,现在想将MFC与Open ...