SpringMVC整体介绍

说明:

●主要内容包括:【Spring MVC入门与数据绑定】,【Restful开发风格】,【Spring MVC拦截器】;

● 见【使用XML方式实现SpringIoC】可知,SpringMVC是Spring框架的一个模块,只是这个模块是用于JavaWeb开发的;


【Spring MVC】 是Spring提供的JavaWeb的开发模块,是JavaWeb领域最重要的一个技术;

(1)Spring MVC入门:了解SpringMVC的基本开发流程;

(2)接收Web数据:即,后台如何接收来自于客户端浏览器的数据;

(3)URL Mapping:和J2EE的Servlet类似,Spring MVC中开发的Controller都要与某一个URL进行绑定;

(4)记得在学习J2EE的Servlet的时候,请求和响应中会存在中文乱码的问题;自然Spring MVC中也存在中文乱码问题;

(5)拦截器:【Spring MVC的拦截器】有点类似于【J2EE中的[[常用功能与过滤器(二)#|过滤器]]】;只是,【Spring MVC的拦截器】更加高级;


【Restful】 不是一种技术,只是一种程序编码风格; 其主要的用武之地是,在HTTP协议基础上,对外暴露接口,并根据具体的请求返回对应的数据;

(1)Restful风格介绍:简介Restful的具体要求;

(2)Restful开发实战:在Spring MVC中如何应用Restful开发风格;

(3)JSON序列化:通过SpringMVC,后台向客户端浏览器返回的数据,一般是JSON格式的字符串;

(4) Restful跨域问题:提到Restful,就一定会提到跨域问题;

(5)基于Restful开发风格,是目前JavaWeb开发的主流风格;比较重要;

SpringMVC介绍

说明:

(1) 本篇博客仅仅对Spring MVC作了一般性介绍,不涉及Spring MVC的技术细节;


一:MVC引文

关于MVC的内容,如有需要,可以快速参考【MVC架构模式】及附近相关文章;

说明:

(1) 在MVC架构模式中,Controller是最重要的部分,其作用就是【接收前端View传过来的数据】,然后【根据数据,调用后端Model的业务逻辑,得到处理结果】,然后【再把结果返回到前端View视图中】;

(2) 以前接触的J2EE中的Servlet就是一种开发Controller控制器的技术;只是J2EE的Servlet,其提供的方法方法使用起来并不是特别方便;

(3) 正式由于J2EE中的Servlet不好用,Spring这个机构就开发了【Spring MVC模块】,这个模块提供了更简单的方式来实现JavaWeb的开发;即【Spring MVC】的主要用途就是简化web应用程序的开发;


二:Spring MVC简介

说明:

(1) 【Spring MVC】主要作用是替代【J2EE的Servlet】,让我们更简单的开发web程序;

(2) 【Spring MVC】的核心就是开发Controller控制器;

(3) 【Spring MVC】自然是Spring生态体系中的一员;【Spring MVC】底层也需要基于Spring IoC;在【Spring MVC】开发中的Controller,Service等都是存储在IoC容器中的;正是由于这些对象都是存储在IoC容器中的,这也提高了程序的健壮性和稳定性;


三:和旧版本相比,Spring 5.x版本的变化

● 如有需要,可以通过Spring官网【https://spring.io/】了解Spring的相关信息;

相较于旧版本,Spring 5.x有了一些新的特性和变化;

说明:

(1) 响应式编程是基于事件来的,即当触发某个事件时就自动的去执行某一段代码;响应式编程提供了一种编程风格和理念,专注于构建【对事件作出响应】的应用程序;

(2) 响应式编程是一种新的编程理念和风格,如有需要可以查阅相关资料去了解;

(3) 说明一下:【Spring 5.x版本】和【Spring 4.x版本】99%的内容是相同的;


四:查看【Spring MVC】官方文档

这些文档都是英文的,看起来略费力;但以后,如有需要可以随时查阅;

SpringMVC环境配置

说明:

(1) 本篇【使用IDEA创建Maven+Web项目】这些内容,就没什么复杂的;

(1.1) 目前关于Facets和Modules;似乎可以这样理解,Facets可以设置Modules中要使用哪些技术、框架、语言等内容;具体进一步理解,待以后再说吧…………


一:使用IDEA,创建一个Maven WebApp项目

(1)创建Maven工程

至此,我们就创建了一个标准的maven工程,但是这个工程还不具备任何webapp开发的能力;


(2)将工程设置为WebApp工程

说明:

(1) 本部分,如有需要可以参考【创建一Maven Web工程】;虽然,看似略有些微出入,但问题不大;

设置第一部分:web.xml保存目录:

设置第二部分:web资源保存在哪儿?

设置第三部分:web模块如何执行artifact:

说明:

(1) 说明1;

(2) 有关artifacts的内容,如有需要可以快速参考【附加:IDEA的Artifact;(这篇博客,以后有了更深的理解时,随时补充……)


(3)为了演示,创建一个HTML文件;


(4)IEDA配置Tomcat;

说明:

上面设置好了之后,点击OK;但是,目前我们只是设置了Templates这个模板;当前的web应用还不能运行;还要基于这个设置好的Template模板,去设置启动项;

然后,可以再去设置Server的一些内容:

此时Tomcat就配置好了;

SpringMVC案例

说明:

(1) 本篇博客的主要内容是,【如何搭建SpringMVC的开发环境】,【如何在SpringMVC环境下,开发一个标准的Controller控制器】;

(2) 目前只是简单介绍了SpringMVC,本篇博客也仅仅是一个简单案例,走了一遍流程;SpringMVC还有很多内容,需要逐一介绍;


一:Spring MVC环境配置步骤简述;

说明:

(1) 首先,需要引入【spring-webmvc模块】;

(2) 在【SpringMVC】中有一个核心的Servlet:DispatcherServlet;我们需要在web.xml中配置这个Servlet

(3) 在Spring的配置文件applicationContext.xml中配置mvc这个标记;

(4) 最后,就可以开发Controller控制器了;


二:Spring MVC环境配置;

我们已经创建了【maven+webApp】项目;接下来,就是对其配置【Spring MVC】;

1.在pom.xml中引入【spring-webmvc模块】;

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.imooc</groupId>
    <artifactId>first-springmvc</artifactId>
    <version>1.0-SNAPSHOT</version>
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
    </dependencies>
 
</project>

说明:

(1) 结构说明:


2.在web.xml中配置【SpringMVC】的核心Servlet:DispatcherServlet;(目的是,拦截HTTP请求)

(1)DispatcherServlet简介

● DispatcherServlet是【Spring MVC】最重要的一个类,其作用是对所有请求进行拦截;

● DispatcherServlet是整个【Spring MVC】的程序入口,所有http请求都要被DispatcherServlet拦截;同时,DispatcherServlet会根据不同请求的url地址,调用与之对应的Controller方法,以完成http请求的处理;

● DispatcherServlet就像一个中转站,负责将我们的请求,根据不同的url,传递给不同的Controller处理;

● 即,DispatcherServlet的作用就像一个【公司的前台】一样;公司所有的信件、访客,来公司后首先遇到的就是【公司的前台】,【公司的前台】会根据不同的情况,会联系公司内部不同的人来应对处理;

● 如上案例中,【DispatcherServlet】看成【公司的前台】,那么,【Controller中的某一个具体的处理方法】可以看成是【公司内部不同的人】;

(2)在web.xml中配置DispatcherServlet

(这儿需要创建Spring的核心配置文件:applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
          version="3.1">
     <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>0</load-on-startup>
     </servlet>
     <servlet-mapping>
         <servlet-name>springmvc</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
 </web-app>

说明:

(1) 内容分析

(2) 可参考文章

● Servlet的配置的最原始内容,如有需要可以参考:【Servlet入门】;

● Servlet启动时加载最初的介绍文章,如有需要可以参考:【启动时加载Servlet】;

● 关于IoC容器的applicationContext.xml配置文件,如有需要可以参考最初介绍的文章:【使用XML方式实现Spring IoC】;虽然与本篇博客的表现形式不同,但是背后的与原理是基本相同的;

(3) DispatcherServlet的<url-pattern>说明:

关于<url-pattern>的有关内容,可以参考类比:【Servlet与JSP进阶】和【过滤器】的内容;

(4) applicationContext.xml文件初始内容

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mv="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/mvc
             http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 </beans>

  ● 可以看到,其引入了【默认命名空间】,【context命名空间】,以及第一次遇到的【mvc命名空间】;

   ● 【mvc】是【Spring MVC】的核心标签;要想使【Spring MVC】生效,必须要使用【mvc命名空间】中的标签;

3.在Spring的配置文件applicationContext.xml中配置mvc这个标记;

 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mv="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--
    context:component-scan 标签作用
    在Spring IOC初始化过程中,自动创建并管理com.imooc.springmvc及子包中
    拥有以下注解的对象.
    @Repository
    @Service
    @Controller
    @Component
    -->
    <context:component-scan base-package="com.imooc.springmvc"></context:component-scan>
 
    <mvc:annotation-driven/>
    <mvc:default-servlet-handler/>
</beans>

说明:

(1) <context:component-scan>组件扫描标签;

● 以前用到过多次,第一次是在【使用注解方式实现Spring IoC】中遇到的;

● 配置context:component-scan后,就可以使用注解方式来创建Spring的对象了;

(2) <mvc:annotation-driven/>标签;

● 这个标签的作用是:启用Spring MVC注解开发模式;通过这个标签,我们就可以在类中书写【Spring MVC的各种注解】,来简化开发过程;再说,使用注解方式开发,也是在日常开发中主要的开发方式;

(3) <mvc:default-servlet-handler/>标签;

● 这个标签的作用是:将图片/JS/CSS等静态资源排除在外,这样做可提高Spring MVC的执行效率;

● 详细阐述如下:

这儿依旧设置<mvc:default-servlet-handler/>的目的,可以认为是其再增加了一层保险,双保险~~

● 设置<mvc:default-servlet-handler/后:当某一个HTTP请求过来以后,【Spring MVC】会识别出,这个请求是一个【图片/JS/CSS等静态资源】,那么【Spring MVC】就不对这个请求进行处理了。所以说,设置<mvc:default-servlet-handler/>的目的是,提高Spring MVC的执行效率;


4.验证:开发一个Controller,验证上述配置是否正确;

(1)编写TestController;

package com.imooc.springmvc.controller;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 @Controller
 public class TestController {
 
     @GetMapping("/t") //如【localhost/t】这样的url的请求过来时,就会被test()这个方法处理;
     @ResponseBody  //直接向响应输出字符串数据,不跳转页面;即,当test()这个方法执行以后,return “SUCCESS”返回的字符串,
//
会原封不动的通过响应返回给浏览器,当浏览器看到“SUCCESS”字符串后,就代表TestController中的test()方法执行成功了;
public String test() {
return "SUCCESS";
}
}

说明:

(1)@Controller注解; (以前详细介绍过,这儿再啰嗦一下)

(2)public String test() : Controller控制器处理http请求的方法,其基本结构就是这样的;即【方法是public的】,【返回一个String字符串】,【一个自定义的方法名】;

(3)【@GetMapping(“/t”)注解 】和【@ResponseBody注解】: public String test()一开始只是一个标准的java方法,如果想让这个方法能够处理http请求,就需要用到【@GetMapping(“/t”)注解】和【@ResponseBody注解】了;

(4) 这儿只是最简单的一个案例,后续会详细介绍;

(2)再调整一下Tomcat;设置一下Tomcat部署内容;(这些内容以前遇到过好多次…)


●具体这儿,可以参考【附加:IDEA的Artifacts;(这篇博客,以后有了更深的理解时,随时补充……)】;

●很简单,无论是【程序打成jar包】,【程序打成war包】、【程序部署到Tomcat】,都需要设置【程序中的哪些东西:会打到jar包中,会打到war包中,会部署到Tomcat中】;


(3)启动Tomcat,正式发布;


三:Summary;

目前可以感觉到:

(0) 目前只是简单介绍了SpringMVC,本篇博客也仅仅是一个简单案例,走了一遍流程;SpringMVC还有很多内容,需要逐一介绍;

(1.1) 以前我们接触的都是,使用Servlet来处理web请求;但是Servlet不太好用;

(1.2) Spring这个机构提供了【Spring MVC这个框架】,简化了处理web请求的过程;

(1.3) 【通过Spring MVC来处理请求】比【原先通过Servlet处理请求】,简单多了;

(2) Spring MVC处理示意图;

Spring MVC数据绑定:URL Mapping(URL映射)

说明:

(1) 前面几篇博客我们简单介绍了【Spring MVC】,对【Spring MVC】有了简单的认识;从本篇博客开始,将详细介绍【Spring MVC】;

(2) 本篇博客开始,介绍【Spring MVC数据绑定】;然后本篇博客介绍其中的URL映射,URL映射是指【Spring MVC中,Controller控制器的某一个方法】如何和【url】绑定在一起;(前面接触了【@GetMapping(“/t”)注解】【@ResponseBody注解】,自然还有其他注解可以完成类似的工作) (3)本篇博客内容其实很少,就是设置Controller中方法的url啦;


一:URL Mapping(URL映射)简介;

(1) 可以这样理解:对于web应用来说,所有对外暴露的接口,都是一个一个的URL网址;我们通过URL来调用并执行后端的代码;

(1) @RequestMapping是一个通用的注解;

● 这个注解一般是用在类上的,为类中所有方法上的【@GetMapping】、【@PostMapping】赋予访问前缀;

● 这个注解也可以使用在方法上,作为【@GetMapping】、【@PostMapping】的通用书写方式;即,@GetMapping是一个组合注解,@RequestMapping(method = RequestMethod.GET)的缩写;

(2) @GetMapping,@PostMapping是使用在方法上的,分别对应get请求和post请求;

(3) 接下来的案例,会详细介绍这三个注解;


二:【@GetMapping】、【@PostMapping】案例;

1.创建URLMappingController类:使用【@GetMapping】、【@PostMapping】;

URLMappingController类:

package com.imooc.springmvc.controller;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 @Controller
 public class URLMappingController {
 
     @GetMapping("/g")
     @ResponseBody
     public String getMapping() {
         return "This is getMethod.";
     }
 
     @PostMapping("/p")
     @ResponseBody
     public String postMapping() {
         return "This is postMethod.";
     }
 }

2. 【@GetMapping】:提起get请求,观察效果;

3. 【@PostMapping】:提起post请求,观察效果;

错误原因: 通过浏览器的地址栏输入地址,所访问的URL都是get请求,因此如果以post定义方法,那么由于请求与实现的不一致,会返回405错误,method not allowed, The specified HTTP method is not allowed for the requested resource。这归根到底是因为浏览器发送了get请求,而方法只能处理post请求,所以发生的错误。可以参考下【附加:一般情况下,通过浏览器的地址栏输入url,发送的只能是get请求;(即【哪些情况下会发送get请求】,【哪些情况下会发送post请求】)

如果想测试postMapping()方法,可以创建一个HTML表单,然后表单提交方式为post方式,如下:


三:【@RequestMapping】案例;

1.可以在类上,使用【@RequestMapping】;

(1)在类上 【@RequestMapping】;

package com.imooc.springmvc.controller;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 @Controller
 @RequestMapping("um")
 public class URLMappingController {
 
     @GetMapping("/g")
     @ResponseBody
     public String getMapping() {
         return "This is getMethod.";
     }
 
     @PostMapping("/p")
     @ResponseBody
     public String postMapping() {
         return "This is postMethod.";
     }
 }

说明:

(1) @RequestMapping注解:通常使用在类上;这个注解通常用于URL的全局设置;阐述如下:

● 我们知道一般的url是多级的:

● 如上,我们希望URLMappingController中的所有方法的映射地址,都以【/um】为前缀;自然我们这样设置:

● 如果URLMappingController中的方法比较少还好,我们一个一个的去加就行了;但是如果URLMappingController中有上百个方法时,上面的策略就会很麻烦,而且很容易出现遗漏;

● 为此,@RequestMapping就派上用场了;如上面代码所示;上面设置以后,URLMappingController类中所有的方法的url都会添加上【/um】前缀了;

● 即,【@RequestMapping】可以为当前类中所有的【@GetMapping】、【@PostMapping】赋予访问前缀;

(2)【@RequestMapping】:提起请求,观察效果;

重启应用,访问如下:

2.也可以在方法上,使用【@RequestMapping】;(只是一般不这么干)

阐述如下:

●【@RequestMapping】是一个全局的通用的请求映射;如果把其放在类上,就是为类中的、所有方法上的【@GetMapping】、【@PostMapping】赋予访问前缀;

● 如果把其放在方法上,那么其含义是,我们为当前方法绑定了url,但是不再区分get/post请求,即无论请求是get请求还是post请求,只要url对,都可以访问到这个方法;(不推荐这种用法,因为在实际开发中,每个方法应该有明确的访问方式,要么是get,要么是post;即,在方法上,还是推荐使用【@GetMapping】、【@PostMapping】);

● 【@RequestMapping】可以设置参数,让其只对请求方式为get方式的请求生效(Post同理);

但是,【@RequestMapping(value = “/g”,method = RequestMethod.GET)】这种写法比较麻烦;所以,SpringMVC才提供了@GetMapping(“/g”)这种简写的方式;

● 在实际开发的时候,一般这样做:

Spring MVC数据绑定:Controller接收请求:使用【方法参数】接收

说明:

(1) 本篇博客主要内容是:【后台的Controller方法】如何获取【前端传过来的数据】;然后,本篇博客【后台的Controller方法】是以【方法参数】的方式接收【前端传过来的,请求中的数据】的;


前置性介绍;

(1) 在【Spring MVC数据绑定:URL Mapping(URL映射)】中,已经介绍了如何把【Controller的方法】与【url】绑定在一起;

(2) 在大部分情况下,请求被发到后端时,这个请求常包含一些数据;这些数据通常是【请求参数的形式】,比如用户登录时的用户名和密码就会以【post请求参数的形式】发送到后台Controller的指定方法中;本篇博客就介绍【后台的Controller方法】如何获取【前端传过来的,请求中的数据】;


零:【后台的Controller方法】如何获取【前端传过来的数据】的两种方法;

(1) 第一种做法是,后台Controller使用【方法参数】接收【前端传过来的,请求中的数据】;这种方法也是本篇博客介绍的内容;

(2) 第二中做法是,后台Controller使用【Java Bean】接收【前端传过来的,请求中的数据】;这种方法是下一篇博客介绍的内容;


一:后台Controller使用【方法参数】接收【前端传过来的,请求中的数据】;(Post请求)

1.简述;

2.案例;

启动Tomcat,然后浏览器访问效果如下:

3.和【传统Servlet获取请求中参数】 相比,【Spring MVC获取请求中数据】优势分析;

(1) 【传统Servlet获取请求中参数】:是通过形如【request.getParameter()】的方式获取的,还是比较麻烦的;

(2) 【Spring MVC获取请求中数据】:直接在方法参数中写上就行了;;;由此感受到了【Spring MVC简化web开发难度】的意味;

4.后端接收前端数据时,类型转换错误:报400错误;

(1) 已知【Spring MVC】可以完成自动类型转换;

(2) 但是,万一【前台的password还包含字母】,即password不能转换为数字时:其就会报400错误;

所以,以后在开发过程中,如果报了400异常,就需要考虑【请求错误的问题了:即前后端数据不匹配问题】,即此时就需要考虑【是否在前端的表单中添加“表单验证”,以保证password必须只输入数字了】;


二:后台Controller使用【方法参数】接收【前端传过来的,请求中的数据】;(Get请求)

1.一种“不建议使用的”方式:

2.“建议使用的方式”:使用【@RequestParam】;

Spring MVC数据绑定:Controller接收请求:使用【Java Bean】接收

说明:

(1) 本篇博客主要内容是:【后台的Controller方法】如何获取【前端传过来的数据】;然后,本篇博客【后台的Controller方法】是以【Java Bean】的方式接收【前端传过来的,请求中的数据】的;


零:本篇博客必要性分析;

比如前端的表单,有好几十甚至上百个输入项;如果还是采用 【使用【方法参数】接收】中的做法,那么后端Controller方法就会有几十甚至上百个参数,这样会导致方法的参数部分太长,不利于维护;而且,对于这种情况,后端一般使用【Java Bean】去保存,那么就会有大量的set()赋值操作;如下图:很麻烦;

为此,【Spring MVC】允许我们【一次性,将前端传过来的数据,保存为Java Bean】;


一:使用【Java Bean】接收【前端传过来的,请求中的数据】;

1.创建一个【Java Bean】:User;

User类:

package com.imooc.springmvc.entity;
 
 public class User {
     private String username;
     private Long password;
 
     public User() {
     }
 
     public User(String username, Long password) {
         this.username = username;
         this.password = password;
     }
 
     public String getUsername() {
         return username;
     }
 
     public void setUsername(String username) {
         this.username = username;
     }
 
     public Long getPassword() {
         return password;
     }
 
     public void setPassword(Long password) {
         this.password = password;
     }
 }

说明:

(1) 这个类没什么好说的,就是一个Java Bean;

(2)但是需要保证以下两点!!!:

(3) 需要注意的一个点:可以看到,User类的目的是,接收和存储【前端表单提交过来的数据】;因为表单中参数都是如【username,password这种未采用驼峰的书写方式】,所以User类的属性也是【username,password这种未采用驼峰的书写方式】;

2.后台的Controller,使用【Java Bean】接收【前端传过来的,请求中的数据】

启动Tomcat观察效果:

注: 【Spring MVC】能这么干,能够感受到Spring MVC在背后帮我们作了支撑。

3.一点说明:使用【方法参数】接收 和 使用【Java Bean】接收,其实是相通的;


二:Controller接收请求中的参数之:使用【方法参数】接收和使用【Java Bean】接收:Summary;

(1.1) 使用【Java Bean】接收:适合用于接受如【档案表】,【用户信息】这些有很多数据的大表单;

(1.2) 但是,使用【Java Bean】接收时,我们需要创建额外的实体类,这会额外的增加程序的开发量;

(1.3) 所以在实际工作中,根据实际需要,选择【使用“方法参数”接受】或者【使用“Java Bean”接受】;

(2) 如果数据量比较少,完全可以选择选择【使用“方法参数”接受】;