nutz如何体现mvc思想的

如何理解web mvc框架??


一、没有使用mvc框架之前我们都是自己根据mvc分层思想的理解去把它物理化,比如:根据包的命名,根据类的后缀名,根据文件夹的命名去定义分层。
因为每个人对mvc的理解不一样所以他的物理化体现也不一样,这就导致理解上困难,并且A规划了一遍之后,B也要规划一遍,这样就造成了不能统一
做了很多重复的工作,那么我们如果都采用同一个框架,这个框架已经将mvc的物理化抽象出来啦,那么大家就可以避免重复,理解可以统一啦。

二、web业务处理的核心就是响应http请求,在这个过程中有很多重复性的工作,使我们不能专注于业务实现,这个时候框架就又帮助我们做了很多的事情,
比如:将一个http请求达到处理这个请求的处理函数上,在到达处理函数之前进行一些权限判断,请求参数的封装,将处理完的数据进行页面的渲染等
所以web mvc框架实际上做了两大类事情:
第一类:将mvc分层思想应用于http请求响应的整个过程。
第二类:帮助使用者屏蔽web重复性的工作。

常见的mvc框架都有哪些??


spring mvc ,nutz,Struts等 
实际生产环境中我们的选型是使用nutz,所以下面就谈谈nutz是如何体现mvc分层思想的。
nutz框架是如何体现mvc分层思想的??

        Controller:
                nutz里有一个Module的概念。
                类名一xxxModule结尾的类名就定义它是一个模块类这个类和Struts的action概念相同,只负责接收请求,调用相关处理业务,返回响应的视图。
                
                 一个标准module的处理函数:
                   
                   只是负责调用该module对应的service处理业务,并指定返回的视图类型以及对应的路径。

          View:
                  nutz给视图的定义:将入口函数的返回值(一个Java对象)渲染到 HTTP 响应流中。
                  nutz认为:一种视图就是一种将 Java 对象写入 HTTP 响应流的方式。
                  视图的类型大致有:  JSP - 采用 JSP 模板输出网页
                  Redirect - 客户端重定向
                  Forward - 服务器端中转
                  Json - 将对象输出成 Json 字符串
                  void - 什么都不做
                  具体的实现过程可以参考nutz的文档。
                  nutz帮助我们实现了视图层的处理,
                  这样我们就不用再去关心如何将数据渲染到视图上啦,这就实现了视图和业务分离的目的。

             Model:
                      模型层的核心是提供具体算法完成请求,比如:业务逻辑的算法,数据持久的算法。
                      我认为这一层主要是由使用框架者根据实际业务以及业务的需求来实现的,
                      框架做的事情就是为我们在实现业务的过程中消除重复让我更加专注业务,
                      比如:为我们提供Ioc容器帮助我们管理Bean的生命周期,
                    为我们提供数据库持久的基本操作接口,帮住我们减少在数据持久层的关注。
     
nutz处理一个http请求的过程mvc的体现:

        web的核心是对http请求的处理与相应。应用mvc分层思想下的http请求的处理过程如下图:
         1 用户通过浏览器发送一个http请求。
         2 最终http请求到到达对应的服务器。
         3 服务器找到对应的应用程序。  
         4 nutz会根据http的url请求映射到一个module类中的一个处理函数上。(controller层)
         5 这个module处理函数调用页面service类,页面service类调用下层的business层service,  
            business层调用组装对应的base层的实体baseService,以及对应的dao操作,最终完成这个http请求的业务。(Model层)      
         6  nutz会根据这个module函数的@ok的类型决定输出什么视图类型:
                   有可能是jsp,json,文件流或者什么都不做。 (view层)
           很明显,module只负责分发请求,返回视图类型也就是mvc中的Controller。
           web层,business层,base层的service以及实体就是mvc中的module层。
           nutz根据处理函数的视图类型对视图进行渲染。    
nutz都做了哪些事情??

1.要全盘接受http请求,所以要配置一个大大的过滤器(servlet中的Filter),用于拦截所有的http请求。
     所有它提供给你一个过滤器让你在web.xml中配置,让 预配置的项应用于处理每一个http请求中。
   
    
2.Nutz.Mvc 的核心任务就是将 HTTP 请求的 URL 映射到某一个入口函数。
            基于@At注解将一个HTTP请求路径同一个 Java 函数关联起来。
3. 使用动作链机制可以定义处理一个http请求的动作顺序。
      
  
4.在http url请求到达模块的处理函数之前可以为你提供添加过滤器的方法。
              比如:权限验证的过滤器,验证是否登录过滤器...
                    
5.对http请求的参数进行适配【适配器】,也就是:"将 HTTP 参数转换成一个函数参数的过程"
                       如:
                           1.将http请求参数封装到处理函数的参数上。
                           2.将请求参数封装到form对象Bean中。
                           3.将http输入流(上传文件)映射到入口函数中的文件对象上。
                           4.获取servlet容器中的内置对象。
6. 将入口函数的返回值(一个Java对象)渲染到 HTTP 响应流中。
           
7.  nutz为我们提供mvc框架挂接一个Ioc容器的方法,可以将需要被管理的bean交给Ioc容器管理。
     

转载于:https://www.cnblogs.com/wangsen/p/4972463.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nutz框架整合Spring Boot的过程中,可以按照以下步骤进行操作: 1. 首先,需要在pom.xml文件中添加Nutz和Spring Boot的相关依赖。可以通过以下代码片段添加依赖: ```xml <!-- Nutz --> <dependency> <groupId>org.nutz</groupId> <artifactId>nutz-web</artifactId> <version>1.r.71</version> </dependency> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.5.4</version> </dependency> ``` 2. 创建一个继承自SpringBootServletInitializer的类,用于启动Spring Boot应用。可以将以下代码添加到你的项目中: ```java import org.nutz.mvc.annotation.IocBy; import org.nutz.mvc.annotation.Modules; import org.nutz.mvc.ioc.provider.ComboIocProvider; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @Modules(scanPackage = "your.package.name") @IocBy(type = ComboIocProvider.class, args = {"*js", "ioc/", "*anno", "your.package.name", "*tx"}) public class NutzSpringBootServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(NutzSpringBootServletInitializer.class); } } ``` 3. 创建一个Nutz的配置类,用于配置Nutz的一些参数。可以按照以下代码创建一个示例的配置类: ```java import org.nutz.mvc.annotation.*; import org.nutz.mvc.ioc.provider.ComboIocProvider; @IocBy(type = ComboIocProvider.class, args = {"*js", "ioc/", "*anno", "your.package.name", "*tx"}) @Modules(scanPackage = "your.package.name") @SetupBy(NutzMainSetup.class) @ChainBy(args = "mvc/nutzmvc-chain.js") @Ok("json:full") @Fail("jsp:jsp.500") public class NutzSpringBootConfig { } ``` 4. 最后,在你的Spring Boot主类中,添加`@ImportResource`注解,引入Nutz的配置文件。示例如下: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; @SpringBootApplication @ImportResource(locations = {"classpath:applicationContext.xml"}) public class YourSpringBootApplication { public static void main(String[] args) { SpringApplication.run(YourSpringBootApplication.class, args); } } ``` 完成以上步骤后,Nut框架就与Spring Boot成功整合了。你可以使用Nutz的注解和特性,同时也可以享受Spring Boot的便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值