码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC中的参数传递

时间:2015-06-15 01:45:17      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

1、接收请求参数

  Spring MVC Web请求提交数据到控制器有下面几种方法

    使用HttpServletRequest获取

    使用@RequestParam注解

    使用自动机制封装成Bean对象

2、使用HttpServletRequest获取示例

  Spring自动参数注入HttpServletRequest

  优点直接,缺点需要自己处理数据类型转换

    @RequestMapping("/login-action1.from")
    public String checkLogin1(HttpServletRequest req){
        String name=req.getParameter("name");
        String pwd=req.getParameter("pwd");
        System.out.println(name);
        System.out.println(pwd);
        User user=uerService.login(name,pwd);
        //...省略处理过程
        return "success";
    }

3、使用@RequestParam注解

  Spring会自动将表单参数注入到方法参数(名称一致)

  使用@RequestParam注解,映射不一致的名称

  优点参数类型自动转换,但可能出现类型转换异常

    @RequestMapping("/login-action2.from")
    public String checkLogin2(
            String name,
            @RequestParam("pwd")String password,
            HttpServletRequest req){
        System.out.println(name);
        System.out.println(password);
        User user=userService.login(name,password);
        //...省略处理过程
        return "success";
    }

4、使用自动机制封装成Bean属性示例

  定义User实体,属性名与<form>表单组件的name相同

public class User {
    private String name;
    private String pwd;
    //省略setter和getter方法
}

  在Controller组件处理方法定义User类型参数

    @RequestMapping("/login-action3.from")
    public String checkLogin3(User user){
        System.out.println(user.getName());
        System.out.println(user.getPassword());
        User user=userService.login(user.getName(),user.getPassword());
        //...省略处理过程
        return "success";
    }

5、向页面传值 

  当Controller组件处理后,需要向JSP传值时,用下面方法

    直接使用HttpServletRequest和Session

    使用ModelAndView对象

    使用ModelMap参数对象

    使用@ModelAttribute注解

6、使用ModelAndView对象示例

  在Controller处理方法完成后返回一个ModelAndView对象,包含显示视图名和模型数据。

    @RequestMapping("/login-action.from")
    public String checkLogin4(String name,String pwd){
        User user=userService.login(name,pwd);
        Map<String,Object> data=new HashMap<String, Object>();
        data.put("user",user);
        return new ModelAndView("success",data);
    }

  Model数据会利用HttpServletRequest的Attribute传递到JSP页面中。

7、使用ModelMap参数对象示例

  在Controller处理方法中追加一个ModelMap类型参数

    @RequestMapping("/login-action.from")
    public String checkLogin4(String name,String pwd,ModelMap model){
        User user=userService.login(name,pwd);
        model.addAttribute("user",user);
        return "success";
    }

  ModelMap数据会利用HttpServletRequest的Attribute传递到JSP页面中

8、使用@ModelAttribute示例

  在Controller方法的参数部分或

    @RequestMapping("/login-action.from")
    public String checkLogin4(
            @ModelAttribute("user")User user){
        //TODO
        return "success";
    }
    或
    @ModelAttribute("name")
    public String getName(){
        return name;
    }
    

  @ModelAttribute数据会利用HttpServletRequest的Attribute传递到JSP页面中。

9、Session存储

  可以利用HttpServletRequest的getSession()方法访问

    @RequestMapping("/login-action.from")
    public String checkLogin4(String name,String pwd,
            ModelMap model,HttpServletRequest req){
        User user=userService.login(name,pwd);
        req.getSession().setAttribute("loginUser", user);
        model.addAttribute("user",user);
        return "success";
    }

10、重定向视图

  Spring MVC默认采用转发方式定位视图,如果需要重定向方式可采用下面几种方法

  使用RedirectView

  使用redirect:前缀

  如果Controller的请求处理方法返回的是ModelAndView对象,可以使用RedirectView方法重定向,实例代码

    public ModelAndView checkLogin(){
        //TODO
        RedirectView view=new RedirectView("login.form");
        return new ModelAndView(view);
    }

  如果Controller的请求处理方法返回值是String类型,可以使用"redirect:前缀"方法重定向,示例代码

    public String checkLogin(){
        //TODO
        return    "redirect:login.form";
    }

 

SpringMVC中的参数传递

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4576107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!