总结
json
-
json是一种基于JavaScript 语法开放的轻量级数据交换格式
-
导包
- jackson-annotations-2.5.0.jar
- jackson-core-2.5.0.jar
- jackson-databind-2.5.0.jar
-
后台使用
@RequestMapping("/add") @ResponseBody public Emp add(Emp emp){ return emp; }
-
对日期格式的处理
-
后台向前台传输格式时
-
在日期的get属性上添加
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
-
-
前台向后台传输格式时
-
在日期的set属性上添加
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-
-
-
避免IE返回json时下载文件的情况
<!-- 开启spring对MVC的支持 --> <mvc:annotation-driven> <!-- 避免在IE浏览器中返回JSON时出现下载文件的情况 --> <mvc:message-converters> <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
文件的上传(重点)
-
在上传的时候在form表单的属性中配置
<form action="/loadon" method="post" enctype="multipart/form-data">
-
在spring-mvc.xml中配置文件的最大尺寸
<!-- 设置文件最大的尺寸 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置上传文件的最大尺寸为10MB --> <property name="maxUploadSize"> <!-- spring el写法:10MB --> <value>#{1024*1024*10}</value> </property> <!-- 效果同上 <property name="maxUploadSize" value="1048576" /> --> </bean>
-
将上传的文件拷贝下来
@Controller public class LoadOnController { @RequestMapping("/loadon") @ResponseBody public void loadon(HttpServletRequest req,String username,MultipartFile photo) throws Exception{ if(!photo.isEmpty()){ //获取输入流 InputStream in = photo.getInputStream(); //通过UUID获取新的名字 String namePath = UUID.randomUUID().toString().replace("-", "")+photo.getOriginalFilename(); //得到前面的路径 String realPath = req.getServletContext().getRealPath("/myFile"); File dir = new File(realPath); //判断是否有改路径 if(!dir.exists()){ dir.mkdirs(); } //拼接路径 File file = new File(dir,namePath); //获取输入流 OutputStream out = new FileOutputStream(file); //通过工具拷贝数据 IOUtils.copy(in, out); //释放资源 out.close(); in.close(); } } }
文件的下载(有时还是会用)
@Controller
public class LoadDownController {
@RequestMapping("/loaddown")
public void loadDown(HttpServletRequest req,HttpServletResponse resp,String name) throws Exception{
//获取前面的路径
String realPath = req.getServletContext().getRealPath("/download");
File file = new File(realPath,name);
//获取输入流
InputStream in = new FileInputStream(file);
//设置编码
//ie浏览器
if(req.getHeader("User-Agent").toUpperCase().indexOf("TRIDENT")!=-1){
name = URLEncoder.encode(name, "utf-8");
//电脑自带edge【edʒ】浏览器
}else if(req.getHeader("User-Agent").toUpperCase().indexOf("EDGE")!=-1){
name = URLEncoder.encode(name, "utf-8");
}else{//其他浏览器
name = new String(name.getBytes("UTF-8"),"ISO-8859-1");//转码的方式
};
//设置弹窗
//设置相应头为 文件下载
resp.setContentType("multipart/form-data");
resp.setHeader("Content-Disposition", "attachment;fileName="+name);
//获取输出流
ServletOutputStream out = resp.getOutputStream();
//拷贝
IOUtils.copy(in, out);
//释放资源
out.close();
in.close();
}
}
过滤器
-
写一个类实现HandlerInterceptor,其中preHandle方法用于请求之前拦截,返回值boolean决定是否拦截
-
spring-mvc.xml配置
<mvc:interceptors> <mvc:interceptor> <!-- 拦截的路径 /*只能拦截一层 /a /b --> <mvc:mapping path="/**"/> <!-- 不拦截的路径 --> <mvc:exclude-mapping path="/fileloadup.jsp"/> <!-- 自己定义的拦截器位置 --> <bean class="cn.itsource.hello.MyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>