springmvc的乱码问题及文件上传下载

来源:互联网 发布:人工智能龙头股一览表 编辑:程序博客网 时间:2024/06/03 15:00

1. 解决乱码问题
1.配置tomcat为UTF-8 (URIEncoing=”UTF-8”)2.配置过滤器(配置characterEncodingFilter类中的encoding(设置request),forceEncoding(设置response))<!-- 配置乱码 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

2. 解决springmvc拦截/所有资源问题:

在配置文件中引入mvc标签xmlns:mvc="http://www.springframework.org/schema/mvc"http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd<!-- springmvc 配置拦截/  所有资源都被拦截 图片无法展示 将除控制层以外的资源交回给servlet处理 --><mvc:default-servlet-handler/><!-- 将springmvc注解的action交给springmvc处理 --><mvc:annotation-driven></mvc:annotation-driven>类转换异常处理:一般都是jar冲突将原来的aspectj公司的aspectjeaver jar包换成org.aspecj中aspectjeaver的jar包

3. 文件上传

使用springMVC包装的解析器(CommonsMultipartResolver)进行文件上传控制 需要引入 apache的 common-fileupload组件包1.表单必须是post2设置编码格式pplication/x-www-form-urlencoded 不支持文件上传multipart/form-data 支持文件上传3.文件选择框  input type=file4.<!-- 启用文件上传 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 限制上传文件大小5M --><property name="maxUploadSize" value="5242880"></property></bean>5.<!--实现上传文件action方法接受文件 -->     @RequestMapping(value="/fileUpload")   public String fileUpload(@RequestParam("myImg") MultipartFile file) throws        IllegalStateException, IOException{       File destFile=new File("c:/"+file.getOriginalFilename());       file.transferTo(destFile);       return "/param/suc.jsp";   }

4.文件下载

@RequestMapping(value="/fileDowload")   public ResponseEntity<byte[]> fileDowload() throws Exception{       String fileName="用户.txt";       //需要下载的目标文件       File file=new File("c:/"+fileName);       //设置响应头       HttpHeaders hh=new HttpHeaders();       //设置下载的文件的名称       hh.setContentDispositionFormData("attachment", URLEncoder.encode(fileName, "UTF-8"));       //读取目标文件为二进制数组       byte[] fileByte=FileCopyUtils.copyToByteArray(file);       //构建ResponseEntity对象       ResponseEntity<byte[]> re=new ResponseEntity<byte[]>(fileByte, hh, HttpStatus.CREATED);       return re;   }