当前位置:  软件>java软件

WEB开发框架 Rose

    来源:    发布时间:2015-01-29

    本文导语:  Rose 是基于Servlet规范、Spring“规范”的开放源代码WEB开发框架。 Rose是面向使用Java开发的同仁们的。 Rose 提供的各种特性和约束惯例,目的就是为了使您在能够轻松地开发web程序。如果您觉得Grails的想法很好,您不必转向它,...

Rose 是基于Servlet规范、Spring“规范”的开放源代码WEB开发框架。

Rose是面向使用Java开发的同仁们的。 Rose 提供的各种特性和约束惯例,目的就是为了使您在能够轻松地开发web程序。如果您觉得Grails的想法很好,您不必转向它,Rose可以给您这种感觉, 同时基于您对Java的熟悉,您又能更好地控制Rose。

我们希望Rose对各种技术的整合和规范,能使您摆脱犹豫,摆脱选择的困难,规 避没有经验带来的开发风险。Rose不仅整合技术,同时还强调最佳实践,甚至包括名称规范。我们不仅仅只是提供技术,我们还会引导您应该如何使用好技术。

Rose规范了对Spring的使用,虽然大部分时间之内,您可能只是使用 @Autowired 即可,大多数时候的确这样也就够了。但 Rose 也允许您放置applicationContext-xxx.xml文件来扩展Rose。

不 熟悉Spring的人,不用去重温Spring的知识也能够开始,并书写漂亮的程序!对熟悉Spring的人,则你们可以看到更多。

Rose 框架通过在web.xml配置过滤器拦截并处理匹配的web请求,如果一个请求应该由在Rose框架下的类来处理, 该请求将在Rose调用中完成对客户端响应. 如果一个请求在Rose中没有找到合适的类来为他服务,Rose将把该请求移交给web容器的其他组件来处理。

Rose使用过滤器而非 Servlet来接收web请求,这有它的合理性以及好处。

Servlet规范以“边走边看”的方式来处理请求, 当服务器接收到一个web请求时,并没有要求在web.xml必须有相应的Servlet组件时才能处理,web请求被一系列Filter过滤时, Filter可以拿到相应的Request和Response对象 ,当Filter认为自己已经能够完成整个处理,它可以不调用整个处理链的下个组件处理.

使用过滤器的好处是,Rose可以很好地和其 他web框架兼容。这在改造遗留系统、对各种uri的支持具有天然优越性。正是使用过滤器, Rose不在要求请求地址具有特殊的后缀。

为 了更好地理解,可以把Rose过滤器看成能将某些请求其它Filter或Servlet传递的Servlet。这个刚好是普通Servlet无法做到的 : 如果一个请求以后缀名配置给他处理时候 ,一旦该Servlet处理不了,Servlet规范没有提供机制使得可以由配置在web.xml的其他正常组件处理 (除404,500等错误处理组件之外)。

一个web.xml中可能具有不只一个的Filter,Filter的先后顺序对系统具有重 要影响,特别的,Rose自己的过滤器的配置顺序更是需要讲究 。 如果一个请求在被Rose处理前应该被某些过滤器过滤,请把这些过滤器的mapping配置在Rose过滤器之前。

RoseFilter 的配置,建议按以下配置即可:

        
                roseFilter
                net.paoding.rose.RoseFilter
       
       
                roseFilter
                /*
                REQUEST
                FORWARD
                INCLUDE
       

1) 大多数请况下,filter-mapping 应配置在所有Filter Mapping的最后。 2) 不能将 FORWARD、INCLUDE 的 dispatcher 去掉,否则forward、 include的请求Rose框架将拦截不到

Rose框架内部采用"匹配 ->执行"两阶段逻辑。Rose内部结构具有一个匹配树, 这个数据结构可以快速判断一个请求是否应该由Rose处理并进行, 没有找到匹配的请求交给过滤器的下一个组件处理。匹配成功的请求将进入”执行“阶段。 执行阶段需要经过6个步骤处理:“参数解析 -〉 验证器 -〉 拦截器 -〉 控制器 -〉 视图渲染 -〉渲染后"的处理链。

匹配树: 匹配树是一个多叉树,最根节点代表整个Rose应用,第二级代表Rose应用下的所有模块,第三级是每个模块下的处理类 (控制器),第四级代表每个控制器下的操作的方法 。这个匹配树的每个节点都定义了自己的匹配地址、匹配目标以及”执行逻辑“。值得注意的是,对于每个匹配节点而言它的下级节点是有序的 ,这个顺序可以保证请求地址被正确地匹配给所期望的控制器方法处理。

匹配过程: Rose以请求的地址作为处理输入(不包含Query串,即问号后的字符串)。如果这个匹配树存在某个树的路径和请求匹配成功, 表示这个请求应由Rose处理。在算法上,采用的是基于左儿子有兄弟的可回溯的匹配过程。

参数解析: 在调用验证器、拦截器 控制器之前,Rose完成2个解析:解析匹配树上动态的参数出实际值,解析控制器方法中参数实际的值。参数可能会解析失败(例如转化异常等等 ),此时该参数以默认值进行代替,同时Rose解析失败和异常记录起来放到专门的类中,继续下一个过程而不打断执行。

拦截器: Rose使用自定义的拦截器接口而非一般的拦截器接口这是有理由的。使用Rose自定义的拦截器接口可以更容易地操作、控制Rose拦截。 所谓拦截即是对已经匹配的控制器调用进行拦截,在其调用之前、之后以及页面渲染之后执行某些逻辑。设计良好的拦截器可以被多个控制器使用。


    
 
 

您可能感兴趣的文章:

  • Web爬虫框架 Smart and Simple Web Crawler
  • Java Web应用框架 WEB4J
  • 通用WEB框架 Webx
  • Node.js web 框架 partial.js
  • 全新Web编程的js框架 Flapjax
  • Java Web开发框架 Chrysalis
  • Web应用框架 Joindesk
  • 轻量级 Web 框架 FeathersJS
  • Web框架 OPS
  • Web应用框架 Xataface
  • Java™ Web 应用程序框架 Sitebricks
  • 移动 Web 开发框架 Lungo.JS
  • web应用框架 Reasonable Server Faces
  • Web应用程序框架 Tapestry
  • web框架 chen
  • 超轻量级Web框架 WebWheel
  • Node.js 开发框架 Web.js
  • Web UI 框架 PantherUI
  • 基于PHP的web框架 TPP
  • WEB开发框架 LMLPHP
  • Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
  • web开发和嵌入式开发哪个更有挑战
  • 热点调查:请问你们公司用什么团队开发工具开发Web程序的?
  • 用Java开发web程序,用什么做web服务器最好?
  • 操作系统 iis7站长之家
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • 使用JAVA开发WEB,软件,建设WEB服务器用哪个版本的REDHAT?在哪里下载?
  • Eclipse Web开发平台 WTP
  • PHP的Web服务开发包 InstantSVC
  • 基于Web的数据库开发工具 nuBuilder
  • Web动画开发工具包 AJAX Animator
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • web开发框架 Xiaomi Rose
  • WEB开发框架 Paoding-Rose
  • web网页自动跳转方法:Html body onload自动跳转举例
  • aria2的Web接口 a2web
  • Python3通过request.urlopen实现Web网页图片下载
  • SVN的Web管理界面 svn-web-admin
  • Web前端设计:Html强制不换行<nobr>标签用法代码示例
  • 嵌入式的Scala Web服务器 SOCKO WEB
  • Web前端设计:html上标<sup>标签与下标<sub>标签详解
  • Web相册 Dumi Web Gallery
  • 请问:authorization of web services和authenication of web services什么区别?
  • Web服务器 Gatling Web Server
  • 小型Web服务器 nweb Web Server
  • C#取得Web程序和非Web程序的根目录的N种取法总结
  • 有没有什么方法或思路把web服务器上的文件上传到另外一个web服务器?
  • LINUX下面的WEB Service如果编写?是用.NET写吗?WINDOW下面的web service能在LINUX下面用吗?
  • 在单网卡的linux web服务器上虚拟Windows系统搭建多个.net web网站,有谁做过?
  • 问tomcat中在tomcat启动时,哪个包加载了/WEB-INF下的web.xml文件?要多少给多少分
  • 我是刚开始学web service ,我想请教哪里有构件web Service的具体操作。
  • 100分求《嵌入式系统Web服务器—TCP/IP Lean》或《TCP/IP Lean Web Servers for Embedded Systems 》
  • WSGI Web服务器 UV-Web
  • 怎么在web上运行applet?我已经把class和web文件放到同一目录下了,总体是我no found class
  • 我在linux里面配置好了web服务器,可以在本机用自己的IP访问,但是在局域网里面的win却不能访问我这台linux的web页面


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3