当前位置: 代码迷 >> Web前端 >> Struts、Ajax、Restful、Web Service 狂想曲框架兑现篇(一)
  详细解决方案

Struts、Ajax、Restful、Web Service 狂想曲框架兑现篇(一)

热度:188   发布时间:2012-07-20 10:38:30.0
Struts、Ajax、Restful、Web Service 狂想曲框架实现篇(一)

承接上篇的简单介绍,下面详细介绍整个框架的大致结构。

? ? ? 先来看一下整个框架包的结构:

?

? ? ? 可以看出框架包含的包很少,包的结构也超简单。这里?涉及FilterActionSupportRouter等三个概念,他们之间的关系,通过下图来表示:

?

? ? ? 图也不规范,说不上来是哪个UML图,不过通过它也能看出一个请求到达时,框架基本的处理流程。首先由Filter拦截到所有请求,然后把请求交给所有注册的Router类,如果请求的Url正好是一个Router要拦截的,则把此请求交给这个Router,框架不再把请求向下传递。Router得到请求后,分析Url,通过Url里的信息把请求交给对应的ActionSupport的子类来处理。

? ? ? 这里拦截采用Filter来处理,这跟多数的web框架一样,使用FilterServlet有更多的能力进行请求的分发。首先在一个web工程的web.xml文件中配置框架的UrlFilter类来拦截所有的请求。需要注意的一点是dispatcher?要设置为request,如果设置了forward的话,由框架内部进行的forward又会被框架拦截,从而造成无限的循环。Url-pattern设置为/*,表示所有的请求都会拦截,从而把对url分发的权利交由框架本身,而不是采用jsp规范里的url分发策略。框架在处理所有请求的url?时,依次交给各个Router类来处理,如果Router类判断是符合自己的url格式,则分发给?action?处理。如果不能处理再交给下一级的Router,最后url经由所有Router处理完,剩下的资源文件的url,如http://xxx.xxx.xxx.jpg,则框架调用filterdoChain()方法,通过filter的过滤去访问web里的资源。

<filter>

??????<filter-name>unicornWeb</filter-name>

??????<filter-class>com.mh.mvc.filter.UrlFilter</filter-class>

</filter>

<filter-mapping>

????<filter-name>unicornWeb</filter-name>

????<url-pattern>/*</url-pattern>

????<dispatcher>REQUEST</dispatcher>

</filter-mapping>

? ? ? 大致的原理就是这样,在下篇介绍框架的详细实现。

1 楼 bovxiu2 2012-05-29  
要是能有 系列性的教程 对于新手的我 很有帮助 楼主也可以温故知新
  相关解决方案