Java与RESTful
来源:互联网 发布:针式打印机用什么软件 编辑:程序博客网 时间:2024/04/29 15:30
REST(REpresentation State Transfer),用于描述一个架构样式的网络系统,如web应用程序。
说实了,就是如下的一个URL访问样式:localhost:8080/project_name/databases/database_name/collections/collection_name
其实,这样的URL样式有什么好处呢?可以先对比传统一些的URL访问样式,即POST和GET方法。POST的参数传递在URL上是反映不出来的,而GET方式,以上为例即为localhost:8080/project_name/ONEPAGE?databases=database_name&collections=collection_name。那么,哪一种方式更能清晰的描述资源的访问?毫无疑问是RESTful的方式。
在Web的应用上,RESTful已促成了不少的框架出现。甚至在一些框架上,取代了Servlet这个中间件。RESTful是很强大的技术?这个靠大家发掘。
这次我的应用,主要的就是以下的一个应用Demo。不过,过程中有个小难点,就是如何与Servlet交互上或者说调用Servlet的方法。RESTful下的Java类,是比Servlet更纯的class。RESTful架构下的Java类功能也相当的丰富或者说强大。要获取Servlet中的request、response对象,可以通过配置注释@Context 获取。对GET方法或者POST方法的支持,以及在接受或返回方式上,都有相当大的平台。
另外,在调用Servlet方法上,可以使用HttpClient对象,可动态选择是POST还是GET方法。但是在具体使用到request、response对象时并不怎么好用,如不能支持对Cookie的读写。
附上一个Demo
在RESTful+Java+Tomcat架构中,
web.xml配置文件为:
<servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>demo.restful.res</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/collections/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/databases/*</url-pattern> </servlet-mapping>
在Databases类中:
package demo.restful.res;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;@Path("{db}/collections/{coll}")public class Databases {@GET@Produces(MediaType.TEXT_HTML)public String showCollections(@PathParam(value="db")String db, @PathParam(value="coll")String coll){ ... }如果访问的URL为localhost:8080/project_name/collections/collection_name
在Collections类中:
package demo.restful.res;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;@Path("/{coll}")public class Collections {@GET@Produces(MediaType.TEXT_HTML)public String selectCollection(@PathParam(value="coll")String coll){ ... }
另外,@Produces的返回类型视乎具体场景。
- Java与RESTful
- Java与RESTful
- 什么是java REST与RESTFUL
- java restful
- REST、RESTful 与 RESTful API
- RESTful 架构与 RESTful 服务
- REST、RESTful 与 RESTful API
- Java CXF RestFul风格的web service发布与调用
- java RestFul 实现http接口服务端与客户端
- Spring与RESTful
- Restful 与 SOAP
- Restful与soap
- webservice与restful
- SpringMVC与RESTful
- Restful与webService区别
- nodejs与RESTful API
- Restful与webService区别
- RESTful client for java
- 管理项目交付物最佳实践
- MINA2.0用户手册中文版--第二章 第一节 MINA应用程序架构
- IPicture使用总结
- centos6.2 64位 配置nfs
- Android Service学习之AIDL, Parcelable和远程服务
- Java与RESTful
- Hibernate操作Clob类型完整版!
- java “static”关键字深入浅出解释
- PHP配置
- 一个buf.一个read_buf
- MySQL之备份
- 《转载》移植 android, touch screen 不能正常工作的问题
- css引用的两种方式,link和@import的区别
- 代码大全2(读书笔记10)