文件上传
pom.xml
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
springmvc.xml 中添加对文件上传支持的组件:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 必须和用户JSP 的pageEncoding属性一致,以便正确解析表单的内容 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 文件最大大小(字节) 1024*1024*50=50M-->
<property name="maxUploadSize" value="52428800"></property>
<!--resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常-->
<property name="resolveLazily" value="true"/>
</bean>
JSP :
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
<input type="file" name="xxx">
<input type="submit" value="上传">
</form
文件上传请求方法:
/**
* 图片上传
* @param request
* @param xxx
* @return
*/
@RequestMapping("/upload")
public String upload(HttpServletRequest request, MultipartFile xxx){
try {
FileUtils.copyInputStreamToFile(xxx.getInputStream(),new File("D://img/"+xxx.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
//跳转会成功页面
return "success";
}
如果要访问这张图片的话可以在idea中配置文件请求映射:
访问 /SSM/img + 文件名 就能请求到我们上传的文件名了:
JSON 返回处理
直接在请求方法上添加 @ResponseBody
这个注解就ok了,当文件请求 listToJSON
这个方法的时候返回值会转json格式到前台。我们就可以直接通过ajax去发请求类。
ps:如果一个类的所有方法都要转json.输出。那么就直接在类上加@ResponseBody
不需要每个方法都加。
@RequestMapping("/listToJSON")
@ResponseBody
public List listToJSON(){
PageBean pageBean = new PageBean();
List<Map> list = this.bookService.listPager(null, pageBean);;
return list;
}
JSON 返回结果处理工具类
有时候文件处理json格式很麻烦,这时候文件可以专门写一个工具类。来帮我们简化开发:
package com.cpc.ssm.util;
public class JSONResult {
// 响应业务状态
private Integer status;
// 响应消息
private String msg;
// 响应中的数据
private Object data;
private String ok; // 不使用
public static JSONResult build(Integer status, String msg, Object data) {
return new JSONResult(status, msg, data);
}
public static JSONResult ok(Object data) {
return new JSONResult(data);
}
public static JSONResult ok() {
return new JSONResult(null);
}
public static JSONResult errorMsg(String msg) {
return new JSONResult(500, msg, null);
}
public static JSONResult errorMap(Object data) {
return new JSONResult(501, "error", data);
}
public static JSONResult errorTokenMsg(String msg) {
return new JSONResult(502, msg, null);
}
public static JSONResult errorException(String msg) {
return new JSONResult(555, msg, null);
}
public JSONResult() {
}
public JSONResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public JSONResult(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
public Boolean isOK() {
return this.status == 200;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getOk() {
return ok;
}
public void setOk(String ok) {
this.ok = ok;
}
}
展例:
@RequestMapping("/ok")
@ResponseBody
public JSONResult ok(){
return JSONResult.ok("这是 data 域对象(可以放入 集合 实体类 map stirng)");
}
@RequestMapping("/error")
@ResponseBody
public JSONResult error(){
return JSONResult.errorMsg("请求异常");
}