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. SpringCloud核心教程 | 第一篇: 使用Intellij中的Spring Initializr来快速构建Spring Cloud工程

    spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环 ...

  2. 洛谷——P1012 拼数

    https://www.luogu.org/problem/show?pid=1012#sub 题目描述 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整 ...

  3. c3p0的经常使用配置方式

    1:第一种方式很easy c3p0.driverClass=com.mysql.jdbc.Driver c3p0.jdbcUrl=jdbc:mysql://localhost:3308/databas ...

  4. Win7下IE11点击无反应的解决方法

    平台:win7 sp1 32bit 问题:点击Internet Explorer在开始菜单.快捷栏的图标和安装目录下的程序均没有反应,鼠标在变成漏斗后恢复原状再无反应.但搜狗浏览器和360浏览器下使用 ...

  5. Quick Sort Algorithm

    快速排序算法实现代码: //============================================================================ // Name : ...

  6. 【Codeforces Round #299 (Div. 2) E】Tavas and Pashmaks

    [链接] 我是链接,点我呀:) [题意] 游泳+跑步比赛. 先游泳,然后跑步. 最先到终点的人是winner. 但是现在游泳的距离和跑步的距离长度都不确定. S和R. 给你n个人,告诉你每个人游泳的速 ...

  7. DB2学习总结(1)——DB2数据库基础入门

    DB2的特性 完全Web使能的:可以利用HTTP来发送询问给服务器. 高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布数据库和数据负荷:能够以最小的数据丢失快速地恢复,提供多种备份 ...

  8. C#自定义配置文件节的实现

    1.配置文件:(注意configSections必须放在最上面否则会报错) <?xml version="1.0" encoding="utf-8" ?& ...

  9. Altium Designer敷铜的规则设定

    InPolygon 这个词是铺铜对其他网络的设置,铺铜要离其他网络远点,因为腐蚀不干净会对 电路板有影响... 问题一:: 如下图所示,现在想让敷铜与板子边界也就是keepoutlayer的间距小一点 ...

  10. [Nuxt] Build a Navigation Component in Vue.js and Use in a Nuxt Layout

    You can isolate parts of templates you want to re-use into components, but you can also reuse those ...