1.文件上传
1.1part方式
第一:在web.xml中的dispatcherServlet中配置<multipart-config/>
第二:通过req.getPart("文件名")获取part,若存在工程下,则req.getServletContext().getRealPath("路径名"),然后part.write到路径+文件名。
若发送多个文件,则getParts后遍历写出即可。
1.2springmvc方式
导入commons-fileupload和commons-io包后,在controller中参数直接使用MultipartFile接取,需注意参数名应与前端文件名一致,接取后可用fileUtils.writeByteArrayToFile写出
2.文件下载
若采用超链接直接请求资源,这浏览器支持的格式会直接打开,不支持的下载。
若超链接访问controller,使用编码下载,则所有格式都会下载。具体思路:
req.getServletContext().getRealPath("文件名")后读取服务器文件到字节数组中,再设置请求头attachment为文件名。最后用ResponseEntity有参构造携带字节数组,请求头,状态码后返回。
3.静态资源处理
第一种:不全部拦截,采用筛选后缀的方式拦截(如.do)
第二种:在springmvc中使用
<mvc:resources mapping="" location=""></mvc:resources>的方式一一将静态资源放行
第三种(主要方式):在springmvc中使用 <mvc:default-servlet-handler/>直接放行静态资源
4 异常处理
方式一:在web.xml配置error-page,写死错误页
方式二:创建类实现HandlerExceptionResolver接口,重写解决异常方法。
方式三:
1.编写枚举类
2.自定义异常,异常中包含枚举类
3.创建包装类用于返回前端
4.使用@ControllerAdvice注解表名解决异常的控制器,再用 @ExceptionHandler(Exception.class)注解表明解决异常的类型。参数中接收异常,用异常得到枚举类,取出枚举类属性填入包装类后返回。
5 拦截器
创建类实现HandlerInterceptor接口,选择性重写preHandle,postHandle,afterCompletion方法。
在springmvc.xml中进行配置 <mvc:interceptors>
6 日期格式转换
1.key=value
使用@DateTimeFormat(pattern = )注解局部转换
或实现Converter<String, Date>接口重写convert方法后在springmvc.xml配置
<bean id="conversionService2" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
id需写在mvc:annotation-driven中,conversion-service=id
2.json
@JsonFormat(pattern = )
这个注解不写,也拥有默认值