1. @RequestMapping:

在请求的路径中传递参数:参数作为路径的一部分,可以在路径中直接使用

{paramName}来表示,另一种就是更加传统的表示方式?paramName=paramValue

@RequestMapping(value ="/test/path/{id}",method=RequestMethod.GET)
public String testPath(@PathVariable String id){
System.out.println("路径中的参数:"+id);
return "index";
}
@RequestMapping(value="/test/param?name=jobs",method= RequestMethod.GET)
public String testParam(@RequestParam(name="name") String name){
System.out.println("参数值是:"+name);
return "index";
}

在对应的接受参数分别使用@PathVariable和@RequestParam

@pathVariable可以多次使用,它可以很好的支持int,long,Date数据类型,spring会帮我们自动去转换,转换失败时会抛出TypeMismatchException异常。当然如果这些基本的类型转换不能满足你的需求,spring还有其他可供类型转换的方法,这里不在这篇中讲。

路径中使用正则表达式的表示方法

由于本人对正则不熟悉,在这里就把官方文档中的说明直接拿过来,做个标记,知道有这么一种方式方法:

另一种方式,不解释:

2.@RequestBody

它与HTTP请求中的request body对应

@RequestMapping(path = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException {
writer.write(body);
}

3.@ModelAtrribute

包请求中的参数封装成一个对象

@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pet") Pet pet) { do something }

4. Controller中可以作为放回值的类型

我们这里只学习想常用的就可:

ModelAndView:这个似乎是以前最常用的,既有视图又有数据模型

Model:这个只返回数据模型,视图模型和你请求的对应

View:放回视图

Map:数据

List:数据

String:解析成放回视图

void:

5.@RequestParam:

把请求参数绑定到方法参数中。

@RequestMapping("/test/param")
public String testRequestParam(@RequestParam("name") String name){
return "index";
}

表示在请求中有一个参数名为name的参数,通过注解把该参数的值和方法中的参数绑定,这样在方法参数中就可以获取用户的数据。

当然这样写的要注意一点,就是如果没有这个参数name的话系统会报错,解决的办法是:@RequestParam(value="name",required=false),可以使用是否是必传来做。

如果对于传入的参数个数不确定,可以使用Map<Stirng,String>或者MultiValueMap<String,String>来作为方法参数:

//不确定参数个数
@RequestMapping("/test/params")
public String testRequestParam2(@RequestParam Map<String, String> params){
//params中放着所有的参数,一键值对的形式存在
return "index";
}

6.@ResponseBody

该注解通过注解一个方法,使得这个方法的返回值直接写到HTTP响应体中,而不同于放在模型(Model)中。

该注解和@RequestBody相识,相反。

//注解是方法返回值直接放到Http响应的报文体中
@RequestMapping("/test/retunBoyd")
@ResponseBody
public String testResponseBody(){
return "returnBody";
}

 

7.@RestController

如果在你的@Controller注解的类中,方法都使用了@ResponseBody注解,那么你就可以修改该类使用RestController注解,所有方法去除@ResponseBody注解。

简单讲:@RestController = @Controller + @ResponseBody

 

8.@RequestHeader

不解释看图:

9.升级到3.0

设置web.xml配置文件使容器升级到3.0

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"> ... </web-app>

 

 

spring MVC学习(三)的更多相关文章

  1. Spring MVC 学习 -- 创建过程

    Spring MVC 学习 -- 创建过程 Spring MVC我们使用的时候会在web.xml中配置 <servlet> <servlet-name>SpringMVC< ...

  2. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  3. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)

    很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互.RESTful则是一种软件架构风格.设 ...

  4. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客

    Spring MVC 学习总结(一)--MVC概要与环境配置   目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Mave ...

  5. Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)

    与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和 ...

  6. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  7. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  8. Spring MVC学习总结

    Spring MVC学习总结 Spring MVC学习路(一) 下载配置文件 Spring MVC学习路(二) 设置配置文件 Spring MVC学习路(三) 编写第一个demo Spring MVC ...

  9. 《Spring MVC学习指南》怎么样?答:书名具有很大的欺骗性

    2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul D ...

  10. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

随机推荐

  1. QQ会员活动运营平台架构设计实践——高效自动化运营

    QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统.在过去四年的时间里,AMS日请求量从200-500万的阶段,一直增长到日请求3-5亿,最高CGI日请 ...

  2. spring boot的@RequestParam和@RequestBody的区别

    一.问题描述 由于项目是前后端分离,因此后台使用的是spring boot,做成微服务,只暴露接口.接口设计风格为restful的风格,在get请求下,后台接收参数的注解为RequestBody时会报 ...

  3. 查看cpu 个数, 内存信息

    查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 查看每个物理CPU中core的个数(即核数) ...

  4. 数据库 proc编程五

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  5. python 2.7安装某些包出现错误:"libxml/xmlversion.h:没有那个文件或目录"

    解决办法: 1. ubuntu系统: 首先: apt-get install libxml2-dev sudo ln -s /usr/include/libxml2/libxml /usr/inclu ...

  6. 第二百七十一节,Tornado框架-CSRF防止跨站post请求伪造

    Tornado框架-CSRF防止跨站post请求伪造 CSRF是什么 CSRF是用来在post请求时做请求验证的,防止跨站post请求伪造 当用户访问一个表单页面时,会自动在表单添加一个隐藏的inpu ...

  7. db2 improt from coldel0x7c

    db2 load from "C:\20110816\20110816_BankEnterpri seCA.txt" OF del modified by coldel0x7c r ...

  8. Sublime Text2.0.2注冊码

    // Sublime Text 3 License Keys // Sublime Text 2.x -– BEGIN LICENSE -– Andrew Weber Single User Lice ...

  9. C++变量命名方案

    变量命名方案和函数命名方案一样,也有很多话题可供讨论.确实,该主题会引发一些最尖锐的反对意见.同样,和函数名称一样,只要变量名合法,C++编译器就不会介意,但是一致/精确的个人命名约定是很有帮助的.与 ...

  10. WEB安全番外第三篇--关于XXE

    一.什么是XXE 1.XML实体简介 (1)在一段时间中,XML都是WEB信息传输的主要方法,时至今日XML在WEB中作为前后台之间传递数据的结构,依然发挥着重要的作用.在XML中有一种结构叫做实体: ...