`
andyjackson
  • 浏览: 58382 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

restlet学习心得—— Guard&Filter

阅读更多

我感觉既然是学习知识没有必要首先一开始就将Spring框架结合进来,这样不利于进一步更深的理解。

 

今天继续看了一下restlet的相关知识,感觉有必要写一下关于Guard&Filter的相关知识。关于Guard具体是什么以及Filter和restlet中有什么区别,可以参考本站ajax的博客:http://ajaxcn.iteye.com

我现在要讲一下如何在application中配置Guard,在createRoot方法中加入一下代码创建一个Guard的对象:

MapVerifier verifier = new MapVerifier();
        verifier.getSecrets().put("JZB", "password".toCharArray());


ChallengeGuard challengeGuard =
                new ChallengeGuard(getContext(), ChallengeScheme.HTTP_BASIC, "JZB");
        challengeGuard.getAuthenticator().setVerifier(verifier);

其中ChallengeGuard是派生于Guard的类

然后把他challengeGuard的next方法中传入正常的路由router

challengeGuard.setNext(router);
return challengeGuard; 

 以后,challengeGuard将会对所有的改router下的resources请求进行验证。

对于Filer来说类似

Filer myFilter = new MyFilter(getContext);
myFilter.setNext(router);
return myFilter;

 然后就是要自定义一个filter

public class MyFilter extends Filter{
     //write you method or overwrite its parent
}
 

 

 


分享到:
评论
2 楼 andyjackson 2010-05-12  
junjieshow 写道
在web.xml里配置<url-pattern>/*</url-pattern>,这里拦截了所有的请求,
包括.gif,.css,.js文件,在这里要考虑到使用Filter,处理.gif,.css,.js的请求
public class CommonFilter extends Filter {   
    private static String[] unprotectedResources = {"scripts", "styles","images", "html"};

protected int beforeHandle(Request request, Response response) {   
    String path = request.getResourceRef().getPath();   
    if (isProtectedResource(path)) {   
         String ip = request.getClientInfo().getAddress();   
	 try {   
	//check whether the ip is allowed   
	if (ip is invalid) {   
	  response.setStatusStatus.CONNECTOR_ERROR_CONNECTION);    
	}   
	}catch (Exception ex) {
	    ex.printStackTrace();
		          }   
		        }   
		    }      
 private boolean isProtectedResource(String path) {   
        for (int i = 0; i < unprotectedResources.length; i++) {   
            if (path.indexOf(unprotectedResources[i]) == 1) {   
                return false;    
            }   
        }   
        return true;   
    }   

具体应该怎么写,另外在在不加入spring的情况下,怎么使用该Filter?

首先,你要区分这个filter并不是servlet的filter  filter其实也是一个restlet类,像我上面Guard那样,就可以拦截该application下的所有resources,如果你的项目交由一个application来处理,那么该filter就过滤所有的resources,其中filter有beforehand、afterhand等处理,这种设计有点像spring的拦截器,是一种面向切面的思想
1 楼 junjieshow 2010-05-12  
在web.xml里配置<url-pattern>/*</url-pattern>,这里拦截了所有的请求,
包括.gif,.css,.js文件,在这里要考虑到使用Filter,处理.gif,.css,.js的请求
public class CommonFilter extends Filter {   
    private static String[] unprotectedResources = {"scripts", "styles","images", "html"};

protected int beforeHandle(Request request, Response response) {   
    String path = request.getResourceRef().getPath();   
    if (isProtectedResource(path)) {   
         String ip = request.getClientInfo().getAddress();   
	 try {   
	//check whether the ip is allowed   
	if (ip is invalid) {   
	  response.setStatusStatus.CONNECTOR_ERROR_CONNECTION);    
	}   
	}catch (Exception ex) {
	    ex.printStackTrace();
		          }   
		        }   
		    }      
 private boolean isProtectedResource(String path) {   
        for (int i = 0; i < unprotectedResources.length; i++) {   
            if (path.indexOf(unprotectedResources[i]) == 1) {   
                return false;    
            }   
        }   
        return true;   
    }   

具体应该怎么写,另外在在不加入spring的情况下,怎么使用该Filter?

相关推荐

    restlet2.1学习笔记项目代码

    本项目是针对Restlet 2.1版本的学习笔记,包含了实际的项目代码,旨在帮助开发者更好地理解和应用Restlet框架。 在Restlet 2.1中,有几个关键概念和组件值得深入探讨: 1. **组件(Component)**:Restlet框架的...

    RESTLET框架学习书籍

    ### RESTLET框架学习知识点 #### 一、RESTLET框架概览 - **RESTLET框架简介**:RESTLET是一个面向对象的Java开源框架,用于构建RESTful应用和服务。它旨在简化Web应用开发,允许开发者充分利用REST架构的优势。...

    Restlet学习的三篇文章

    Restlet是一个开源框架,专为构建RESTful(Representational State Transfer)Web服务而设计。REST是一种轻量级的架构风格,常用于构建高效、可扩展的网络应用程序。它强调资源的概念,通过URI(统一资源标识符)来...

    restlet

    RESTlet是一款开源框架,专为构建基于REST(Representational ...通过学习这些资料,开发者可以深入理解RESTlet的工作原理,掌握如何使用RESTlet构建RESTful服务和客户端应用,从而提升其在Web服务开发领域的专业技能。

    Restlet开发实例

    你将学习如何在Restlet应用中使用Spring的Bean,以及如何通过Spring MVC和Restlet的协同工作,实现更灵活和强大的REST服务。 总结以上内容,Restlet开发实例系列涵盖了以下几个关键知识点: 1. JAX-RS与Restlet的...

    Restlet所需要的所有jar包

    接着,根据你的需求,可以参考Restlet官方文档或者示例代码,学习如何创建和配置`Application`和`Component`,定义路由规则,并处理HTTP请求。 在使用过程中,要注意版本兼容性问题,确保Restlet框架及其依赖库与你...

    org.restlet-2.3.0.jar 最新版本

    5. **更易用的API**:简化了API接口,降低了学习曲线,使得开发者能够更快速地集成和使用RESTlet。 6. **扩展性**:提供了丰富的扩展点,可以方便地添加自定义处理器、过滤器和组件,满足特定业务需求。 7. **文档...

    org.restlet.jar

    org.restlet.jar

    android-restlet:一个非常简单的ptojecttutorial,显示如何在Android下使用Restlet和Gson库

    android-restlet 一个非常简单的... -&gt; restlet.sdk ———&gt;实体———&gt; http —————&gt;客户—————&gt;资源———&gt;接口———&gt;大事记———&gt;泛型restlet.sdk.entities 包含所有类以映射REST资源的JSON项restlet.sdk.

    Restlet开发的Basic认证

    Restlet是一个轻量级的Java Web服务开发框架,它提供了构建RESTful(Representational State Transfer)应用程序的工具和API。REST是一种架构风格,强调简洁、无状态和可缓存的网络交互,常用于构建高性能、高可用性...

    RESTLET开发

    ### RESTLET开发实例详解 #### 一、RESTLET框架简介 **RESTLET**是一个轻量级且全面的框架,旨在实现REST(Representational State Transfer)原则与Java类之间的映射。该框架支持广泛的REST式系统构建,不仅仅...

    restlet项目

    通过学习和实践"FirstRestlet"项目,开发者可以了解如何在实际项目中运用Restlet框架,从而更高效地构建RESTful Web服务。此外,它还能帮助理解REST原则,如资源、统一接口和无状态通信等,这些都是现代Web开发中的...

    基于Spring的Restlet实例

    通过这个基于Spring的Restlet实例,开发者可以学习到如何在Spring环境下创建和管理REST服务,同时利用Spring的高级特性如事务管理、缓存控制等提升服务的性能和可靠性。这种结合方式为开发高质量、可维护的RESTful ...

    Restlet Client 插件安装包

    **Restlet Client插件安装包详解** 在现代的Web应用开发中,API(Application Programming Interface)扮演着至关重要的角色,尤其是RESTful API,它已成为构建分布式系统和微服务架构的标准。为了有效地测试和调试...

    Restlet in action 英文 完整版

    通过学习本书,你可以掌握使用Restlet框架构建高效、可扩展且安全的RESTful Web服务所需的所有技能。无论你是希望快速上手还是深入探索Restlet的高级特性,《Restlet in Action》都将是你的理想选择。

    RESTLET开发(三)

    通过本文的学习,我们了解了如何利用Spring框架整合RESTlet构建RESTful服务的基本过程。这种方式不仅简化了开发流程,还提高了服务的可维护性和扩展性。在后续的学习中,我们可以进一步探索更复杂的业务逻辑和服务...

    restlet实现最简单的restful webservice

    Restlet是一款开源框架,专为构建RESTful Web服务和客户端应用程序设计。REST(Representational State Transfer)是一种轻量级的架构风格,广泛用于构建互联网应用,因为它提供了高效、分布式的系统设计原则。本文...

    restlet处理各种请求方式参考示例

    通过阅读源代码,你可以学习到如何配置Restlet应用,创建资源,以及如何处理不同类型的HTTP请求。此外,示例可能还会涵盖错误处理、日志记录、性能优化等方面的内容。 总之,Restlet是一个强大的工具,可以帮助...

    Restlet与Spring 集成

    Restlet与Spring集成是将Restlet框架与Spring框架结合,以增强RESTful服务的开发能力。Restlet是一个轻量级的Java框架,专门用于构建REST(Representational State Transfer)架构风格的应用程序。它遵循JAX-RS...

Global site tag (gtag.js) - Google Analytics