使用jersey搭建restful接口

本文介绍了如何使用jersey搭建RESTful接口,尽管可能不是最优化的解决方案,但详细讲述了配置maven加载jersey库以及设置web.xml文件的过程。同时推荐了火狐浏览器的HttpRequester插件用于接口测试,并提供了测试示例URL。

使用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;
	}

}


4.测试

火狐浏览器有插件:HttpRequester方便测试

测试地址:

http://localhost:8080/TESTAPI/TEST/******

慢慢调试吧





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值