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

本文介绍了解决Spring MVC项目中的常见问题,包括乱码问题、拦截所有资源的问题、类转换异常处理方法,以及如何实现文件上传和下载的功能。

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.表单必须是post
2设置编码格式pplication/x-www-form-urlencoded 不支持文件上传
	multipart/form-data 支持文件上传
3.文件选择框  input type=file
4.<!-- 启用文件上传 -->
	<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;
   }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值