spring接收请求参数:

1,使用HttpServletRequest获取

  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一样

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

3,自动注入Bean属性

  1. <form action="login">
  2. 用户名:<input name="name"/>
  3. 密码:<input name="pass"/>
  4. <input type="submit" value="登陆">
  5. </form>
  6. //封装的User类
  7. public class User{
  8. private String name;
  9. private String pass;
  10. }
  1. @RequestMapping("/login")
  2. public String login(User user)
  3. {
  4. log.info(user.getName());
  5. log.info(user.getPass());
  6. }

 

向页面传值:

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

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

2,使用ModelAndView对象

3,使用ModelMap对象

4,使用@ModelAttribute注解

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

  1. @RequestMapping("/login")
  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中

  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中

ModelMap对象的 addAttribute,put两个方法有什么区别就是 addAttribute是不允许添加空值的key,put是允许的

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

Session存储:

可以利用HttpServletReequest的getSession()方法

  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 contorller跳转到另一个controller并传值

示例均从createOrderForOld跳转到createOrder

      1: forward 请求转发

@RequestMapping(value ="/createOrderForOld")

public String createOrder(HttpServletRequest request,ModelMapmodel) {

return"forward:/createOrder";

}

@RequestMapping(value ="/createOrder")

public String createOrder(String oderId,String orderName,ModelMap model) {

return"index;

}

 forward跳转,是请求转发,参数自动跳转,所以当http://localhost:8080/my-app/createOrderForOld?orderId=123 该链接请求createOrderForOld接口后 请求转发到createOrder接口时,参数自动带过来了,createOrder中oderId自动赋值为“123”,参数名称需一致,否则无法传参赋值。

2: redirect 重定向

@RequestMapping(value ="/createOrderForOld")

public String createOrder(HttpServletRequest request,ModelMap model) {

model.put("orderName","newOld");

return"redirect:/createOrder?orderId=123";

}

@RequestMapping(value ="/createOrder")

public String createOrder(String oderId,String orderName,ModelMap model) {

return"index";

}

当请求http://localhost:8080/my-app/createOrderForOld     链接请求createOrderForOld接口后 请求重定向到createOrder接口时,通过model.put方法 ,createOrder中oderName自动赋值为“newOld”,通过参数拼接orderId自动赋值为“123”。

故redirect跳转到另一个controller是通过model还是拼接url均可。参数名称需一致,否则无法传参赋值。

RedirectAttributes和ModelMap或Model不推荐一起使用,因为在redirect传值时,同时存在,只有RedirectAttributes中参数值被传递,ModelMap或Model中变量不会传递。

spring mvc controller接收请求值及controller之间跳转及传值的更多相关文章

  1. Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...

  2. 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...

  3. Spring MVC 中的基于注解的 Controller【转】

    原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 H ...

  4. Spring MVC 中的基于注解的 Controller(转载)

           终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法 ...

  5. 解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容

    解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容 解决方案 在 Web.xml文件中 加入以下代码 <!--解决ajax Put与Del请求无法接收到传输的内容-- ...

  6. Spring MVC同时接收一个对象与List集合对象

    原:https://blog.csdn.net/u011781521/article/details/77586688/ Spring MVC同时接收一个对象与List集合对象 2017年08月25日 ...

  7. Spring MVC 异步处理请求,提高程序性能

    原文:http://blog.csdn.net/he90227/article/details/52262163 什么是异步模式 如何在Spring MVC中使用异步提高性能? 一个普通 Servle ...

  8. Spring MVC在接收复杂集合参数

    Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...

  9. Spring MVC的映射请求

    一.SpringMVC常用注解 @Controller 声明Action组件 @Service    声明Service组件    @Service("myMovieLister" ...

随机推荐

  1. 洛谷 P2504 [HAOI2006]聪明的猴子

    洛谷 P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水 ...

  2.  洛谷 P3056 [USACO12NOV]笨牛Clumsy Cows

    P3056 [USACO12NOV]笨牛Clumsy Cows 题目描述 Bessie the cow is trying to type a balanced string of parenthes ...

  3. 栅格数据AE

    转自原文 栅格数据AE 两个星期以来一直与栅格数据打交道,对AO的栅格部分应该有了一定的理解,下面是自己的一点体会,希望高手指教:-) 1.栅格数据的存储类型 栅格数据一般可以存储为ESRI GRID ...

  4. 词向量 word2vec

    看的这一篇的笔记 http://licstar.net/archives/328 看不太懂. 要学的话,看这里吧,这里把一些资料做了整合: http://www.cnblogs.com/wuzhitj ...

  5. Google 免费公共 DNS 服务器

    Google 免费公共 DNS 服务器 http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html DNS 8. ...

  6. JQuery的index()函数

    1.index(),这里的索引从0开始计数. jQueryObject.index( [ object ] ):1.1 如果没有指定参数object,则返回当前元素在其所有同辈元素中的索引位置.1.2 ...

  7. Oracle中暂时表空间的清理

    作者:iamlaosong Oracle暂时表空间主要用来做查询和存放一些缓冲区数据. 暂时表空间消耗的主要原因是须要对查询的中间结果进行排序.暂时表空间的主要作用: 索引create或rebuild ...

  8. [D3] Start Visualizing Data Driven Documents with D3 v4

    It’s time to live up to D3’s true name and potential by integrating some real data into your visuali ...

  9. python的list和数组的区别

    list不是数组(额外安装Pynum) 1)可修改,list数据结构内容可以被程序修改 2)可动态增减,长度不固定 3)list里面的数据项可以是不同类型数据,也可以是list 4)两个list可“链 ...

  10. 每日技术总结:jquery datetimepicker,微博QQ好友QQ空间微信等分享接口

    前言: 1.jquery datetimepicker 今天遇到一个日期控件格式的问题,默认选中显示的并不是设定的值,而是当天的日期.于是去查了一遍文档. 参考文章:jquery datetimepi ...