基于CXF开发RESTFul服务

   REST也就是Representational State Transfer。REST并不特指一种技术,也不是一个标准,它仅仅是一个构架风格。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则通过网络暴露资源给用户。事实上,WWW就是经典的REST架构风格。在服务器端,应用程序状态和功能可以分为各种资源。它向客户端公开。每个资源都使用 URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。客户端通过交换各种资源的表现体来查询或更新资源。资源的表现体包括HTML,XML,JSON等。客户端需要解析响应服务器的表现体。客户端和服务器之间的交互在请求之间是无状态的,无状态请求可以由任何可用服务器应答。
   下面是一个RESTfu例子提供POST和GET两种方式就直接上代码了
   首先在web.xml中添加
   <servlet>
    <servlet-name>testCxf</servlet-name>
    <servlet-class>包名.UserInterface</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>testCxf</servlet-name>
    <url-pattern>/ws/*</url-pattern>
  </servlet-mapping>
然后编写UserInterface类
 
@Path("/userWebServlet")
public class UserInterface extends BaseDao {

private JSONObject jsonobj=new JSONObject();
private JsonDataForWeb jw=new JsonDataForWeb();
    /**
     * 用户登录
     *
     */
    @POST
@Path("/login")
public Response login(@FormParam("utel") String utel,@FormParam("upass") String upass) throws IOException{
//新建一个user对象
Userinfo user=new Userinfo();
    //给user对象的属性赋值
user.setuPass(upass);
user.setuTel(utel);
Userinfo userinfo=session.selectOne("com.dao.UserDao.login",user);
        //创建一个JSONObject对象,将数据封装到JSONObject中,发送给客户端
        int data=(userinfo!=null)?userinfo.getuId():0;
jsonobj.put("data", data);
return Response.ok(jsonobj.toString()).build();

}
       用户注册
       @GET
@Path("/register/{utel},{upass}")
public Response register(@FormParam("utel") String utel,@FormParam("upass") String upass) throws IOException{
//新建一个user对象
Userinfo user=new Userinfo();
    //给user对象的属性赋值
user.setuPass(upass);
user.setuTel(utel);
Userinfo userinfo=session.selectOne("com.dao.UserDao.register",user);
        //创建一个JSONObject对象,将数据封装到JSONObject中,发送给客户端
        int data=(userinfo!=null)?userinfo.getuId():0;
jsonobj.put("data", data);
return Response.ok(jsonobj.toString()).build();

}
}

最后servlet过滤器并且在这个过滤器中设置JAXRSServerFactoryBean 将要发布的接口添加到factoryBean中就可以了

public class UserWebServlet extends CXFNonSpringServlet {


private static final long serialVersionUID = 1L;
@Override
protected void loadBus(ServletConfig cf)
{
super.loadBus(cf);
UserInterface cls=new UserInterface();
ShopInterface spf=new ShopInterface();
//Web server工厂
    JAXRSServerFactoryBean restServer = new JAXRSServerFactoryBean();
    //服务请求路径
    restServer.setAddress("/cxfz");
    //设置服务实现类
    restServer.setServiceBean(cls);
    restServer.create();
}
}

到此一个基于cxf就可以发布,然后访问路径为:
POST的访问路径
http://localhost:8080/工程名称//ws/cxfz/userWebServlet/login
GET的访问路径
http://localhost:8080/工程名称//ws/cxfz/userWebServlet/register/admin,123456

猜你喜欢

转载自xkmoo.iteye.com/blog/2243252