使用jersey搭建的restful接口,不一定是最优方案。
springMVC 可能才是最完美的解决方案。
1.配置maven,加载jersey相关的jar包
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-fastinfoset</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>1.9</version>
<!-- 去除自带的spring版本 -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>2.配置web.xml文件
<!-- Jersey Servlet 配置 -->
<servlet>
<servlet-name>JerseyServlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JerseyServlet</servlet-name>
<url-pattern>/REST/*</url-pattern>
</servlet-mapping>3.编写接口API
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import net.sf.json.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.sand.mag.bean.QSRentaResultInBean;
import com.sand.mag.bean.QSRentalInBean;
import com.sand.mag.bean.QSRentalOutBean;
import com.sand.mag.common.MAGConstant;
import com.sand.mag.operation.QSRentalOperation;
import com.sand.mag.operation.QSRentalResultOperation;
import com.sand.mag.operation.base.OPCaller;
import com.sand.mag.operation.base.OperationContext;
import com.sand.mag.utils.StrUtil;
@Component
@Path("/QSRentalAPI")
public class QsRentalAPI {
private final static Log logger = LogFactory.getLog(QsRentalAPI.class);
@Autowired
private OperationContext context;
@Path("QSRental")
@Produces({ MediaType.TEXT_PLAIN })
@POST
public String qsRental(@Context HttpServletRequest request) {
String response = "";
try {
String json = StrUtil.buildJsonString(request);
QSRentalInBean bean = (QSRentalInBean) JSONObject.toBean(
JSONObject.fromObject(json), QSRentalInBean.class);
context.setAttribute(QSRentalOperation.IN_BEAN, bean);
OPCaller.call(QSRentalOperation.ID, context);
response = (String) context
.getAttribute(QSRentalOperation.OUT_STRING);
} catch (Exception e) {
e.printStackTrace();
if (e.getMessage().equals(MAGConstant.C_CHECK_SIGN_FAIL)) {
return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_CHECK_SIGN_FAIL,
MAGConstant.M_CHECK_SIGN_FAIL);
}
if (e.getMessage().equals(MAGConstant.C_SYSTEM_EXCEPTION)) {
return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_SYSTEM_EXCEPTION,
MAGConstant.M_SYSTEM_EXCEPTION);
}
return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_FAIL,
MAGConstant.M_FAIL);
}
logger.info("返回数据 : " + response);
return response;
}
@Path("QSRentalSendResult")
@Produces({ MediaType.TEXT_PLAIN })
@POST
public String qsRentalSendResult(@Context HttpServletRequest request) {
String response = "";
try {
QSRentaResultInBean bean = new QSRentaResultInBean(request);
context.setAttribute(QSRentalResultOperation.IN_BEAN, bean);
OPCaller.call(QSRentalResultOperation.ID, context);
response = (String) context
.getAttribute(QSRentalResultOperation.OUT_STRING);
} catch (Exception e) {
e.printStackTrace();
if (e.getMessage().equals(MAGConstant.C_SYSTEM_EXCEPTION)) {
return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_SYSTEM_EXCEPTION,
MAGConstant.M_SYSTEM_EXCEPTION);
}
return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_FAIL,
MAGConstant.M_FAIL);
}
logger.info("返回数据 : " + response);
return response;
}
}
火狐浏览器有插件:HttpRequester方便测试
测试地址:
http://localhost:8080/TESTAPI/TEST/******
慢慢调试吧
本文介绍了如何使用jersey搭建RESTful接口,尽管可能不是最优化的解决方案,但详细讲述了配置maven加载jersey库以及设置web.xml文件的过程。同时推荐了火狐浏览器的HttpRequester插件用于接口测试,并提供了测试示例URL。

1493

被折叠的 条评论
为什么被折叠?



