SpringMVC 接收请求参数和向页面传值_mvc request传值-程序员宅基地

技术标签: spring mvc  J2EE  

一、SpringMVC接收请求参数:

 

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. }  

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/andybbc/article/details/50836899

智能推荐

FFmpeg源码分析:sws_scale图像缩放与图像转换_sws_scale函数bad src image pointers_徐福记456的博客-程序员宅基地

​FFmpeg在libswscale模块提供图像缩放与图像转换功能,比如1080P图像缩放为720P,或者YUV422P转换为YUV420P。图像缩放函数有个SwsContext结构体作为上下文,上一篇文章有介绍:SwsContext图像转换上下文。_sws_scale函数bad src image pointers

微信推送和支付宝付款接口的使用-程序员宅基地

  我们在开发的过程中经常会碰到调用微信或者支付宝接口进行付款,付款完成之后,如果用户绑定了我的账号,我只要有活动了,就要给这个关注我的用户推动消息,让用户知道,比如说,我们经常会关注一些公众号,然后这些公众号只要有了消息就会自动给我推送,我们以后也会遇到这种推送的需求,那么具体如何使用我们的代码来实现这种需求呢?还有就是用户在付款的时候,我如何给他调用支付宝的接口呢?下面我们就来具体的..._支付宝微信付款接口

不可不知的STL sort函数实现原理_std::sort原理 堆排序-程序员宅基地

sort函数一直以来被认为是快排,今天看到一篇文章,感觉自己知道的太少。建议大家还是要去啃《STL源码剖析》,我也要去读了,先立个flag,后续1-2个月写STL源码剖析上得到的启发。函数声明#include &lt;algorithm&gt; template&lt; class RandomIt &gt;void sort( RandomIt first, RandomIt last )..._std::sort原理 堆排序

冒烟测试_冒烟测试策略-程序员宅基地

概念冒烟测试是在软件开发过程中的一种针对软件版本包的快速基本功能验证策略,是对软件基本功能进行确认验证的手段,并非对软件版本包的深入测试。冒烟测试也是针对软件版本包进行详细测试之前的预测试,执行冒烟测试的主要目的是快速验证软件基本功能是否有缺陷。如果冒烟测试的测试例不能通过,则不必做进一步的测试。进行冒烟测试之前需要确定冒烟测试的用例集,对用例集要求覆盖软件的基本功能。这种版本包出包之后的验证方法通常称为软件版本包的门槛用例验证。主要目的快速验证软件基本功能是否有缺陷,如果冒烟测试的测试例不能通_冒烟测试策略

谈谈e话通中wmp的应用-程序员宅基地

很奇怪?e话通怎么能用wmp来播放并发送信息呢??就我所知道wmp客户端并不提供媒体发送的功能.查遍了整个wmp sdk也没发现微软在wmp中提供多媒体数据流动的信息,不像directshow.搞了很久,我想大概思路应该是通过IWMPControls的get_currentPosition 来取得当前位置,然后再从本地文件中读出当前帧并发送,

[Errno 14] Could not open/read repomd.xml-程序员宅基地

在配置CentOS-6.0-x86_64-bin-DVD2.iso作为本地yum源的时候,碰到相当多的问题:----------------------------------------- 问题一 ------------------------------------------将CentOS-6.0-x86_64-bin-DVD2.iso挂载在/mnt上,...

随便推点

(树状数组)多校训练7 Segment Game-程序员宅基地

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5372官方题解:##1004. Segment Game题解:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。用两个树状数组搞定。时间复杂度nlog#include #include #in

Android原生SQLite操作以及greenDao框架操作SQLite-程序员宅基地

本文分为2个大的方面来讲SQLite操作:原生操作,框架操作原生操作首先我们要创建一个数据库打开帮助类 ,目的是创建数据库和表,升级数据库import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;publi

Tips 解决Xcode 8以后的Alcatraz等插件不可用_xcdoe的alcatraz过时了吗-程序员宅基地

前言出意外了,我竟然又要写博客了,emmm,安卓开发有很多插件太方便了,搞的我想搞一些插件用用,上一次用插件是三年多以前了,好久没用也不如以前那么简单方便了,Xcode不知道升级了多少次,so索性了解了Alcatraz和其他插件为什么在Xcode10上不能用的问题,然后解决了,亲测可用。原文地址:解决Xcode 8以后的Alcatraz等插件不可用我根据自己实践结果给大家分享一下~..._xcdoe的alcatraz过时了吗

PHP反序列化--简单ctf题--pop链(thinkphp5.1.X)漏洞复现_php ctf题目_熊是本熊的博客-程序员宅基地

前言:PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法,这些都是PHP内置的方法。__construct 当一个对象创建时被调用__destruct 当一个对象销毁时被调用__wakeup() 使用unserialize时触发__sleep() 使用serialize时触发__call() 在对象上下文中调用不可访问的方法时触发__callStatic() 在静态上下文中调用不可访问的方法时触发__get() 用于从不可访问的属性读取数据__set() 用于将数据写入不可访_php ctf题目

Docker 安装NIFI_docker nifi_Denny辉的博客-程序员宅基地

docker run --name nifi \ -p 9090:9090 \ -d \ -e NIFI_WEB_HTTP_PORT='9090' \ apache/nifi:latest_docker nifi

蓝牙Ble开发(支持API18<Android 4.3 Jelly>及以上)-程序员宅基地

  Android4.3(api18)开始支持蓝牙Ble(Bluetooth Low Energy)开发,到Android5.0(api21)开始修改了部分方法库,详细请看“蓝牙Ble开发(支持API21<Android 5.0 Jelly>及以上)”。  https://note.youdao.com/ynoteshare1/index.html?id=4e9e1de1..._android studio ble api21