springmvc在controller和视图之间传递参数
2016-07-14 10:44
519 查看
从视图向controller传递值, controller <--- 视图 1)简单类型,如int, String, 应在变量名前加@RequestParam注解,例如:
@RequestMapping("hello3")public String hello3( @RequestParam("name" ) String name,@RequestParam("hobby" ) String hobby){System. out.println("name=" +name);System. out.println("hobby=" +hobby);return "hello" ;}但这样就要求输入里面必须有这两个参数了,可以用required=false来取消,例如:@RequestParam(value="name",required=false) String name但经测试也可以完全不写这些注解,即方法的参数写String name,效果与上面相同。
2)对象类型:
@RequestMapping("/hello4" )public String hello4(User user){System.out.println("user.getName()=" +user.getName());System.out.println("user.getHobby()=" +user.getHobby());return "hello";}Spring MVC会按: “HTTP请求参数名= 命令/表单对象的属性名” 的规则自动绑定请求数据,支持“级联属性名”,自动进行基本类型数据转换。 即有一个User类,如下
package model;public class User {private String name ;private String hobby ;public User(){}public User(String name, String hobby) {this.name = name;this.hobby = hobby;}//...get/set方法略则页面上可以用
<form name="form1" action="hello4" method="post"><input type="text" name="name"/><input type="text" name="hobby"/>...提交后,把值直接绑定到user对象上。 此外,还可以限定提交方法为POST,即修改方法的@RequestMapping注解为@RequestMapping(value="/hello4",method=RequestMethod.POST) 最后,注意,如果这里提交过来的字符出现乱码,应该在web.xml里加入如下filter:
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class><init-param><param-name>encoding</param-name><param-value>utf8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name ><url-pattern>/*</url-pattern></filter-mapping>-----------------------以下转载-----------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,使用RedirectView2,使用redirect:前缀Java代码 public ModelAndView login(){ RedirectView view = new RedirectView("regirst.do"); return new ModelAndView(view); } 或者用如下方法,工作中常用的方法:Java代码 public String login(){ //TODO return "redirect:regirst.do"; }
相关文章推荐
- Java 中对象的引用的四种级别
- java 中获取路径的各种方法
- java核心技术第一卷
- java获取文件属性的方法
- springmvc实现浏览器下载文件
- java读取Excel 格式.xls文件
- 反射学习笔记
- java递归和反向递归
- java反射详解
- window下eclipse中运行hbase
- javaweb同页面多验证码第一次验证错误的问题记录
- Java RuntimeException异常处理汇总
- java、jsp中相对路径与绝对路径问题
- Spring的注入案例分析(设值注入和构造注入)
- Java实现几种常见排序方法
- java 遍历map 方法 集合 五种的方法
- Synchronized在java中的用法
- java常用知识
- Java没有头文件的原因
- java 静态(static)方法与非静态方法