spring MVC学习(三)

1. @RequestMapping:java

在请求的路径中传递参数:参数做为路径的一部分,能够在路径中直接使用web

{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和@RequestParamspring

@pathVariable能够屡次使用,它能够很好的支持int,long,Date数据类型,spring会帮咱们自动去转换,转换失败时会抛出TypeMismatchException异常。固然若是这些基本的类型转换不能知足你的需求,spring还有其余可供类型转换的方法,这里不在这篇中讲。app

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

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

image

另外一种方式,不解释:spa

image

2.@RequestBody3d

它与HTTP请求中的request body对应code

@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

不解释看图:

image

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>
相关文章
相关标签/搜索