springmvc怎么传递参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc怎么传递参数相关的知识,希望对你有一定的参考价值。

页面传递数据给MVC有三种方式:
(1)使用 ViewData 传递数据,ViewData 相当于数据字典,包含 Controlle 和 View 之间传递的所有数据,Controller 会在该字典中添加新数据项,View 从字典中读取数据。
(2)使用 ViewBag 传递数据,ViewBag 基于 Asp.net 4.0 与 .net framework,是 dynamic 类型的对象,虽然 ViewBag 比 ViewData 慢,但是在 ViewPage 中查询数据时不需要类型转换,并且可读性更好。
(3)使用 ViewModel 传递数据,ViewModel 是 ASP.NET MVC 应用中隐式声明的层,它用于维护 Model 与 View 之间的数据传递,是 View 的数据容器。
参考技术A

Spring接收请求参数:

1,使用HttpServletRequest获取

Java代码  

    @RequestMapping("/login.do")  

    public String login(HttpServletRequest request)  

    String name = request.getParameter("name")  

    String pass = request.getParameter("pass")  

      

    2,Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和Struts2一样

    Java代码  

    @RequestMapping("/login.do")  

    public String login(HttpServletRequest request,  

    String name,  

    @RequestParam("pass")String password) // 表单属性是pass,用变量password接收  

      

    syso(name);  

    syso(password)  

      

    3,自动注入Bean属性

    Java代码  

    <form action="login.do">  

    用户名:<input name="name"/>  

    密码:<input name="pass"/>  

    <input type="submit" value="登陆">  

    </form>  

    //封装的User类  

    public class User  

    private String name;  

    private String pass;  

      

    Java代码  

    @RequestMapping("/login.do")  

    public String login(User user)  

      

    syso(user.getName());  

    syso(user.getPass());  

      

    向页面传值:

    当Controller组件处理后,向jsp页面传值,

    1,使用HttpServletRequest 和 Session  然后setAttribute(),就和Servlet中一样

    2,使用ModelAndView对象

    3,使用ModelMap对象

    4,使用@ModelAttribute注解

    Model数据会利用HttpServletRequest的Attribute传值到success.jsp中

    Java代码  

    @RequestMapping("/login.do")  

    public ModelAndView  login(String name,String pass)  

    User user = userService.login(name,pwd);  

    Map<String,Object> data = new HashMap<String,Object>();  

    data.put("user",user);  

    return new ModelAndView("success",data);  

      

    使用ModelMap参数对象示例:

    ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中

    Java代码  

    @RequestMapping("/login.do")  

    public String login(String name,String pass ,ModelMap model)  

    User user  = userService.login(name,pwd);  

    model.addAttribute("user",user);  

    model.put("name",name);  

    return "success";  

      

    使用@ModelAttribute示例

    在Controller方法的参数部分或Bean属性方法上使用

    @ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中

    Java代码  

    @RequestMapping("/login.do")  

    public String login(@ModelAttribute("user") User user)  

    //TODO  

    return "success";  

      

    @ModelAttribute("name")  

    public String getName()  

    return name;  

      

    Session存储:

    可以利用HttpServletReequest的getSession()方法

    Java代码  

    @RequestMapping("/login.do")  

    public String login(String name,String pwd  

    ModelMap model,HttpServletRequest request)  

    User user = serService.login(name,pwd);  

    HttpSession session = request.getSession();  

    session.setAttribute("user",user);  

    model.addAttribute("user",user);  

    return "success";  

      

    Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作

    1,使用RedirectView

    2,使用redirect:前缀

    Java代码  

    public ModelAndView login()  

    RedirectView view = new RedirectView("regirst.do");  

    return new ModelAndView(view);  

      

    或者用如下方法,工作中常用的方法:

    Java代码  

    public String login()  

    //TODO  

    return "redirect:regirst.do";  

     

本回答被提问者采纳

传递集合参数以及SpringMVC和Struts2的区别

一、传递集合参数

技术图片

 

 技术图片

 

二、和Struts2的区别

技术图片

 

 技术图片

技术图片

 

Struts2是基于类封装请求参数,SpringMVC是基于方法封装参数;

 

以上是关于springmvc怎么传递参数的主要内容,如果未能解决你的问题,请参考以下文章

springmvc ajax传递字符串过长报错400bad request

springMVC能直接传数组吗

java springmvc 页面枚举类型作为怎样查询条件并传递参数到controller

springmvc 传递和接收数组参数

springMVC通过ajax传递参数list对象或传递数组对象到后台

springmvc——url参数传递