关于SpringMVC页面向Controller传参的问题,看了网上不少帖子,大多总结为以下几类:

1、直接把页面表单中相关元素的name属性对应的值作为Controller方法中的形参。

  这个应该是最直接的,我看的那本书从百度的编辑器中取内容content时就直接用的这个方法:

<!--页面-->
<form action="<%=basePath%>saveUeditorContent" method="post">
<!-- 加载编辑器的容器 -->
<div style="padding: 0px;margin: 0px;width: 100%;height: 100%;" >
<script id="container" name="content" type="text/plain">
</script> <!--why dose this use script tag here???-->
</div>
<input name="test_input" value="hengha">
<button type="submit"> 保存</button>
</form>
    //Controller
@RequestMapping(value="/saveUeditorContent")
public ModelAndView saveUeditor(String content, String test_input){
ModelAndView mav = new ModelAndView("myJSP/test03");
//addObject方法设置了要传递给视图的对象
mav.addObject("content", content);
mav.addObject("input_content", test_input);
//返回ModelAndView对象会跳转至对应的视图文件。也将设置的参数同时传递至视图
return mav;
}

2、通过@RequestParam把页面表单中相关元素的name属性对应的值绑定Controller方法中的形参。

用于URL带?场景,/saveUeditorContent?content=123&input_content=456,参数可以设置是否必须required,默认值defaultvalue

    @RequestMapping(value="/saveUeditorContent")
public ModelAndView saveUeditor(@RequestParam(value="content",required=true,defaultValue="123") String content, @RequestParam("test_input") String input_content){
ModelAndView mav = new ModelAndView("myJSP/test03");
mav.addObject("content", content);
mav.addObject("input_content", input_content);
return mav;
}

3、通过@PathVariable获取@RequestMapping中URL路径带入的{变量}绑定Controller方法中的形参。

用于URL直接传参场景,/saveUeditorContent/123/456

    @RequestMapping(value="/saveUeditorContent/{content}/{test_input}")
public ModelAndView saveUeditor(@PathVariable("content") String content, @PathVariable("test_input") String input_content){
ModelAndView mav = new ModelAndView("myJSP/test03");
mav.addObject("content", content);
mav.addObject("input_content", input_content);
return mav;
}

4、创建属性名对应页面表单中相关元素带setter和getter方法的POJO对象作为Controller方法中的形参。

//太晚了不是特别熟不整了

5、把HttpServletRequest对象作为Controller方法中的形参。

    @RequestMapping(value="/saveUeditorContent")
public ModelAndView saveUeditor(HttpServletRequest request){
ModelAndView mav = new ModelAndView("myJSP/test03");
mav.addObject("content", request.getParameter("content"));
mav.addObject("input_content", request.getParameter("test_input"));
return mav;
}

约束说明:

a) 1中的形参,2中的RequestParam("参数"),3中的URL中的{参数}以及PathVariable("参数"),4中的POJO对象属性,5中的request.getParameter("参数")均需要和前台页面中相关元素name属性对应的值匹配。

b) 2中的RequestParam("参数"),3中的PathVariable("参数")绑定到后面跟的形参,后台在处理时根据实际需要可以改变参数名称。

SpringMVC页面向Controller传参的更多相关文章

  1. struts2 页面向Action传参方式

    1.基本属性注入 我们可以直接将表单数据项传递给Action,而Action只需要提供基本的属性来接收参数即可,这种传参方式称为基本属性注入.例如 jsp页面: <s:form method=& ...

  2. springmvc jsp向controller传参,一直为null

    怎么检查都无解 重启电脑好了

  3. angularjs不同页面间controller传参方式,使用service封装sessionStorage

    这里分享一个我在实际项目中,使用service封装的一个依赖sessionStorage的传参服务. 这里先说下大背景,在我们的实际开发中,登陆之后一般会存在一个token,这个token将会贯穿全场 ...

  4. JS form跳转到新标签页并用post传参

    通过js实现跳转到一个新的标签页,并且传递参数.(使用post传参方式) 1 超链接<a>标签  (get传参)  <a href="http://www.cnblogs. ...

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

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

  6. C# 页面向controller中跳转匹配方法的时候,当controller中有两个重载方法时候,不发生跳转

    在ajax中的URL跳向controller一个方法时候,controller中有两个重载的方法,ajax不发生跳转,当删除另外一个方法之后,正常跳转. 不知道,是我自己写的有问题,还是control ...

  7. springboot controller传参,对象映射

    Post请求,对象映射时,在参数 加 @RequestBody: 传入对象内字段的json才能映射 {"legendData": [100,90,80,70,60,50,40,30 ...

  8. angular 跳转页面时传参

    首先,你需要已经配置过你的rout,比如: $stateProvider .state('firstPage',{ url:'/Page/firstPage', templateUrl: 'Page/ ...

  9. Vue框架(四)——路由跳转、路由传参、cookies、axios、跨域问题、element-ui模块

    路由跳转 三种方式: $router.push / $router.go / router-link to this.$router.push('/course'); this.$router.pus ...

随机推荐

  1. python-简单邮件报警

    在scrapy爬虫项目中经常遇到 爬取数据时报错无法及时处理 导致数据爬取不完整 只能先查看log才能发现报错 首先写一个简单的邮件发送模块 """ @file: ema ...

  2. IIS中 flv、swf 文件无法播放

    解决方案: 1.服务器安装flash,这是必须的. 2.MIME类型添加两个:名称.swf,值application/x-shockwave-flash:名称.flv,值flv-application ...

  3. python语法_json_pickle

    ---恢复内容开始--- dic = {"name":"kevin","age":"20"} f = open(&quo ...

  4. Linux常用服务器搭建

    1.Linux常用服务器构建-ftp服务器 ftp服务器 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”. 用于Internet上的控制文件 ...

  5. 位运算-出现k次与出现一次

    题目:数组中arr只有一个数出现了1次,其他的数都出现了k次,请输出这个只出现了一次的数. 思路:这道题目要求使用位运算实现,如果采用数据结构Map就会简单很多.解此题前先了解不进位加法的思想,比如两 ...

  6. [Swift]LeetCode605. 种花问题 | Can Place Flowers

    Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...

  7. [Swift]LeetCode891. 子序列宽度之和 | Sum of Subsequence Widths

    Given an array of integers A, consider all non-empty subsequences of A. For any sequence S, let the  ...

  8. 你应该知道的 volatile 关键字

    前言 不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能. 首先来看看为什么会出现这个关键字. 内存可见性 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个 ...

  9. Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录

    基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...

  10. 什么样的IT业务适合外包?

    很多公司都应该遇到过这样的问题,什么样的IT业务才适合外包呢? 百度大家都可以百度的到一些信息,比如: 针对这样的推荐答案,是否也需要认真思考一下,我需要外包的业务是什么样的业务?是不是真的适合外包? ...