<%@ page contentType="text/html; charset=gb2312"%> 一个轻量级的java rest 框架 JRest4Guice
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
一个轻量级的java rest 框架 JRest4Guice
     发布者: 发布时间:2008-03-29
项目地址: http://code.google.com/p/jrest4guice/

这个项目借鉴了http://www.javaeye.com/topic/170289的一些思想和代码。

特点:
1. 基于GUICE

2. 零配置式服务声明
@Restful(uri = "/contacts")
public class ContactListRestService

3. 服务的自动扫描注册

4. 非侵入式风格,用户不需要实现特定的接口来实现Restful服务
用户只要在指定的POJO上:
1. 声明为@Restful,并指明访问的URI格式
2. 在指定的方法上声明为@HttpMethod

5. 支持Rest的Post. Get. Put. Delete操作
用户在指定的方法上通过@HttpMethod注解来声明方法的类型,如下:
@HttpMethod(type = HttpMethodType.POST)
public String createContact(String name, @RequestParameter("homePhone") String homePhone, @ModelBean Contact contact)

@HttpMethod
public String getContact(@FirstResult int first, @MaxResults int max)
注:如果没有提供HttpMethodType类型的声明,系统会自动根据方法名称的前缀来自动识别(方法名必须以get/post/put/delete开头)

6. 灵活的注入
6.1. 支持HttpServletRequest. HttpServletResponse. ModelMap的注入
@Inject
private ModelMap modelMap;

@Inject
private HttpServletRequest request;

@Inject
private HttpServletResponse response;

6.2. 支持参数的自动注入
方法中的参数可以由系统自动注入,如下:
public String createContact(String name, @RequestParameter("homePhone") String homePhone, @ModelBean Contact contact)
注:如果参数没有任何注解,系统默认获取上下文ID为参数名称的参数值,否则通过@RequestParameter注解指定的参数名称来获取,@ModelBean可以将上下文中的参数转换成指定参数类型的Java bean

6.3. 支持对JndiResource的注入


示例代码:
Java代码
@Restful(uri = { "/contact", "/contact/{contactId}" })
public class ContactRestService {
@Inject
private ModelMap modelMap;

@Inject
private HttpServletRequest request;

@Inject
private HttpServletResponse response;

@Inject
@JndiResource(jndi = "test/ContactService")
private ContactService service;

@HttpMethod(type = HttpMethodType.POST)
public String createContact(String name, @RequestParameter("homePhone") String homePhone, @ModelBean Contact contact) {
if (contact == null)
return HttpResult.createFailedHttpResult("-1","联系人信息不能为空").toJson();
String contactId = null;
try {
contactId = this.service.createContact(contact);
return HttpResult.createSuccessfulHttpResult(contactId).toJson();
} catch (RemoteException e) {
return HttpResult.createFailedHttpResult(e.getClass().getName(),e.getMessage()).toJson();
}
}

@HttpMethod
public String putContact(@RequestParameter("contactId")
String contactId, @ModelBean
Contact contact) {
if (contactId == null)
return HttpResult.createFailedHttpResult("-1","没有指定对应的联系人标识符").toJson();

try {
this.service.updateContact(contact);
return HttpResult.createSuccessfulHttpResult("修改成功").toJson();
} catch (RemoteException e) {
return HttpResult.createFailedHttpResult(e.getClass().getName(),e.getMessage()).toJson();
}
}

@HttpMethod
public String getContact(@RequestParameter("contactId")
String contactId) {
try {
Contact contactDto = this.service.findContactById(contactId);
return HttpResult.createSuccessfulHttpResult(contactDto).toJson();
} catch (Exception e) {
return HttpResult.createFailedHttpResult(e.getClass().getName(),e.getMessage()).toJson();
}
}

@HttpMethod
public String deleteContact(@RequestParameter("contactId")
String contactId) {
try {
this.service.deleteContact(contactId);
return HttpResult.createSuccessfulHttpResult("删除成功").toJson();
} catch (Exception e) {
return HttpResult.createFailedHttpResult(e.getClass().getName(),e.getMessage()).toJson();
}
}
}

(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
一个轻量级的java rest 框架 JRest4Guice
Sun最新发布的Java EE 6的特点详细解析
Sun最新发布的Java EE 6的特点详细解析
Java基础入门学习-Java中类的属性
Java基础知识:初学者必须理解的六大问题
谈谈简单Hibernate入门
 
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号