Day02:
SpringMVC返回类型:
- void
使用void 返回类型, 可以使用以下对象 设置作用域 请求转发 重定向 直接响应数据
HttpServletRequest转发、
HttpServletResponse重定向、
HttpServletResponse直接响应内容(getWriter)等方式达到与前段JSP的数据通讯
- ModelAndView
使用默认支持类 model 传递数据
优化方式: 配置解析器的 前缀 和后缀
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
- String 字符串(逻辑视图名)
SpringMVC在默认情况下返回字符返回的是逻辑视图名称
会从InternalResourceResolver中配置的父路径找对应的jsp页面
//forward 转发
格式:forward:+内部请求路径(/类上路径+/方法路径)
//request 重定向
格式:redirect:+请求路径(可以是外部系统的)
- json 字符串
注解 | 说明 |
---|---|
@RestController | 注释在类上,生命一个bean,且表示此类中返回类型都是json(@Controller+@ResponseBody) |
@ResponseBody | 注解在方法上,表示此方法返回类型为json |
springmvc框架,默认使用HttpMessageConverter消息转换器,进行json格式数据转换,
在xml配置中使用
< mvc:annotation-driven/ >
配置处理器映射器和处理器适配器的时候,默认支持Jackson的数据转换
导入Jackson依赖
SpringMVC的Restful支持
REST,即Representational State Transfer的缩写。直接翻译的意思是"表现层状态转化"。
Restful风格 就是一种面向资源服务的API设计方式,它是规范,是标准, 只是提供了一组设计原则和约束条件 .使用URL定位资源,用HTTP动词(GET,POST,DELETE,PATCH)描述操作 ,
springMVC对restful的支持主要是设置@RequestMapping的method属性,或者使用子注解
路径 | 请求方式 | 描述 | 原始 |
---|---|---|---|
/customer | GET | 获得用户列表 | /findCustomerAll |
/customer | POST | 创建用户 | /saveCustomer |
/customer/1 | DELETE | 删除id=1的用户信息 | /deleteCustomrById |
/customer/1 | PUT | 修改id=1的用户信息整体信息 | /updateCustomerByIdAll |
/customer/1 | PATCH | 修改id=1的用户信息部分信息 | /updateCustomerById |
/customer/1 | GET | 查询id=1的用户信息部分信息 | /findCustomerById |
SpringMVC文件上传
文件上传回顾
前提:
- form表单的method属性设置为post方式
- form表单的enctype属性设置为multipart/form-data,
- form表单值需要一个文本选择域
form表单为“multipart/form-data”的时候,实际就是二进制流的传输,后台就不能使用普通的string或者简单的pojo对象接受,
搭建图片服务器:
问题:
在集群环境下,用户第一次访问 A 服务器 上传文件,当用户第二次访问 B 服务器时 下载之前上传的文件,B 服务器没有,访问失败
分析:
专门配置一台图片服务器, 当 用户第一次访问 A 服务器时 上传文件到图片服务器, A服务器只存储文件路径, 当用户第二次访问 B 服务器 下载文件,直接根据id从图片服务器下载即可
意义:
1、提供统一的文件服务
2、实现业务与非业务功能的分离
3、降低业务服务器的压力
- 文件上传依赖:
<!-- 文件上传包版本 -->
<fileupload.version>1.3.1</fileupload.version>
<commonsio.version>2.4</commonsio.version>
<commonscodec.version>1.9</commonscodec.version>
<!-- 文件上传组件依赖 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${fileupload.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commonsio.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commonscodec.version}</version>
</dependency>
- 配置CommonsMultipartResolver
<!-- 配置文件上传解析器,说明:
1.文件上传解析器bean的id属性值,必须是文件上传解析器接口名称首字母小写:multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- maxUploadSize:文件上传大小限制。以字节为单位。 10m=10*1024*1024-->
<property name="maxUploadSize" value="10485760"></property>
<!-- maxInMemorySize:配置内存缓冲区的大小。以字节为单位。 4k=4*1024-->
<property name="maxInMemorySize" value="4096"></property>
<!-- defaultEncoding:配置字符集编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
</bean>