一.参数绑定的过程

从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收。

二.springmvc默认支持的类型

默认支持的类型:直接在controller方法形参上定义下边类型的对象,就可以使用这些对象。在参数绑定过程中,如果遇到下边类型直接进行绑定。

HttpServletRequest:通过request对象获取请求参数。

HttpServletResponse:通过response响应处理信息。

HttpSession:通过session对象获得session对象中存放的信息。

Model/ModelMap:model是一个接口,modelMap是一个接口实现 。作用:将model数据填充到request域。

三.参数绑定

1.简单类型的绑定

通过@RequestParam对简单类型的参数进行绑定。如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。通过required属性指定参数是否必须要传入,如果设置为true,没有传入参数,报下边错误:

其它简单类型的参数绑定大同小异。

2.pojo类型绑定

页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo。

页面:

controller中形参:

pojo类型:

3.自定义参数绑定(实现日期类型参数绑定)

转换器:

配置方式:

<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 自定义参数绑定-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<!-- 这里可以定义自定义类型转换,不一定是日期类型 -->
<bean class="com.ssm.controller.converter.CustomDateConverter"/>
</list>
</property>
</bean>

@PathVariable

org.springframework.web.bind.annotation.PathVariable,可以动态或得url请求参数中的值,@PathVariable只支持一个属性value类型为String,表示绑定的名称,如果省略则绑定默认参数 。

url为:http://localhost:8099/springmvc_mybatis/items/editItems.action?id=3,则自动将url中的模版变量${id}绑定到通过@PathVariable注解的同名参数上即,id变量被赋值1.

springmvc和struts2的区别

1、springmvc基于方法开发的,struts2基于类开发的。

springmvc将url和controller方法映射。映射成功后springmvc生成一个Handler对象,对象中只包括了一个method。

方法执行结束,形参数据销毁。

springmvc的controller开发类似service开发。

2、springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。

3、经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。

2.post乱码

在web.xml添加post乱码filter

<!--    处理参数绑定过程中post乱码-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

以上可以解决post请求乱码问题。

对于get请求中文参数出现乱码解决方法有两个:

1.修改tomcat配置文件添加编码与工程编码一致,如下:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

2对参数进行重新编码

String userName new
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

补充....

最新文章

  1. split分割大文件--包含通过awk按规则分割文件到对应子文件
  2. Transaction Replication6:Transaction cleanup
  3. 《C#图解教程》读书笔记之六:接口和转换
  4. 为GDI函数增加透明度处理
  5. ios8消息快捷处理——暂无输入框
  6. IOS 创建App的最佳捷径
  7. win7+IE11 中开发工具报错occurredJSLugin.3005解决办法
  8. Linux Curl常用命令使用【转】
  9. Webappbuilder开发快速预览
  10. QQ空间魔力日志大全SduSRZ
  11. angularJS--多个控制器之间的数据共享
  12. vue-cli webpack 全局引用jquery
  13. PreparedStatement的用法及优点
  14. ECNU 3263 - 丽娃河的狼人传说
  15. 常用sql语法初级
  16. 奔跑吧DKY——团队Scrum冲刺阶段-Day 2
  17. http请求与传参
  18. linux源代码编译安装OpenCV
  19. Java(Android)编程思想笔记03:在Android开发中使用MVP模式
  20. Qt中QScrollArea类的简单使用心得

热门文章

  1. mysql 12章_MySQL数据库的高级管理
  2. RabbitMQ学习第二记:工作队列的两种分发方式,轮询分发(Round-robin)和 公平分发(Fair dispatch)
  3. JS鼠标经过
  4. css---动画封装
  5. css样式初始化代码总结
  6. 下载mysql出现的问题
  7. JPA 基本使用
  8. 尚学linux课程---6、linux命令介绍
  9. Font Awesome 完全兼容 Bootstrap 的所有组件。
  10. springboot配置文件application.properties更新记录(自学使用)