前一段时间写了Jersey+Jetty搭建后台框架,使用的是Jersey1.19版本,写上传下载文件时引入jersey-media-multipart依赖是2.0版本的,索性把整个框架都升级到2.0版本了。
jersey1x和2x的区别我就不详细说了,只提供修改点。
主要是资源文件检测的包改变了,还有ServletContainer从1x是com.sun.jersey.spi.container.servlet.ServletContainer切换为2x的org.glassfish.jersey.servlet.ServletContainer。
1x的Jersey依赖是:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
2x的依赖是:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.0</version>
</dependency>
先截图看下整体文件的分布情况,跟之前搭建的Jersey框架大体上是差不多的:
依赖增加
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
AbstractFileDownloadAction:
/**
* 2017年4月29日 黑苹果
*/
package com.black.apple.framework.jersey.rest.action.common;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.black.apple.framework.exception.FrameworkErrorCode;
import com.black.apple.framework.exception.FrameworkException;
import com.black.apple.framework.jersey.utils.JsonDecodeUtil;
/**
* @author 黑苹果 2017年4月29日
*/
public abstract class AbstractFileDownloadAction
{
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractFileDownloadAction.class);
/**
* Action主方法
*
* @param request
* request
* @return Response
*/
public Response exe