Day06
一、 SpringMVC介绍:主要负责前端控制的框架,主要负责页面和Servlet间的交互,SpringMVC是Spring家族的一大产品,Spring和SpringMVC之间可以做到无缝衔接
回顾servlet:缺点
- 一个Servlet有8行配置文件
- 一个Servlet只能处理一个业务逻辑
addUserServlet,updateUserServlet
一张表有可能有4+n个Servlet 所以会有32+n行配置文件
- 获取属性只能得到字符串类型 需要自己转换类型
- 获取参数的方式只能是 request.getParamters
SpringMVC:优点
- 不管工程中有多少个servlet 只需要配置一个servlet分发器即可
- Springmvc中使用controller替代servlet 一个controller中可以有n个业务逻辑
- 获取参数的类型支持自动转换,而且支持对象的自动封装
- Springmvc有多种获取参数的方式
二、 SpringMVC的入门案例
- 导入jar包:把课前资料里面的jar包全部导入
- 在xml中配置DispatcherServlet 配置方式类似之前的Servlet的配置
- 按下 ctrl+shift+T 打开Open type 输入DispatcherServlet点进去找到类的完整名称
- 复制找到的类名
配置springmvc核心配置文件
代码:创建HelloController实现Controller接口
SpringMVC的工作过程:当用户在浏览器中输入地址访问的时候 首先会由DispatcherServlet拦截,然后通过核心配置文件 找到响应Controller 执行Controller里面的方法
三、 简化Controller
- 在配置文件中 开启包扫描,引入 mvc的约束
- 配置文件中添加包扫描和mvc注解开关
修改Controller代码:
SpringMVC的执行流程:
补充说明:当web工程复制的时候 修改项目名称 需要改两个地方
四、 配置资源解析器
使用资源解析器后 return页面的时候只需要写文件名
五、 获取页面传递过来的参数
六、 快速获取参数的方式:
七、 把接收到的参数 直接封装到对象中
此种方式必须要求属性有set方法必须要有无参的构造方法
引用类型的属性如果注入数据:
需要在表单中标示出层次结构
八、 中文乱码问题
解决中文乱码需要修改两个地方:
- jsp页面
- web.xml中添加过滤器
九、 日期问题:
由于浏览器中的默认日期格式为2018/2/32,而代码中的日期格式为2017-2-32 需要通过下面的代码把浏览器传递过来的格式修改成 - - 的格式
如果不修改会报以下错:
十、 参数的同名提交
如果参数名一样,接收参数时用String类型接收会把多个参数通过“,”合并成一个String,如果想接收到多个值,可以接收参数时 变量声明为数组类型
十一、提交的参数名 和接收的变量类型名称不一致
通过@RequestParam注解解决此问题
DefaultValue 如果没有传递过来参数则为默认值
Required:是必须传递此参数 如果不传 则报错
十二、文件上传
- 表单的提交类型
- 在springmvc配置文件中配置文件上传解析器
- 代码接收
十三、重定向和转发
重定向:两次请求两次响应,不能传参,地址改变
转发 :一次请求一次响应,可以传参,地址不变
默认为转发,如果需要重定向 需要在返回的地址中添加redirect