spring mvc中基于注解的控制器

页面导航:首页 > 软件编程 > Java编程 > spring mvc中基于注解的控制器

spring mvc中基于注解的控制器

来源: 作者: 时间:2016-01-21 09:39 【

使用基于注解的控制器,可以在一个控制器类内包含多个请求处理方法。本文将介绍在spring mvc中经常用到的注解类,包括:声明Controller、Action,以及URL映射的注解(@Controller,@RequestM

使用基于注解的控制器,可以在一个控制器类内包含多个请求处理方法。本文将介绍在spring mvc中经常用到的注解类,包括:

声明Controller、Action,以及URL映射的注解(@Controller,@RequestMapping) 向视图中传递数据(Model) 接受请求参数和路径变量的注解(@RequestParam,@PathVariable) 重定向时传递数据的参数(RedirectAttributes) 返回JSON数据的注解 [email protected]

声明Controller、Action,以及URL映射的注解

我们在上一篇博客中,使用了下面的代码来声明Controller和Action,以及声明他们响应的URL地址

@Controller
@RequestMapping(value = "/home")
public class HomeController {
    @RequestMapping(value = "/index")
    public String Index(Model model) {
        model.addAttribute("msg", "hello,springmvc");
        return "index";
    }
}

@Controller指明了当前类是一个控制器类,@RequestMapping注解用在方法上,表明该方法是一个Action方法,并且响应value所声明的URL请求。如果在Controller上也[email protected],如上面的代码,Index方法响应”/home/index”请求。

向视图中传递数据(Model)

上面的代码model.addAttribute("msg", "hello,springmvc");将一个字符串赋值给了一个org.springframework.ui.Model对象,spring mvc框架会将这个对象传递给视图文件,在视图文件中可以通过EL表达式来获取并输入org.springframework.ui.Model对象中的数据。

${msg}

接受请求参数和路径变量的注解

下面的两个方法分别接收了请求参数和路径变量

@RequestMapping("/person")
public String Person(@RequestParam int id) {
    System.out.println("id=" + id);
    return "person";
}

@RequestMapping("/person/{name}")
public String Person2(@PathVariable String name) {
    System.out.println("name=" + name);
    return "person";
}

这两个方法所在的Controller类映射/home。当请求/home/person?id=123时,[email protected],spring mvc框架就会将请求参数中的id的值转换为我们需要的类型,然后赋值给action方法的id参数。当请求/home/person/kai时,{name}作为路径参数,url中对应的部分(“kai”)会被赋值给action方法的name参数。

重定向时传递数据的参数

当进行重定向(redirect)时,使用org.springframework.ui.Model就无法将数据传递给重定向的视图文件了,需要使用org.springframework.web.servlet.mvc.support.RedirectAttributes对象来传递。

@RequestMapping("/do")
public String Do(RedirectAttributes redirectAttributes){
    redirectAttributes.addFlashAttribute("msg", "redirect data");
    return "redirect:/home/person/kai";
}

这里我们通过redirectAttributes.addFlashAttribute()方法,将数据放到org.springframework.web.servlet.mvc.support.RedirectAttributes对象中,在重定向的视图中可以通过EL表达式来获取数据。

返回JSON数据的注解

如果想让action方法返回json格式的数据,需要做以下几件事:
1,springmvc配置文件中要启用如下

 

    
    
    
    
    
        
        
    

第二,要引入jackson包的依赖,如下


    org.codehaus.jackson
    jackson-mapper-asl
    1.9.2

第三,[email protected]
首先,我们定义一个model类

package springmvc2.models;

public class Person {
    private String id;
    private String name;
    private int age;
    //getters and setters
}

下面是action方法

@RequestMapping(value="/getinfo",method = RequestMethod.GET)
public @ResponseBody Person GetInfo(){
    Person p=new Person();
    p.setId("abc");
    p.setName("kai");
    p.setAge(18);
    return p;
}

当请求/home/getinfo时,会返回以下内容

{"id":"abc","name":"kai","age":18}

[email protected]

[email protected]@PathVariable,每个注解接受一个参数,如果一个注册页面包含好多个表单元素,提交后,[email protected]中的表单


每个input元素是一个Person类的属性,我可以通过如下的方式来获取Person对象

@RequestMapping(value="/addperson",method=RequestMethod.POST)
public String AddPerson(@ModelAttribute Person person) {
    System.out.println("person.id=" + person.getId());
    System.out.println("person.name=" + person.getName());
    System.out.println("person.age=" + person.getAge());
    return "person";
}
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<