REST

       最近一直在看一些关于rest架构的东西,但看来看去还是对一些细节的概念较为模糊。而且网上或论坛博客都没有一个资深的开发人员用过的文章,只是一些简单的增删改的小demo,始终达不到想要的效果。根据我的经验,在一个大的项目里面是很难只用rest架构就能完成。它更适合中小的项目,而且模块之间依赖性很小的那种。因为毕竟不是所有的东西都能被抽象为资源。大家可以参考一下这篇文章http://blog.csdn.net/maoxiang/article/details/4551434这篇文章中的例子完全可一放在项目中作参考使用。他只是把servlet做了简单的封装,很容易理解,感觉没多少技术含量。但你要永远记清一点,rest是一种架构的风格,不是新技术!

这是一个service的写法:

package com.xx.xx.service;

import net.sf.json.JSONObject;

import com.bayss.ms.common.script.ScriptOperator;

import com.bayss.ms.common.utils.PropertiesUtil;

import com.bayss.rest.IRestRequest;

import com.bayss.rest.IRestResponse;

import com.bayss.rest.IRestService;

import com.bayss.rest.RestException;

public class BusinessDataService implements IRestService {

public void service(IRestRequest request, IRestResponse response)throws RestException {

String args = "";

String[] value  = request.getHttpRequest().getParameterValues("func");

for(int j = 0;j<value.length;j++){}

String str = value[0];

String[] s = str.split(",");

JSONObject jsonData = new JSONObject();

for (int i = 0; i < s.length; i++) {

String func ="";

args=  jsonData.put(s[i], func).toString();

}

//返回请求值

response.writeResponse(args);

}

}

大概就是从url里面取到请求的参数,然后service做处理返回给客户端。

然后在WEB-INF下面添加一个rest.xml,这个xml由RestConfig.java来处理:

<?xml version="1.0" encoding="UTF-8"?>

<rest-config>

<services>

<!-- business -->

<service class="com.xx.xx.service.BusinessDataService">/business/data</service>

</services>

<interceptors>

<interceptor class="com.xx.xx.interceptor.LogInterceptor"></interceptor>

</interceptors>

</rest-config>

添加的url就在<services></services>里面配置,访问的时候就是:localhost:8080/项目名称/business/data

然后就是web.xml的配置:

<!-- rest framework -->

<servlet>

<servlet-name>RestServlet</servlet-name>

<servlet-class>com.xx.rest.support.ServletRestDispatcher</servlet-class>

<init-param>

<param-name>restConfig</param-name>

<param-value>/WEB-INF/rest.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>RestServlet</servlet-name>

<url-pattern>/*</url-pattern>

</servlet-mapping>

就这么简单。不过大家在用的时候还是要在看一遍我开头写的内容!

相关推荐