以后的开发,大部分是发送ajax,因此这四种传递参数的方法,并不太常用。作为了解吧

第一种:使用原生 Servlet

在控制器的响应的方法中添加Servlet中的一些作用域:HttpRequestServlet,或者HttpSession。

【注意】在方法中,ServletContext的对象是不能作为函数参数传递的

  1.   @RequestMapping("/demo01")
  2. public String demo01(HttpServletRequest req,HttpSession sessionParam) {
  3. //request 作用域
  4. req.setAttribute("req", "req的值");
  5. //session作用域
  6. sessionParam.setAttribute("sessionParam", "sessionParam的值");
  7. HttpSession session = req.getSession();
  8. session.setAttribute("session", "session 的值");
  9. //application作用域
  10. ServletContext application =req.getServletContext();
  11. application.setAttribute("application","application 的值");
  12.  
  13. return "/index.jsp";
  14. }

那么在index.jsp页面中就可以通过上面的application域,session域,request域访问上面HandlerMethod返回的参数。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. request:${requestScope.req }<br/>
  11. session:${sessionScope.session }<br/>
  12. sessionParam:${sessionScope.sessionParam }<br/>
  13. application:${applicationScope.application }<br/>
  14. </body>
  15. </html>

【注意】SpringMVC的HandlerMehtod方法中是不可以直接通过getServletContext方法来获取ServletContext对象的,应为这个方法是Servlet对象中的方法,但是可以通过request对象调用request对象中的getServletContext()方法来获取getServletContext对象

第二种:使用 Map 集合

2.1 把 map 中内容放在 request 作用域中

2.2 spring 会对 map 集合接口进行实现,实现类其实是 BindingAwareModelMap

  1. @RequestMapping("demo2")
  2. public String demo2(Map<String,Object> map){
  3.   System.out.println(map.getClass());
  4.   map.put("map","map 的值");
  5.   return "/index.jsp";
  6. }
  1. map:${map }<br/>
  2. map:${requestScope.map}

第三种:使用 SpringMVC 中 Model 接口,本质也是通过request域,把内容最终放入到 request 作用域中.

  1. @RequestMapping("/demo03")
  2. public String demo03(Model model) {
  3. model.addAttribute("model", "model 的值");
  4. return "/index.jsp";
  5. }
  1. model:${model }<br/>
  2. model:${requestScope.model }<br/>

第四种:使用 SpringMVC 中 ModelAndView 类

  1. @RequestMapping("/demo4")
  2. public ModelAndView demo4(){
  3. //参数,跳转视图
  4. ModelAndView mav = new ModelAndView("/index.jsp");
  5. mav.addObject("mav", "mav 的值");
  6. mav.addObject("mavKey", "mav的值");
  7. return mav;
  8. }
  1. mav:${mav }<br/>
  2. mav:${mavKey }<br/>

SpringMVC 学习 十一 springMVC控制器向jsp或者别的控制器传递参数的四种方法的更多相关文章

  1. jsp传递参数的四种方法

    1.form表单 2.request.setAttribute();和request.getAttribute(); 3.超链接:<a herf="index.jsp"?a= ...

  2. JSP页面间传递参数的5种方法

    JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp? ...

  3. SpringMVC学习(十一)——SpringMVC实现Resultful服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72514034 Restful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格 ...

  4. (转)SpringMVC学习(十一)——SpringMVC实现Resultful服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72514034 Restful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格 ...

  5. JSP向后台传递参数的四种方式

    Jsp页面传值的方法 一.通过Form表单提交传值 客户端通过Form表单提交到服务器端,服务器端通过 Java代码 request.getParameter(String xx); 来取得参数(xx ...

  6. jnhs-SpringMVC jsp页面向controller传递参数的五种方式

    一共是五种传参方式: 一:直接将请求参数名作为Controller中方法的形参 public  String login (String username,String password)   : 解 ...

  7. (转)SpringMVC学习(三)——SpringMVC的配置文件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)——SpringMVC介绍与入门这篇文章后 ...

  8. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  9. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

随机推荐

  1. problem:vue组件局部刷新,在组件销毁(destroyed)时取消刷新无效问题

    场景: 一个群发消息列表(数组) 列表下有多条消息(元素) 每条正在发送的消息数据状态需要实时刷新,发送完成时需要显示成功提示符合且不需要刷新,然后3秒消失.首次显示列表时,已经成功的状态不显示这个成 ...

  2. 几种流行Webservice框架

    一. 几个比较流行的Webservice框架: Apache Axis1.Apache Axis2.Codehaus XFire.Apache CXF.Apache Wink.Jboss  RESTE ...

  3. [UE4]手柄显示射线

    1.实时动态从手柄处发出一条射线 2.可以在Event Tick事件中使用LineTraceByChannel方法.注意Draw Debug Type(射线生命周期)要选择For One Frame. ...

  4. java中的静态变量、静态方法与静态代码块详解与初始化顺序

      我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...

  5. (整理)EF分页的实现

    最近做一个小功能,需要数据分页,因为小框架使用的是EF,因此查询了一下EF的分页. EF分页主要用到了skip和take两个方法: GetListBy(lamda xxxxx).skip(PageSi ...

  6. JS高级-ES6

    let/const case1 { //js var a = 10 a = 20 // es6 let b = 10 b = 30 const c = 10 c = 40 //报错 } case2 { ...

  7. oracle入坑日记<五>数据表

    1   数据表 1.1.数据表是存放数据字段信息的地方:在Oracle,数据表拥有者单位是用户,同时数据表属于表空间.如: 登录my_user用户在orcl表空间下创建的表就是 my_user用户在o ...

  8. python 贝叶斯算法

    自我理解贝叶斯算法也就是通过概率来判断C是属于A类还是B类,下面是具体代码(python3.5 测试通过) 文字流程解释一波 1 )  加载训练数据和训练数据对应的类别 2)   生成词汇集,就是所有 ...

  9. python TKinter部分记录

    http://blog.shouji-zhushou.com/python-gui-tkinter-grid%E7%BD%91%E6%A0%BC%E5%87%A0%E4%BD%95%E5%B8%83% ...

  10. python读取excel表

    from xlrd import open_workbookimport re #创建一个用于读取sheet的生成器,依次生成每行数据,row_count 用于指定读取多少行, col_count 指 ...