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
java springmvc 页面枚举类型作为怎样查询条件并传递参数到controller