SpringMVC页面向Controller传参
关于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传参的更多相关文章
- struts2 页面向Action传参方式
1.基本属性注入 我们可以直接将表单数据项传递给Action,而Action只需要提供基本的属性来接收参数即可,这种传参方式称为基本属性注入.例如 jsp页面: <s:form method=& ...
- springmvc jsp向controller传参,一直为null
怎么检查都无解 重启电脑好了
- angularjs不同页面间controller传参方式,使用service封装sessionStorage
这里分享一个我在实际项目中,使用service封装的一个依赖sessionStorage的传参服务. 这里先说下大背景,在我们的实际开发中,登陆之后一般会存在一个token,这个token将会贯穿全场 ...
- JS form跳转到新标签页并用post传参
通过js实现跳转到一个新的标签页,并且传递参数.(使用post传参方式) 1 超链接<a>标签 (get传参) <a href="http://www.cnblogs. ...
- jnhs-SpringMVC jsp页面向controller传递参数的五种方式
一共是五种传参方式: 一:直接将请求参数名作为Controller中方法的形参 public String login (String username,String password) : 解 ...
- C# 页面向controller中跳转匹配方法的时候,当controller中有两个重载方法时候,不发生跳转
在ajax中的URL跳向controller一个方法时候,controller中有两个重载的方法,ajax不发生跳转,当删除另外一个方法之后,正常跳转. 不知道,是我自己写的有问题,还是control ...
- springboot controller传参,对象映射
Post请求,对象映射时,在参数 加 @RequestBody: 传入对象内字段的json才能映射 {"legendData": [100,90,80,70,60,50,40,30 ...
- angular 跳转页面时传参
首先,你需要已经配置过你的rout,比如: $stateProvider .state('firstPage',{ url:'/Page/firstPage', templateUrl: 'Page/ ...
- Vue框架(四)——路由跳转、路由传参、cookies、axios、跨域问题、element-ui模块
路由跳转 三种方式: $router.push / $router.go / router-link to this.$router.push('/course'); this.$router.pus ...
随机推荐
- CUDA编程模型
1. 典型的CUDA编程包括五个步骤: 分配GPU内存 从CPU内存中拷贝数据到GPU内存中 调用CUDA内核函数来完成指定的任务 将数据从GPU内存中拷贝回CPU内存中 释放GPU内存 *2. 数据 ...
- 动态添加echarts
本次只贴js和jsp代码 jsp只需添加一个div即可, <div class="fLayout-right-box"> <hy:layoutArea width ...
- 2018,你与 i 春秋的故事都在这
年终岁末,深思回顾,过去的一年我们共同创造了很多回忆,有欢乐,有感动,更有收获.回首2018年,伴随着激情与挑战,我们共创了很多佳绩,一起来看看吧. 课程&实验 2018新增原创录制实战视频课 ...
- Python 远程开机
用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机. 本文目标 远程开机原理 Python 远程开机代码实现 Python ...
- [Swift]LeetCode600. 不含连续1的非负整数 | Non-negative Integers without Consecutive Ones
Given a positive integer n, find the number of non-negativeintegers less than or equal to n, whose b ...
- shell脚本_查找无效网址
#!/bin/bashif [ $# -ne 1 ];then echo -e "$Usage: $0 URL\n" exit 1;fi echo Broken ...
- Java8 新特性 | 如何风骚走位防止空指针异常
文章整理翻译自 https://winterbe.com/posts/2015/03/15/avoid-null-checks-in-java/ 文章首发于个人网站: https://www.exce ...
- python +selenium识别不来click事件,出现报错
assert "login" in browser.title browser.implicitly_wait(10) elem = browser.find_element_by ...
- http缓存与离线缓存
一.http协议实现缓存 1. 缓存头部 通用缓存.条件缓存.缓存控制三大类 头部名称 说明 请求/响应 通用缓存头部 控制客户端是否向服务器发送请求或者是服务端响应请求 cache-contro ...
- 基于winserver部署Apollo初次体验(附.net客户端demo)
前言 配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一.试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公 ...