近期需要写一个android项目,服务端由我负责,打算使用spring+mybatis+restful搭建。搭建过程如下,具体细节日后有时间再整理。
1、新建一个Dynamic web项目,Eclipse版本如下:Eclipse Java EE IDE for Web Developers.Version: Luna Release (4.4.0)
2、引入spring mybatis jersy等jar包,还有其他项目需要的jar包也要引入(比如数据库连接jar包,myspring-batis整合jar包等)。引入之后需要 经过buid path操作,否则会出错。具体过程如下,选择其中的一个library库,右键点击选择build path->config buildpath->Deployment assembly->add->java build path entries->选择类库加入即可。
3、整合spring+mybatis:通过xml配置文件将spring和mybatis整合。
ApplicationContext.xml
Mybatis-Configuration.xml
4、服务器端逻辑代码结构如下:
com.info.test是功能模块,TestService.java是接口,对应TestServiceImpl是接口实现部分,内部需要实例化DataModelMapper,然后能使用Mybatis中的增删改查了。
com.info.rest主要是处理客户端传来的请求,获取参数,调用相应的功能等等。
package com.info.rest;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.http.MediaType;
import com.info.basic.DataModelMapper;
import com.info.test.TestServiceImpl;
@Path("/TestService")
public class TestServiceREST {
private ApplicationContext ct;
private String[] configFiles = { "config/ApplicationContext.xml" };
@GET
@Path("/getUser")
// @Consumes(MediaType.TEXT_PLAIN)
// @Produces(MediaType.APPLICATION_JSON)
public String getUser(String username,@Context HttpServletRequest req)throws JSONException{
ct = new ClassPathXmlApplicationContext(configFiles);
String retData = "";
String userName = (String) req.getSession().getAttribute("userName");
DataModelMapper dtMapper = (DataModelMapper) ct.getBean("DataModelMapper");
TestServiceImpl testService = new TestServiceImpl(dtMapper);
List> userList = testService.selectUsers();
HashMap result = new HashMap();
result.put("data", userList);
retData = "[" + JSONObject.fromObject(result).toString() + "]";
return retData;
}
}
这里面有一个问题:
// @Consumes(MediaType.TEXT_PLAIN)
// @Produces(MediaType.APPLICATION_JSON)
如果写上这两句会报错,原因还没找出来。
com.info.basic里面暂时只写了mybatis中的增删改查语句,采用接口的形式调用。
5、配置web.xml文件,代码如下:
RestfulTest
Jersey REST Service
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.info.rest
1
Jersey REST Service
/rest/*
http://localhost:8080/RestfulTest/rest/TestService/getUser
以上就是搭建过程,其中涉及到许多细节问题,有些地方也没完全搞明白,三个框架和架构对于自己来说都是新知识,也是第一次使用这三个东西写项目。等下次有时间再进行总结。