1. 程式人生 > >使用jersey搭建restful介面

使用jersey搭建restful介面

使用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/******

慢慢除錯吧