`
happmaoo
  • 浏览: 4472281 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

超轻量级MVC框架的设计和实现 (3)

阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

由于MVC框架的设计,必须保证配置IoC容器时指定正确的Scope,否则无法正常工作:

用户定义的所有的Action类必须是Prototype域,即Guice默认的作用域,如果定义为Singleton会导致并发请求的数据混乱;

用户定义的所有的Interceptor,ViewResolver和ExceptionResolver应该是Singleton的,MVC框架会保持其引用,即时定义为Prototype也是无效的。

在实现Interceptor时需要注意,如果要继续处理请求,就必须调用

chain.doInterceptor(action);

否则请求不会被继续处理。多个Interceptor的排列顺序很重要,用@Order指定,小的在前,即优先级高。

下面是几个简单的示例:

一个处理事务的Interceptor,能保证每个Action的执行都在事务范围内:

package com.javaeedev.lightweight.mvc.sample;

@Singleton
@Order(0)
public class TransactionInterceptor implements Interceptor {

@Inject TransactionManager transactionManager;

public void intercept(Action action, InterceptorChain chain) throws Exception {
Transaction tx = transactionManager.beginTransaction();
try {
chain.doInterceptor(action);
tx.commit();
}
catch(Exception e) {
tx.rollback();
throw e;
}
}

}

一个处理所有异常的ExceptionHandler:

package com.javaeedev.lightweight.mvc.sample;

@Singleton
public class ExceptionHandler implements ExceptionResolver {

public void init(ServletContext context) throws ServletException {
}

public ModelAndView handleException(Action action, Exception e) throws Exception {
if(e instanceof NeedSignonException) {
// let user sign on:
return new ModelAndView("/signon.html");
}
throw e;
}

}

很多时候,组件的初始化需要依赖当前Web应用的ServletContext对象,在IoC容器中如何传入ServletContext?对于Guice来说,需要编写一个Module告诉容器各组件的信息,因此,让Module实现一个ServletContextAware接口,在DispatcherServlet中实例化该Module的时候就可以传入ServletContext对象:

package com.javaeedev.lightweight.mvc.sample;

public class MyModule implements Module, ServletContextAware {

private ServletContext context;

public void setServletContext(ServletContext context) {
this.context = context;
}

public void configure(Binder binder) {
... // init all beans here...
}

}

传入ServletContext的目的是为了让组件能从中获得当前Web应用目录下的资源文件。

关于这个MVC框架的设计就介绍到此,感兴趣的朋友可以从以下地址下载:

http://code.google.com/p/lightweight-mvc/




分享到:
评论

相关推荐

    超轻量级MVC框架的设计和实现(源码)

    "超轻量级MVC框架的设计和实现(源码)"是针对这个概念的一个具体实例,它强调了框架的简洁性和无XML配置特性。开发者通常会避免使用XML配置,因为它们可能增加代码的阅读和维护难度。相反,使用Java 5注解可以将配置...

    C# MVC+layui.js超轻量级框架(包含数据库)

    总的来说,"C# MVC+layui.js超轻量级框架(包含数据库)"提供了一个开箱即用的解决方案,适合初学者和有一定经验的开发者快速搭建功能完善的Web应用。通过C# MVC的后端控制和layui.js的前端呈现,结合SQLSugar的...

    Biny腾讯开源高性能超轻量级PHP框架

    其中,Biny脱颖而出,它是一款由腾讯开源的高性能、超轻量级PHP框架,专为快速构建现代Web应用程序而设计。Biny以其简洁优雅的代码和易于理解的架构,吸引了许多开发者的眼球。 **框架概述** Biny遵循经典的MVC...

    基于PHP的BroPHP框架免费开源的超轻量级PHP框架正式版源码.zip

    这个框架的核心特性体现在其超轻量级的设计,使得它在资源消耗和性能优化方面表现出色。在这款框架中,你可以发现许多现代Web开发的最佳实践,例如MVC(模型-视图-控制器)架构模式、路由系统、依赖注入等。 1. MVC...

    基于PHP的BroPHP框架 免费开源的超轻量级PHP框架 正式版.zip

    9. **性能优化**:BroPHP的超轻量级设计意味着它有较低的内存占用和较快的执行速度。同时,框架允许开发者通过缓存策略进一步提升性能,例如使用文件缓存或Memcached、Redis等内存缓存。 10. **社区与文档**:作为...

    PHP实例开发源码—BroPHP框架 免费开源的超轻量级PHP框架 正式版.zip

    BroPHP作为一款超轻量级框架,它的核心特性主要体现在以下几个方面: 1. **路由系统**:BroPHP框架采用直观的路由定义方式,允许开发者通过简单的规则来处理HTTP请求,实现URL与控制器方法的映射,方便地管理应用...

    基于PHP的BroPHP框架 免费开源的超轻量级PHP框架正式版.zip

    1. **轻量级设计**:BroPHP框架的轻量化设计使得它在项目初期就能快速上手,降低了学习曲线,特别适合小型和中型项目。这种设计理念让开发者能更专注于业务逻辑,而非框架本身的复杂性。 2. **MVC模式**:BroPHP...

    MiniFramework是一款支持MVC的超轻量级PHP开源框架

    总之,MiniFramework是一款非常适合初学者和小型项目开发的PHP框架,它的轻量化设计和MVC架构使得开发过程更加清晰和高效。对于希望快速搭建Web应用,同时又不想被大型框架的复杂性所困扰的开发者来说,...

    SparkWeb:SparkWeb是一个超轻量级的Java Web MVC框架

    Sparkweb 是一个超轻量级的简易高效的 Java WEB 开发框架,其设计思想结合了目前主流的 Spring、Struts2、Playframework、Nodejs-Expressjs、Ruby On Rails 等框架的优秀地方,完美支持 RESTful设计。 二、Sparkweb ...

    超轻量 php 框架 startmvc v2.1.2.zip

    StartMvc 是一个针对初学者和小型项目设计的超轻量级 PHP 框架。它的主要目标是简化 Web 应用程序的开发过程,同时保持足够的灵活性,使得开发者能够快速构建高效能的应用。在 StartMvc v2.1.2 版本中,我们看到了这...

    DuoLamPHP开源框架v1.0

    可以快速搭建出一个项目,作为一个超轻量级的PHP框架,完美支持MVC,完全面向对象。作为一个PHPer,你还需要什么呢? 我们的口号是: 给力的超轻量级PHP框架。 原因: 用了的人都知道! DuoLamPHP框架功能概述: ...

    miniframework:MiniFramework是一种附有Apache2开源协议发布的,支持MVC和RESTful的超轻量级PHP开发框架

    迷你框架MiniFramework是一种常规的Apache2开源协议发布的,支持MVC和RESTful的超轻量级PHP开发框架。MiniFramework能够帮助开发者用最小的学习成本快速构建Web应用程序,在满足开发者最基础的分层开发,数据库和...

    LMVC 快速,高效,好用,没有配置

    LMVC(Lightweight MVC)框架是一个超轻量级的MVC(Model-View-Controller)框架,旨在提供快速、高效且几乎无需配置的开发体验。该框架由webcat创建,首次发布于2008年9月26日。 #### 入门:Hello World 示例 L...

    jQM-MVC-Lazy-Loader:用于延迟加载模块的 jQuery Mobile 的超轻量级 MVC。 “app”对象上有一些辅助方法来帮助 UI 开发

    #jQM-Lazy-Loading-MVC ###目录 ##Purpose 轻量级 jQuery Mobile MVC-ish 延迟加载库。 使项目创建快速简便。 延迟加载控制器和视图。 模型留给开发人员。 辅助方法提供快速简便的 UI 功能。 ####Notes 这并...

    action jsp文件上传 网面向导

    根据提供的资料,“LMVC”被定义为一种“超轻量级MVC框架”。MVC(Model-View-Controller)架构模式是软件工程中一种常用的架构设计模式,尤其适用于Web应用程序的开发。它将应用程序分为三个核心部分:模型(Model...

    DuoLamPHP框架 v1.0

    可以快速搭建出一个项目,作为一个超轻量级的PHP框架,完美支持MVC,完全面向对象。作为一个PHPer,你还需要什么呢? 我们的口号是: 给力的超轻量级PHP框架。 原因: 用了的人都知道!   DuoLamPHP框架功能...

    JDiy极速开发框架v2.5.2

    JDiy是一个超轻量级的java极速开发框架,内置一个建站平台(不用写代码,生成后台管理界面),有了JDiy,您无需再折腾其它庞大的框架(如SSH) JDiy同时支持javaEE/WEB和javaSE开发环境 JDiy利用本地化Locale,中文显示...

    LightningPHP:LightningPHP是与HHVM兼容的最小的MVC框架,痴迷于速度

    LightningPHP是一个用于PHP的FAST超轻量级MVC(模型,视图,控制器)框架。 与大多数其他可用框架不同,LightningPHP默认情况下几乎不包含任何内容。 这是一个最小的准系统MVC框架,没有绒毛,没有复杂性并且没有...

    JunePHP php框架 v0.1.3.zip

    JunePHP是一个超轻量级的PHP框架,采用MVC架构,基于PHP5.3开发。 关于数据库:数据库操作采用Medoo,支持MySQL, SQLite, MariaDB, PostgreSQL等多种数据库。 关于模板:模板引擎使用原生PHP,高效灵活,支持替换...

Global site tag (gtag.js) - Google Analytics