`
yxb1990
  • 浏览: 69967 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nutz mvc HelloWorld源码简析(不考虑任何扩展点)

阅读更多

       Nutz Mvc里面的一些类和接口:

  NutFilter, ActionHandler, NutConfig, Loading,UrlMapping, ActionChainMaker, ActionInfo,ActionChain, Processor, ActionInvoker,HttpAdaptor, AbstractAdaptor, ActionContext,View,

      

      头有点小晕,先说一下他们的作用跟关系。

      NutFilter是mvc入口,在init方法中new ActionHandler(),

      ActionHandler 中创建Loading, 然后loading#load(),返回是UrlMapping,

      在NutLoading#evalUrlMapping()方法中创建一个ActionChainMaker,在这个方法中为所有的加@At注解的方法执行UrlMapping#add()方法

      在add方法中,ActionChainMaker创建一个actionChain, 即maker#eval(),在这个方法中,把default-chains.js中默认的8个Processor通通初始化了一遍,通过processor#init()方法.

      

      这个8个默认的Processor分别是UpdateRequestAttributesProcessor,EncodingProcessor,ModuleProcessor,

ActionFiltersProcessor,AdaptorProcessor,MethodInvokeProcessor,ViewProcessor,FailProcessor,

     从名字大概可以看出他们的作用分别是什么,在这里重点说下AdaptorProcessor,在AdaptorProcessor#init()中初始化了一个HttpAdaptor, 具体实现在AbstractAdaptor.init()方法中,并设置参数的注入,包括Servlet内置对象,各种注解,基本类型等等.ViewProcessor的作用是产生各种View,包括jsp视图,json视图,forward视图等等.

 

    注意是会在每个@At函数的urls路径都会执行一遍maker#eval()方法.

 

    还是在UrlMapping#add()方法中,创建actionChain后,new 一个ActionInvoker,设置invoker的actionChain,放入到以url为key的一个map中,建立url与invoker的联系。

  初始化完了。

 

 

      具体运行:

  NutFilter.doFilter 中调用actionHandler.handler(),该方法就是从urlMapping中取得当前ActionContext所对应的invoker,但是在初始化的时候我们明明是url路径跟invoker映射的,实际跟下去发现确实还是从路径中取得invoker,然后invoker#invoker(),得到actionChain,一路执行各个processor#process()方法。最后到ViewProcessor输出到具体的页面。

 

 

      用简单几句话概括, 系统启动时加载url与invoker的映射, invoker里面包含了一个actoinChain, actoinChain里面默认的在default-chains.js有8个processor(可以看做是Struts2的拦截器),从头到尾依次init, 然后在doFilter方法中,先取得url对应的invoker,调用invoker#invoker()方法,依次执行processor#process()方法,最后一个Processor为ViewProcessor则根据不同视图forward(redirect)到页面.例如:

      RequestDispatcher rd = req.getRequestDispatcher(path);

      rd.forward(req, resp);

 

     Over, 真的是简析!!!!

分享到:
评论

相关推荐

    nutz初使用之MVC HelloWorld (netbeans html,js版)

    【标题】:“nutz初使用之MVC HelloWorld (netbeans html,js版)” 这篇教程主要介绍了如何在NetBeans环境中,结合HTML、JavaScript,利用Nutz框架构建一个简单的MVC模式的“Hello, World”应用。Nutz是一个轻量级...

    nutz初使用之MVC HelloWorld (netbeans jsp版)

    在本文中,我们将深入探讨如何使用Nutz框架创建一个简单的MVC(Model-View-Controller)应用程序,以“HelloWorld”为例。Nutz是一个轻量级的Java开发框架,它提供了全面的MVC支持,使得开发者能够高效地构建Web应用...

    nutz搭建的MVC框架

    3. **高性能**:Nutz MVC基于Servlet 3.0,运行效率高,且无任何外部依赖,轻量级。 4. **强大的ORM支持**:Nutz ORM提供了灵活的数据操作接口,支持多种数据库。 5. **丰富的插件**:Nutz社区提供了众多插件,如...

    nutz初使用之MVC HelloWorld (netbeans html,jquery版)

    在本文中,我们将深入探讨如何使用Nutz框架创建一个简单的MVC(模型-视图-控制器)应用程序。Nutz是一个轻量级、高效的Java开发框架,适用于快速构建Web应用。我们将通过一个名为"HelloNutz1"的示例项目,学习如何在...

    nutz 一个使用简单功能强大的mvc框架

    该框架是一个开源项目,可以免费下载, 集成的DAO,MVC,Spring 等框架的功能 不需要其他jar包 学习容易,好用

    高效,小巧的开源JAVA WEB 开发框架-Nutz (源码,开发文档)

    不依赖任何第三方 Jar 包,从而便于程序员建立开发环境,部署,甚至重新编译 Nutz 的源代码。 不幸的是在第一版,我还是依赖了 Javassist 可以很好的和各种主流框架和类库等协同工作 你可以组合 Nutz.Dao + Spring ...

    SpringMVC+Nutz框架介绍.pdf

    《SpringMVC+Nutz框架详解》 SpringMVC与Nutz框架的结合,构建了一种高效、稳定且灵活的企业级开发平台。这个平台基于一系列成熟的技术栈,如Spring MVC、Apache Shiro、Bootstrap UI,旨在提供组织机构管理、角色...

    nutz框架使用手册.zip

    Nutz框架由一系列子项目组成,包括Nutz IOC(依赖注入)、Nutz DAO(数据访问对象)、Nutz MVC(模型视图控制器)等,涵盖了Web开发的多个层面,旨在简化开发流程,提高开发效率。 在"nutz框架使用手册.zip"中,...

    基于Java全栈开发的Nutz框架:Mvc/Ioc/Aop/Dao/Json一体化设计源码

    该项目为全栈Java开发,采用Nutz框架实现Mvc/Ioc/Aop/Dao/Json一体化设计,源码包含2307个文件,涵盖1742个Java源文件、208个man文档、143个png图片、47个jpg图片、22个js脚本、21个psd设计文件、16个xml文件、13个...

    wendal-nutz-master.zip

    3. **AoP(Aspect-Oriented Programming)**:NUTZ的AOP模块支持切面编程,允许开发者定义横切关注点,如日志记录、事务管理,这些关注点可以被编织到业务逻辑中。 4. **MVC(Model-View-Controller)**:NUTZ提供...

    Nutz源码Jdoc在IDE中补全提示时出现乱码解决办法

    标题 "Nutz源码Jdoc在IDE中补全提示时出现乱码解决办法" 涉及的问题是在使用IDE(集成开发环境)查看Nutz框架的源码,并尝试利用Javadoc(Jdoc)进行代码补全提示时遇到了乱码问题。这通常是由于编码设置不正确导致...

    Nutz开发用到的jar包

    2. **Nutz MVC**:Nutz MVC是Nutz框架的一个重要组成部分,用于构建Web应用程序。它支持RESTful API、模板引擎、拦截器、数据绑定等功能,使得Web开发更加便捷。 3. **Nutz DAO**:DAO(Data Access Object)层负责...

    nutz学习资料2

    标题“nutz学习资料2”表明这是一份关于Nutz框架的学习资源集合,Nutz是一个基于Java的轻量级框架,旨在提供全面的MVC支持和企业级开发工具。通过这个压缩包,我们可以期待深入理解Nutz框架的核心特性和使用方法。 ...

    Nutz 例子,从mvc ioc 到数据插入

    Nutz是一个轻量级、高性能的Java开发框架,它提供了MVC(Model-View-Controller)模式和IOC(Inversion of Control,控制反转)服务,帮助开发者构建高效、稳定的Web应用。这篇博客“Nutz 例子,从mvc ioc 到数据...

    TT随笔五 Nutz自定义视图以及提示信息的统一管理

    总结来说,本篇博客旨在分享如何在Nutz框架下对视图解析进行扩展,以满足特定的模板引擎需求,并提供了关于提示信息统一管理的实践思路,这对于提高代码的可维护性和用户体验至关重要。通过理解和应用这些技巧,...

    nutz需要的jar包

    Nutz是一个轻量级、高性能的Java开发框架,它提供了丰富的功能,包括MVC、ORM、DAO、AOP、IOC等,使得Java开发者能够快速地构建应用系统。本篇文章将详细探讨Nutz框架中所需的jar包以及它们在项目中的作用。 首先,...

    nutz代码生成器

    Nutz是一款轻量级、高性能的Java开发框架,它集合了ORM、AOP、MVC等功能,旨在简化Java开发,提供一套简洁高效的API。 在使用Nutz代码生成器前,首先需要对Nutz框架有一定的了解。Nutz的核心组件包括: 1. **Nutz ...

    nutz_redis集成依赖包

    1. **Nutz框架**:Nutz是一个轻量级的Java Web开发框架,它提供了MVC模式,ORM支持,以及丰富的工具类。Nutz的目标是简化开发流程,提高开发效率,使开发者更专注于业务逻辑。 2. **Redis**:Redis是一个高性能的...

    基于Java核心的Nutz框架设计源码镜像下载

    该项目是基于Java核心的Nutz框架设计源码,共计1979个文件,涵盖1526个Java源文件、175个文档、115个PNG图片、21个JavaScript文件、16个XML配置文件、14个Photoshop文件、13个文本文件、12个属性文件、10个文档和9个...

    nutz学习资料4

    【标题】"Nutz学习资料4"涉及...以上内容都是Nutz学习过程中可能涵盖的知识点,如果你正在学习或准备学习Nutz,这些都将对你有所帮助。通过深入学习和实践,你可以更好地利用Nutz框架来构建高效、稳定的Java应用程序。

Global site tag (gtag.js) - Google Analytics