我好怕自己成为有故事的人,这一天我怕了好久好久,我唯一能做的只有尽人之力。

spring MVC学习(三)

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还有其他可供类型转换的方法,这里不在这篇中讲。

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

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

image

另一种方式,不解释:

image

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

不解释看图:

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>

 

 

posted @ 2015-11-29 16:22  goLazy  阅读(454)  评论(0编辑  收藏  举报
你是否也有自己的故事?埋藏在自己心的最深的地方。