`

自己动手以窥探——URL路由

阅读更多

这个几乎n多语言平台下n多web框架都有的功能。

 

近说spring mvc注解,到php中直接obj->$method_name()调用,自己突然有兴趣,看看自己能否动手写一些代码自动从request url对应到一个类的方法——又拿自己熟悉的Groovy来试了。

 

贴下代码

 

 

// 已有变量 moduleStr对应类对象,actionStr对应方法名,都是从request url中取得。
// scriptDir scriptFileSuffix也是字符串,都是从配置里获取

 

		if (moduleStr == null || actionStr == null) {
			warn("Param Exception: m(odule) & a(ction) are required! ", request, response);
			return;
		}
		
		String scriptFile = scriptDir + moduleStr + scriptFileSuffix;
		File sf = new File(request.getRealPath(scriptFile));

		if (!sf.exists() || !sf.canRead() || sf.isDirectory()) {
			warn("IO Exception: " + scriptFile + " is not a readable file!", request, response);
			return;
		}

		ClassLoader cl = GroovyExeDispatcher.class.getClassLoader();  
		
		CompilerConfiguration conf = new CompilerConfiguration();
		conf.setSourceEncoding(encoding);
		conf.setClasspath(request.getRealPath(scriptDir));
        GroovyClassLoader groovyCl = new GroovyClassLoader(cl, conf);
        
        Map<String, Object> r = null;
        try {
        	Class groovyClass = groovyCl.parseClass(sf); 
        	GroovyObject obj = (GroovyObject)groovyClass.newInstance();
        	// init parameters 
        	obj.invokeMethod("initMap", new Object[]{this.preHandler(request)});
        	
        	r = (Map<String, Object>) obj.invokeMethod(actionStr, null);
        } catch (Exception e) {
        	warn("Method Execute Exception: " + scriptFile + " - " + e.getMessage(), request, response);
        	return;
        } 
 

 

分享到:
评论
3 楼 key232323 2010-06-12  
lost_alien 写道
楼主平时都拿groovy做些什么 ?


很多啊。

项目上用过的:爬虫系列(我有文章介绍),简繁批量转换,批量发送邮件,粘合ivy/ant。

平时coding用到的:文件处理,jar包管理,一些php框架的脚手架工具等。

个人还是比较喜欢scripty一些的语言的,写起来快速简洁啊。可惜ruby/python不熟悉啊
2 楼 huangyuanmu 2010-06-11  
有的时候还是蛮有用的,结合一些约定大于配置的规则,可以简化编程
1 楼 lost_alien 2010-06-11  
楼主平时都拿groovy做些什么 ?

相关推荐

    从阿赖耶识窥探——生命的根源.doc

    从阿赖耶识窥探——生命的根源.doc

    互联网时代当代青年恋爱文化价值取向之窥探——基于调查数据的分析.pdf

    互联网提供了一个更为开放的平台,让青年可以摆脱地域和传统观念的限制,追求自己理想的恋爱关系。然而,虚拟化趋势也带来了一些负面效应,如恋爱对象的匹配错配,以及青年人在现实生活中社交能力的下降等。 鉴于...

    用于拷贝U盘的闪盘窥探者

    描述中提到的“用于自己电脑本身或其他”,暗示了该软件不仅限于在一台电脑上使用,而是可以在多台设备之间进行操作,这可能是通过USB驱动器的即插即用功能实现的。同时,它强调了软件的效率——“插入的U盘资料可以...

    电脑使用记录查看器ViewUrl

    2. **隐私保护**:对于关心个人隐私的用户,ViewUrl可以帮助他们定期清理浏览记录,防止他人窥探。 3. **家长控制**:家长可以通过ViewUrl监控孩子的上网行为,确保他们在安全的网络环境中活动。 4. **技术支持**:...

    解密工具——星号查看器

    "解密工具——星号查看器"是一款专用于揭示隐藏在密码输入框下星号(*)后...正确理解和使用这类工具,可以在一定程度上提高用户对自己数字资产的掌控力,但也提醒我们在享受技术便利的同时,时刻保持对网络安全的关注。

    闪盘窥探者

    "闪盘窥探者"是一款专门针对U盘的软件,其主要功能是自动化地将插入计算机的U盘中的数据复制到用户预先设置的目标位置。这一工具对于需要定期备份U盘内容或者监控U盘数据变动的用户来说十分实用。在IT行业中,数据...

    U盘大盗程序4 闪盘窥探者.rar

    【标题】"U盘大盗程序4 闪盘窥探者.rar" 描述了一款针对U盘设备的恶意软件,这种程序通常被称为“U盘病毒”或“闪盘窥探者”。这类软件的设计目的是在未经用户许可的情况下,自动复制、传播或者执行恶意操作,对个人...

    闪盘数据强盗—FlashDishThiefU盘窥探者

    闪盘数据强盗——U盘窥探者 你的U盘里如果有小秘密的话,千万不可以随便在别人机器上乱用,因为现在有了FlashDishThief(闪盘窥探者),这是一个在后台偷取你闪盘里所有东西的小软件,只要你的闪盘一插上,...

    PGP最新版本——win64系统

    这款名为“PGP最新版本——win64系统”的软件是专为64位Windows操作系统设计的最新版本,旨在为用户在Windows平台上提供高效且安全的数据保护。 1. **PGP工作原理**: PGP使用公钥加密技术,其中每个用户拥有一个...

    Android源码——新浪微博客户端源码.zip

    总之,通过对“Android源码——新浪微博客户端源码”的深入研究,开发者能够全面提升自己的Android编程技巧,理解实际项目中的最佳实践,为今后的开发工作打下坚实的基础。同时,这也是一次难得的机会,让我们站在...

    实用源码——Android屏幕锁源码.zip

    《Android屏幕锁源码解析与应用》 在移动设备安全领域,屏幕锁是保护用户隐私和数据安全的重要一环。...通过深入研究这些源码,开发者可以提升自己的技能,同时为自己的应用提供更加安全、个性化的解锁体验。

    “停课不停学”背景下大学体育在线教学方案窥探.pdf

    “停课不停学”背景下大学体育在线教学方案窥探.pdf“停课不停学”背景下大学体育在线教学方案窥探.pdf“停课不停学”背景下大学体育在线教学方案窥探.pdf“停课不停学”背景下大学体育在线教学方案窥探.pdf“停课...

    锁屏工具——类似于触屏手机屏幕的样子

    【锁屏工具——类似于触屏手机屏幕的样子】 在IT领域,锁屏工具是计算机系统中一个重要的实用程序,它的设计灵感往往来源于触屏手机的解锁界面。这些工具为用户提供了一种安全的方式,防止未经授权的访问,同时增添...

    行业运动服饰:以史为鉴,窥探未来102页.pdf

    然而,产品力被认为是品牌成功最核心的因素,以Nike的AJ系列为例,其销售额超越了所有国内品牌,展示了产品的价值所在。此外,优秀的企业管理者,如霍斯特、奈特和马克帕克,他们在品牌发展中的决策和领导力对企业的...

    共享价值 共担责任——网络安全创新发展论坛.pdf

    * 科根把数据以100万美元卖给一家剑桥分析公司,该公司建立了一套算法——挖掘数据价值、洞察用户内心。 * 该算法非常精准,很多媒体把剑桥大学心理实验中心通过点赞来窥探人的性格、了解人的性格进行了分析发现。 ...

    ORACLE报表分析利剑——分析函数

    ### ORACLE报表分析利剑——分析函数:深度解析与应用 #### 一、理解分析函数:数据统计的新维度 分析函数作为Oracle数据库中一项高级功能,专为解决复杂报表统计需求设计,其核心优势在于能够对数据进行精细的...

    安卓Android源码——饭否网两种安卓客户端源码.zip

    通过对比分析这两个版本的源码,我们可以发现它们在功能实现、UI设计、性能优化等方面的异同,这对于优化自己的安卓应用开发能力大有裨益。 1. **源码结构分析** - 分析源码目录结构,了解项目组织方式,如:`res`...

    详解百年文具企业百乐,窥探国内文具市场发展空间.pdf

    详解百年文具企业百乐,窥探国内文具市场发展空间.pdf

    Qt源码窥探(1)---创建窗口过程图解

    Qt源码窥探(1)---创建窗口过程图解。。

Global site tag (gtag.js) - Google Analytics