文档章节

Java反射实现URL路由

chunquedong
 chunquedong
发布于 2016/06/03 18:22
字数 613
阅读 239
收藏 7
jsv

Java反射实现URL路由

URL路由

所谓URL路由,指的是把URL映射到某一个函数。URL不是应该对应到某一个文件吗,例如HTML/JSP或者Velocity模板。 但是为了实现代码逻辑和视图的分离,我们把URL对应到一个java方法调用上,这个可能就是传说中的MVC模式。

传统方式

你可能想起用裸用Servlet或者Struts框架,然后经常要在xml文件里面配置。 用Servlet或者Struts,有很多不方便的地方。每个处理需要独占一个类。每增加或者修改接口,都需要配置xml。xml一旦配置错误,又很难debug。 顺便吐槽一下,Struts框架不但没有减少代码量,甚至有可能增加代码量,不知道它存在的价值什么是。Spring也是过度工程化得典型。

反射方案

其实根本的需求是把URL对应的某一个方法调用。我规定URL是由类名和方法名称组成的,例如http://www.xxx.com/Users/say, 将反射调用Users类的say方法。 这样全局只需要配置一个Servlet来做路由分发,从此和xml说再见。

有人会说,URL变了呢?那我只能Eclipse的Refactor重命名类。如果URL比较变态不是这种怎么办?幸好在我的项目里面URL都是我来定的。而且解决80%的问题以后,剩下的特殊情况也可以再配置或者继承路由分发类来特殊处理。

Web开发框架

在09年的时候我就尝试使用反射来代替xml来做URL路由,这么做的很嗨。 后来还开发了一个JSV Web开发框架也用这种方式,可惜Java里面开发框架比较多,没有人注意到,大家也习惯了啰嗦的xml方式。 6年过去了,当我试图搜索时还是没发现也有人这么干。

JSV还对Restful风格的路由支持。http://www.xxx.com/Users/123被看做是http://www.xxx.com/Users/get/123的简写,最后一个被当做参数,相当于调用new Users().get(123)

当然JSV库的功能很多,还包括服务器热加载、网页模板渲染、数据库ORM、JSON序列化、验证码生成等。

© 著作权归作者所有

共有 人打赏支持
chunquedong

chunquedong

粉丝 46
博文 131
码字总数 36559
作品 4
海淀
高级程序员
私信 提问
golang自定义路由控制实现(一)

    由于本人之前一直是Java Coder,在Java web开发中其实大家都很依赖框架,所以当在学习Golang的时候,自己便想着在Go开发中脱离框架,自己动手造框架来练习。通过学习借鉴Java的思想还...

1Day
05/11
0
0
JDBC 获取 Oracle 数据库连接(使用 Driver)

获取数据库连接的方法: 1. Driver 接口: •Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现 •在程序中不需要...

passionfly
2014/11/17
0
0
打造一款属于自己的web服务器——配置controller

这天一热,胖子的的世界就是一片凄惨啊,随便动动身子,就跟洗个澡似得,心情固然烦躁,一烦躁就很难静下心来写东西了......所以这一段没咋用心写,就稍微水点吧,同时,我又打算要减肥了!>_...

oO脾气不坏Oo
2014/05/25
0
0
老司机带你深入浅出Java反射

反射,它就像是一种魔法,引入运行时自省能力,赋予了 Java 语言令人意外的活力,通过运行时操作元数据或对象,Java 可以灵活地操作运行时才能确定的信息 这里笔者就深入浅出总结下Java反射,...

小刀爱编程
11/07
0
0
最最最常见的Java面试题总结——第二周

String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性   String类中使用字符数组:保存字符串,所以String对象是...

Amsour丶
08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
42分钟前
4
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
46分钟前
237
5
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
5
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部