Struts、Ajax、Restful、Web Service 狂想曲框架实现篇(一)
2011-11-25 11:43
393 查看
承接上篇的简单介绍,下面详细介绍整个框架的大致结构。
先来看一下整个框架包的结构:
可以看出框架包含的包很少,包的结构也超简单。这里 涉及Filter、ActionSupport、Router等三个概念,他们之间的关系,通过下图来表示:
图也不规范,说不上来是哪个UML图,不过通过它也能看出一个请求到达时,框架基本的处理流程。首先由Filter拦截到所有请求,然后把请求交给所有注册的Router类,如果请求的Url正好是一个Router要拦截的,则把此请求交给这个Router,框架不再把请求向下传递。Router得到请求后,分析Url,通过Url里的信息把请求交给对应的ActionSupport的子类来处理。
这里拦截采用Filter来处理,这跟多数的web框架一样,使用Filter比Servlet有更多的能力进行请求的分发。首先在一个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,则框架调用filter的doChain()方法,通过filter的过滤去访问web里的资源。
大致的原理就是这样,在下篇介绍框架的详细实现。
先来看一下整个框架包的结构:
可以看出框架包含的包很少,包的结构也超简单。这里 涉及Filter、ActionSupport、Router等三个概念,他们之间的关系,通过下图来表示:
图也不规范,说不上来是哪个UML图,不过通过它也能看出一个请求到达时,框架基本的处理流程。首先由Filter拦截到所有请求,然后把请求交给所有注册的Router类,如果请求的Url正好是一个Router要拦截的,则把此请求交给这个Router,框架不再把请求向下传递。Router得到请求后,分析Url,通过Url里的信息把请求交给对应的ActionSupport的子类来处理。
这里拦截采用Filter来处理,这跟多数的web框架一样,使用Filter比Servlet有更多的能力进行请求的分发。首先在一个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,则框架调用filter的doChain()方法,通过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> |
相关文章推荐
- Struts、Ajax、Restful、Web Service 狂想曲框架实现篇(三)
- Struts、Ajax、Restful、Web Service 狂想曲框架实现篇(二)
- Struts、Ajax、Restful、Web Service 狂想曲
- Struts、Ajax、Restful、Web Service 狂想曲
- 运用DWR框架实现AJAX并与Spring与struts以及hibernate中的整合
- (转)Django ====> 实战学习篇十一 Django实现RESTFul web service,Django+jquery,ajax
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册
- RESTful风格(使用Ajax+Spring MVC框架实现)
- RESTful风格(使用Ajax+Spring MVC框架实现)
- ajax+struts实现简单的聊天室(利用prototype框架)
- 基于AJAX技术实现Struts校验框架
- Struts 2框架下实现ajax动态刷新
- Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service
- AJAX Struts 框架整合例子请求参数作为XML传送(-)
- Struts 2三种方式实现Ajax
- Div里面载入另一个页面的实现(取代框架)(AJax)
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之框架整合篇
- 黑马程序员----使用DWR框架来实现ajax
- 运用Struts1框架来简单实现登陆跳转
- ajax和struts结合实现无刷新验证用户名是否存在