SpringMVC参数绑定总结
springMvc作用:
a) 接收请求中的参数
b) 将处理好的数据返回给页面
参数绑定(就是从请求中接收参数):
a) 默认支持的类型: request, response, session, model
可以在接收参数时加上也可以去掉, 看自己需要
b) 简单类型: string, double,integer, long, boolean等
要求: 要求页面上input框的name属性值必须等于接收时的变量名称
c) pojo类型:
要求: 要求页面上input框的name属性值必须等于pojo中的属性名称
d) QueryVo:
要求: 页面上input框的name属性值必须等于vo中的属性.属性.属性....
e) converter转换器:
可以转换类型, 对于像字符串转日期这样springMvc不能进行自动类型转换的,我们可以自己写.
高级参数绑定(从请求中接收参数)
1. 数组:
需求: 批量删除
要求:要求页面上input框的name属性值必须等于vo中的属性名称
2. list:
需求: 批量修改
要求: 页面上input框的name属性值必须
等于vo中的itemsList+[索引下标]+.list中泛型的属性名称
@RequestMapping用法:
1. 用在方法上: @RequestMapping标记url到请求方法的映射
2. 用在类上: 窄化请求映射
3. 限制请求方式的类型: 如果限制的请求类型, 而访问的类型不匹配会报405错误
@RequestMapping(value="/list", method=RequestMethod.POST)
public ModelAndView list123() throws Exception{
controller方法返回值:
1. ModelAndView :可以将返回给页面的数据放入model中, 通过view来指定页面的路径
2. String :(推荐使用)
a) 返回普通字符串就认为是页面的路径, 可以借助默认支持的参数Model将数据返回给页面
b) 请求转发: 浏览器中url不发生改变, request域中的数据可以带到转发后的方法中
springMvc中请求转发, 返回以forward:字符串开头后面跟转发的url路径
request.setAttribute("id", items.getId());
model.addAttribute("id", items.getId());
return "forward:toEdit.action";
c) 重定向: 浏览器中url发生改变, request域中的数据不可以带到重定向后的方法中
springMvc中重定向,返回以redirect:字符串开头, 后面跟重定向的url路径
不管是请求转发还是重定向, model中的数据都可以带到请求转发或者是重定向后的方法中
request.setAttribute("id", items.getId());
model.addAttribute("id", items.getId());
return "redirect:toEdit.action";
相对路径和绝对路径问题:
相对路径: url中相对于当前路径
forward:或者是redirect:字符串后不以斜杠/开头的
绝对路径: url中从项目名后开始算
forward:或者是redirect:字符串后以斜杠/开头的
一般在当前类方法的目录中跳转使用相对路径,
如果跳转到其它类的方法中使用绝对路径
3. void:
//推荐ajax的时候使用, 其它时候一般不推荐使用
//如果controller方法返回值为void, 还想跳转到页面就需要使用原生的request和response,这样就破坏了springMvc
//的体系结构, 就不走视图解析器, 所以需要写页面的完整的路径,
Springmvc中异常处理(架构级别的异常处理)
异常分类:
a) 运行时异常 就是bug
b) 自定义异常 可以自己定义一些业务级别异常
图片上传:
springMvc有上传的接口, 但是没有实现, 所以需要第三方实现
json数据交互:
springMvc中有对json的支持的接口但是没有实现, 所以需要第三方的实现, 比如 jackson杰克逊的jar包
@RequestBody可以将json格式的字符串自动转换成java中的对象, 要求json中的key必须等于pojo中的属性名称
@ResponseBody可以将返回的java对象自动转换成json格式字符串返回给页面
Springmvc实现Restful
就是对url的一个命名规范, 最早出自于一个博士的论文,后来一些大企业看到后逐渐推广开.
要求: url中只有名词没有动词(一般国人英文水平不太好,所以不强制要求), 不能有问号传参数
提交数据路径: ${pageContext.request.contextPath }/items/toEdit/${item.id}
controller中接收:
@RequestMapping("/toEdit/{id}")
public String toEdit123(@PathVariable("id")Integer id,
拦截器:
作用: 拦截请求, 一般做登录权限验证使用比较多
单个拦截器执行顺序:
===Interceptor1====preHandle==
===Interceptor1====postHandle==
===Interceptor1====afterCompletion==
多个拦截器的执行顺序: 等于springMvc.xml文件中对拦截的配置顺序
作业: 用户登录权限验证
登录页面: 用户名, 密码框, 登录按钮
登录controller:
a) 跳转到登录页面方法
b) 登录的用户名密码提交到此方法进行验证, 如果登录成功, 将登录信息写入session, 并跳转到首页
如果没有登录成功,则跳转到登录页面重新进行登录
拦截器: 拦截所有请求
放行登录controller中的所有方法
判断session中是否有用户的登录信息
如果有则放行, 如果没有跳转到登录页面进行登录
SpringMVC参数绑定总结的更多相关文章
- 一篇文章搞定SpringMVC参数绑定
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...
- [转载]SpringBoot系列: SpringMVC 参数绑定注解解析
本文转载自 https://www.cnblogs.com/morethink/p/8028664.html, 作者写得非常好, 致谢! SpringMVC 参数绑定注解解析 本文介绍了用于参数绑 ...
- SpringMVC参数绑定,这篇就够了!
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...
- SpringMvc参数绑定出现乱码解决方法
在SpringMvc参数绑定过程中出现乱码的解决方法 1.post参数乱码的解决方法 在web.xml中添加过滤器 <!-- 过滤器 处理post乱码 --> <filter> ...
- SpringMVC参数绑定(未完待续)
1. Strut2与SpringMVC接收请求参数的区别 Struts2通过action类的成员变量接收SpringMVC通过controller方法的形参接收 2. SpringMVC参数绑定流程 ...
- SpringMVC参数绑定(从请求中接受参数)
参数绑定(从请求中接收参数) 1)默认类型: 在controller方法中可以有也可以没有,看自己需求随意添加. httpservletRqeust,httpServletResponse,httpS ...
- SpringMVC 参数绑定注解解析
本文介绍了用于参数绑定的相关注解. 绑定:将请求中的字段按照名字匹配的原则填入模型对象. SpringMVC就跟Struts2一样,通过拦截器进行参数匹配. 代码在 https://github.co ...
- SpringMVC参数绑定(四)
1.默认支持的参数类型 处理器形参中添加如下类型的参数处理适配器会默认识别并进行赋值. HttpServletRequest 通过request对象获取请求信息 HttpServletResponse ...
- SpringMVC参数绑定、Post乱码解决方法
从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上. springmvc中,接收页面提交的数据是通过方法形参来接收.而不是在control ...
随机推荐
- PTA2
一.题目:7-1 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成“贰万叁仟壹百零捌”元.为了简化输出,用 ...
- android BluetoothAdapter蓝牙BLE扫描总结
1.android 4.3.1(Build.VERSION_CODES.JELLY_BEAN_MR2)增加的startLeScan(callback)方法,官方在5.0之后不建议使用,实测此方法,4. ...
- python,验证码生成
<pre>import string import random from PIL import Image from PIL import ImageDraw from PIL impo ...
- VBA随机地牢生成
无聊啊--于是,我想做一个随机地图. 但是我很懒,不想做. 但是身体很诚实. 这次是直接在Excel中制作的地图,但是,VB的执行效率很慢,我代码的效率也很慢,导致,一旦地图长宽稍大,就会出现好几分钟 ...
- create-react-app源码解读之为什么不搞个山寨版的create-react-app呢?
最近把 vue-cli@2.x 和 create-react-app 的源码都看了一遍.由于现在官方推荐使用 vue-cli@3.0 ,改动比较大,所以就不写关于 vue-cli 的了(据说是因为 v ...
- python-变量、if else语句 、for循环、while循环(4月26号)
变量: 五.注意:python是可执行程序 在linux写python第一行必须写#!/usr/bin/env python(声明解释器在windows中写python第一行需要写# -*- codi ...
- SparkStream:4)foreachRDD详解
转载自:http://blog.csdn.net/jiangpeng59/article/details/53318761 foreachRDD通常用来把SparkStream运行得到的结果保存到外部 ...
- shopex-百度爬虫抓取过于频繁导致php-cgi占用CPU过高的解决办法
步骤 1.开启slowlog:php-fpm里修改配置 观察slowlog里的超时文件,然后修改相应超时文件 2.1修改完后,仍然无效,查看access.log,发现大量如下的请求 220.181.1 ...
- 收藏品:MP3播放器
大三下学期的时候,有一段生活激情似火. 那时候,我在外边接了项目,把宿舍的哥们儿都组织了起来,一起开发赚钱.我们在小区里租了房子,又多借了一台电脑,哥几个轮流上阵写代码.准备考研的兄弟也帮手做饭,我和 ...
- vue+nginx编译部署
1.项目路径下vue-test输入命令npm run build编译完成后会发现在vue-test文件夹下多出一个dist文件夹这里面就是编译好的文件了.2.网上下载nginx,下载地址http:// ...