springmvc在controller和视图之间传递参数


 

从视图向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代码  收藏代码
  1. @RequestMapping("/login.do")  
  2. public String login(HttpServletRequest request){  
  3.     String name = request.getParameter("name")  
  4.     String pass = request.getParameter("pass")  
  5. }  

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

Java代码  收藏代码
  1. @RequestMapping("/login.do")  
  2. public String login(HttpServletRequest request,  
  3.                                 String name,  
  4.  @RequestParam("pass")String password) // 表单属性是pass,用变量password接收  
  5. {  
  6.    syso(name);  
  7.    syso(password)  
  8. }  

 

3,自动注入Bean属性

  

Java代码  收藏代码
  1. <form action="login.do">  
  2. 用户名:<input name="name"/>  
  3. 密码:<input name="pass"/>  
  4. <input type="submit" value="登陆">  
  5. </form>  
  6.   
  7. //封装的User类  
  8. public class User{  
  9.   private String name;  
  10.   private String pass;  
  11. }  

 

Java代码  收藏代码
  1. @RequestMapping("/login.do")  
  2. public String login(User user)  
  3. {  
  4.    syso(user.getName());  
  5.    syso(user.getPass());  
  6. }  

 

向页面传值:

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

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

2,使用ModelAndView对象

3,使用ModelMap对象

4,使用@ModelAttribute注解

 

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

Java代码  收藏代码
  1. @RequestMapping("/login.do")  
  2. public ModelAndView  login(String name,String pass){  
  3.     User user = userService.login(name,pwd);  
  4.     Map<String,Object> data = new HashMap<String,Object>();  
  5.     data.put("user",user);  
  6.     return new ModelAndView("success",data);  
  7. }  

 

使用ModelMap参数对象示例:

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

Java代码  收藏代码
  1. @RequestMapping("/login.do")  
  2. public String login(String name,String pass ,ModelMap model){  
  3.     User user  = userService.login(name,pwd);  
  4.     model.addAttribute("user",user);  
  5.     model.put("name",name);  
  6.     return "success";  
  7. }  

 

 使用@ModelAttribute示例

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

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

Java代码  收藏代码
  1. @RequestMapping("/login.do")  
  2. public String login(@ModelAttribute("user") User user){  
  3.     //TODO  
  4.    return "success";  
  5. }  
  6.   
  7. @ModelAttribute("name")  
  8. public String getName(){  
  9.     return name;  
  10. }  

 

Session存储:

可以利用HttpServletReequest的getSession()方法

Java代码  收藏代码
  1. @RequestMapping("/login.do")  
  2. public String login(String name,String pwd  
  3.                             ModelMap model,HttpServletRequest request){  
  4.      User user = serService.login(name,pwd);  
  5.      HttpSession session = request.getSession();  
  6.      session.setAttribute("user",user);  
  7.      model.addAttribute("user",user);  
  8.      return "success";  
  9. }  

 

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

1,使用RedirectView

2,使用redirect:前缀

Java代码  收藏代码
  1. public ModelAndView login(){  
  2.    RedirectView view = new RedirectView("regirst.do");  
  3.    return new ModelAndView(view);  
  4. }  

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

Java代码  收藏代码
  1. public String login(){  
  2.     //TODO  
  3.     return "redirect:regirst.do";  
  4. }  

 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果手机怎么清理听筒灰尘_怎么清理手机听筒的灰尘?

作为一个专业的强迫症从业者&#xff0c;我已经看不惯手机听筒的灰尘很久了&#xff0c;在经历无数次失败之后&#xff08;针&#xff0c;牙刷&#xff0c;牙签&#xff0c;吸尘器等等&#xff09;。我必须要来分享一个超级实用的方法清理手机听筒的灰尘。那就是&#xff0c;起…

linux mrtg 命令,linux服务器之流量监控(MRTG)

本系列文章原则&#xff1a;灰常详细&#xff0c;灰常简单&#xff0c;新手包学包会&#xff01;因其简单&#xff0c;故未涉及安全性方面的考虑呵&#xff01;本实验服务器为rhel-5-server-i386&#xff0c;客户端为windows xp。本实验所用软件包均在rhel-5-server-i386-dvd.i…

搭建网站必不可少的知识14

安全组配置 “操作”-“安全组配置” 单击“内网入方向”&#xff0c;“添加安全组规则”默认配置即可“确定”。在公网入方向和公网出方向都这样添加上。&#xff08;如果存在就先删除后在添加&#xff09;。现在应该能登录了。 输入密码&#xff0c;点击“确定” 登录后只有一…

8代cpu能跑linux,Intel公布6/7/8代桌面CPU打漏洞补丁性能结果:影响很小

今天&#xff0c;Intel执行副总裁数据、数据中心事业部总经理Navin Shenoy(孙纳颐)发布了第二篇性能测试文章&#xff0c;针对客户端也就是桌面平台用户在打上修复“Spectre”和“Meltdown”漏洞补丁之后的实际情况。对于大部分普通电脑用户来说&#xff0c;性能的影响并不显著…

Spring mvc interceptor配置拦截器

原文&#xff1a;http://blog.csdn.net/liyisong2008/article/details/42915715 -------------------------------------------------------------------------- xml代码&#xff1a; [java] view plaincopy <?xml version"1.0" encoding"UTF-8"?>…

rm: 无法删除swap: 不允许的操作_safe-rm老板再也不用担心我删库跑路啦[视频]

saferm 老板再不怕我删库跑路https://www.zhihu.com/video/1177717527541731328在 linux 上&#xff0c;使用 rm 是一件非常危险的事情(最近又有朋友遇到了我才想起了写这篇文章)&#xff0c;如果不幸手残执行了 rm -rf 删除了重要文件&#xff0c;建议你准备收拾包袱跑路吧。既…

Spring MVC 流程图

Spring工作流程描述1. 用户向服务器发送请求&#xff0c;请求被Spring 前端控制Servelt DispatcherServlet捕获&#xff1b;2. DispatcherServlet对请求URL进行解析&#xff0c;得到请求资源标识符&#xff08;URI&#xff09;。然后根据该URI&#xff0c;调用HandlerMapping获…

kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解

首先介绍一下 Kafka 生产者发送消息的过程&#xff1a;Kafka 会将发送消息包装为 ProducerRecord 对象&#xff0c; ProducerRecord 对象包含了目标主题和要发送的内容&#xff0c;同时还可以指定键和分区。在发送 ProducerRecord 对象前&#xff0c;生产者会先把键和值对象序列…

python图像分割算法_OpenCV-Python 图像分割与Watershed算法 | 三十四

目标 在本章中&#xff0c; 我们将学习使用分水岭算法实现基于标记的图像分割 我们将看到&#xff1a;cv.watershed() 理论 任何灰度图像都可以看作是一个地形表面&#xff0c;其中高强度表示山峰&#xff0c;低强度表示山谷。你开始用不同颜色的水(标签)填充每个孤立的山谷(局…

NEO从源码分析看共识协议

2019独角兽企业重金招聘Python工程师标准>>> 0x00 概论 不同于比特币使用的工作量证明&#xff08;PoW&#xff09;来实现共识&#xff0c;NEO提出了DBFT共识算法。DBFT改良自股权证明算法&#xff08;PoS&#xff09;&#xff0c;我没有具体分析过PoS的源码&#x…

怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)

使用ubuntu的小伙伴们直接使用命令sudo apt-get installr-base-dev或者r-base搞定。然而对于使用centos的我却一直卡在安装这一步&#xff0c;十分的悲催&#xff0c;只有羡慕的份&#xff0c;但也不至于在linux上使用不上R。办法还是有的&#xff0c;自己总结出两种方法&#…

linux部署node web,nodejs怎么部署到Linux上?

nodejs怎么部署到Linux上&#xff1f;下面本篇文章就来给大家介绍一下在Linux上部署nodejs的方法&#xff0c;希望对大家有所帮助。nodejs部署到Linux上的方法如下&#xff1a;(建议先安装xshell和xftp)1、到nodejs官网下载压缩包(选择合适自己系统的版本)&#xff0c;放到Linu…

python树莓派 是什么_用树莓派和Python给你的植物浇水

我想指出&#xff0c;我绝不是电子学专家。如果你让我制作一个电路图或者解释某件电子产品工作原理的细节&#xff0c;我会一无所知。在生活中&#xff0c;我对电力的工作原理有了基本的了解&#xff0c;我只是胡乱摆弄了一下电子元件就完成了这个工程。话虽如此&#xff0c;当…

htmlspecialchars() 函数过滤XSS的问题

htmlspecialchars()函数的功能如下&#xff1a; htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是&#xff1a; & &#xff08;和号&#xff09;成为 &" &#xff08;双引号&#xff09;成为 " &#xff08;单引号&#xff09;成为 …

用mac的python写网络爬虫_在mac下使用python抓取数据

2015已经过去&#xff0c;这是2016的第一篇博文&#xff01; 祝大家新年快乐&#xff01; 但是我还有好多期末考试&#xff01; 还没开始复习&#xff0c;唉&#xff0c;一把辛酸泪&#xff01; 最近看了一遍彦祖的文章叫做 所以自己也想小试牛刀.于是便开始动手写,但初次接触,…

運輸配送信息Delivery_Information

为什么80%的码农都做不了架构师&#xff1f;>>> 運輸配送信息Delivery_Information 金銀倉會選用以下運輸公司&#xff0c;為客戶配送磁磚傢俬潔具&#xff1a; 佛山冠昌達中港運輸&#xff08;散貨或包車&#xff0c;近佛山石灣的磁磚倉庫&#xff0c;近樂從傢俬城…

Spring+SpringMVC+Mybatis 多数据源整合

原文地址&#xff1a;http://blog.csdn.net/q908555281/article/details/50316137 ----------------------------------- 此篇文章是基于Spring3.0和mybatis3.2的总体大概流程 &#xff1a;1. 拷贝所需jar 2.写一个数据库切换的工具类&#xff1a;DataSourceContextHolder&am…

查看mysql sql执行器优化后的sql

EXPLAIN EXTENDED select s.* from student s where s.sid in ( select sid from sc where sc.cid 0 and sc.score 100); show WARNINGS;

git ssh拉取代码_win10下git初始安装及配置工作

git安装从https://git-scm.com/https://git-scm.com/download/win 中下载安装包&#xff0c;点击exe文件运行&#xff0c;选择安装路径即可安装。git配置初次运行git前的配置&#xff0c;新建文件夹1、 新建一个文件夹&#xff0c;用来存放代码的文件夹---2、 打开文件夹&#…

联想m7400pro清零方法_联想打印机怎么清零 联想打印机清零方法【教程】

今天小编为读者挑选出了联想 打印机 部分机型的清零方式&#xff0c;希望阅读完这篇文章能帮助到各位。LJ3010A、LJ3116A、LJ3220A清零方式先点击控制面板上的“联机”按钮&#xff0c;让打印机处于脱机状态&#xff0c;再点击“执行”按钮进行打印。先点击控制面板上的“联机”…