我承认有点标题党了,不过题目中所说的几项技术确实有其相似之处,欲知事情原委,且听我详细道来。
项目一开始只是不满 struts 庞大的体积,于是想自己根据其原理实现一个tiny 版。后来的开发中觉得,完全可以把上述的ajax、Restuful web service的一些思想加入进来。经过几周的努力,便开发出了一个基本成型的web 框架,暂且起名为unicorn(独角兽,吼吼)。下文开始便对这个自编写的框架做一些列的介绍,并且初步打算是将其开源,希望能一起交流和完善它。
首先,为了能快速了解它是什么,先来看一下配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<routers>
<router class="com.mh.router.MySessionCheckRouter"></router>
</routers>
<actions>
<action class="com.mh.action.UserAction"></action>
<action class="com.mh.action.InformationAction"></action>
<action class="com.mh.action.MobileAction"></action>
</actions>
</config>
上面就是整个工程的配置文件,可以看出需要配置的东西非常少,只需要制定action类 和 router类有哪些就Ok。框架奉行约定大于配置的思想,至于请求如何分发,这个不需要人工配置,框架自动解决。这里要介绍两个概念Action 和 Router,熟悉Struts的肯定都知道Action,Action替代Servlet、JSP时代的Servlet,所有提交的请求由struts分发给不同的Action来处理。这里道理也是一样的,Action就是经过框架处理后的请求接受者。再来说一下Router,字面意思路由器,学过计算机网络的都知道,ip数据包在网络上之所以能够顺利到达,就是因为路由器根据路由表来来确定出来传输的途径。这里Router也是这个作用,根据访问服务器的URL来制定分发策略。Router是完全可以自定义的,用户可以定义自己的Router来制定URL分发的策略,并且用户自定义的Router比系统默认的Router有更高的优先权。
二、URL上做文章
/UserAction/login/username=admin&&password=admin
先来介绍系统MethodRouter的处理方式。上面的url根据"/"分为三个部分,第一部分是请求的Action类,第二部分是类中的方法Method,第三部分是提交的参数Param。这一点受上篇文章优酷的架构里URL设计的启发。
经过这样的设计,就明白在上述配置文件中为何可以如此简单了。
当然也可以不以这样的方式,框架提供自定义Router的支持。比如你想这样处理URL:/前台页面/子栏目/子栏目
想实现上面的方式,就可以自己定义Router,在Router里面获取上述的URL,然后做处理、forward到相应的jsp页面。
三、使用Json传输数据
Ajax请求很容易处理json数据,ajax可以与系统轻松交互。
当初Web Service使用SOAP的xml格式传输数据,如今也有人指责这是大费周折。Restful方式提倡遵循HTTP语义,完全使用URL结合GET、POST、PUT、DELETE来传输请求,结果在roil阵营里广泛使用,认为是web service更优雅的方式。所以本框架也吸取他们的优点,也完全可以通过url传输请求的数据,如上述URL中的Param部分。不过没有遵循Restful强调的Http语义,全部使用Get和POST的请求方式,当然也可以制定为其他,这完全看你的心情,因为这对功能实现无关紧要。而且我觉得统一使用一种,更避免了需要指定请求方式的麻烦。
数据的返回使用json格式,比SOAP更为轻量简洁和优雅,而且有更多的平台直接支持。如在android平台,本身就支持json格式的处理, 如果使用web service 的SOAP,你可能还要导入KSOAP的第三方库。
在非浏览器的客户端,可以借助编写的工具类,来完成web service方式的操作,
public interface IWebService {
public List<LiteInformationDTO> getInformationsOfOwnerApp(String ownerApp, int start, int limit) throws SocketTimeoutException;
}
经过这样的封装,已经与使用web service毫无差别,而且还会更加高效,因为处理json总比处理SOAP的xml要容易。
分享到:
相关推荐
大神的Restful Web Service 详细介绍,Objectives By the end of this class, you should be able to: Give a working definition of RESTful Web Services actions, Enable a RESTful user in the SM operator ...
使用RESTful Web Service实现转账业务,包括事务处理和并发控制
《Java RESTful Web Service实战》PDF版本下载
Building a RESTful Web Service with Spring 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权...
RESTful Web Services 中文版 高清 PDF 电子书
RESTful Web Service Primer RESTful Web Service Primer
Java RESTful Web Service实战.pdf Java RESTful Web Service实战.pdf
Restful web service cook book 中文版
本文展示了Http 协议的强大能力, 如何定义什么是Restful Web Service 架构以及以当今RPC 式Web 服务的对比,并解析了Restful web Service 架构的四个特征:可寻址性、无状态性、连通性和统一接口。
Restful Web Service电子书 英文版
restful web service with sse, totourial
rest风格的web service实例,采用java语言编写完成,可为不同客户端提供CURD服务,连接数据表customer后可运行。
Building a RESTful Web Service with Spring
restful web service cookbook
本文展示了Http协议的强大能力,如何定义什么是Restful Web Service架构以及以当今RPC式Web服务的对比,并解析了Restful Web Service架构的四个特征:可寻址性、无状态性、连通性和统一接口.
已经测试可用的,2018最新谷歌浏览器RESTful Web Service离线版包含definitions.json文件
因為剛入職 公司要求會使用struts2 restful風格,剛開始都沒聽說過restful,然後在網上找了N久的講解或demo,都沒找到,花了一週 在老大的指導下搞出來了,希望可以幫助到想學restful風格的同學們
使用Java创建RESTful Web Service
很有用的RESTful Web Service Primer报告PPt
building a restful web service