<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配置文件,而是完全用Java 5注解配置。
c# mvc基础框架+前端layui.js+sqlsugar处理数据(支持sql server、mysql、sqlite、Oracle)。 用户,角色和页面配置齐全,容易上手,非常适合小微型项目开发。
Biny是一款高性能的超轻量级PHP框架。遵循 MVC 模式,用于快速开发现代 Web 应用程序。Biny代码简洁优雅,对应用层,数据层,模板渲染层的封装简单易懂,能够快速上手使用
MiniFramework是一款支持MVC的超轻量级PHP开源框架,满足开发者最基础的MVC分层开发需求,支持数据库和缓存访问等少量功能,做到尽可能精简,以保证框架运行效率。
Sparkweb 是一个超轻量级的简易高效的 Java WEB 开发框架,其设计思想结合了目前主流的 Spring、Struts2、Playframework、Nodejs-Expressjs、Ruby On Rails 等框架的优秀地方,完美支持 RESTful设计。 二、Sparkweb ...
可以快速搭建出一个项目,作为一个超轻量级的PHP框架,完美支持MVC,完全面向对象。作为一个PHPer,你还需要什么呢? 我们的口号是: 给力的超轻量级PHP框架。 原因: 用了的人都知道! DuoLamPHP框架功能概述: ...
迷你框架MiniFramework是一种常规的Apache2开源协议发布的,支持MVC和RESTful的超轻量级PHP开发框架。MiniFramework能够帮助开发者用最小的学习成本快速构建Web应用程序,在满足开发者最基础的分层开发,数据库和...
#jQM-Lazy-Loading-MVC ###目录 ##Purpose 轻量级 jQuery Mobile MVC-ish 延迟加载库。 使项目创建快速简便。 延迟加载控制器和视图。 模型留给开发人员。 辅助方法提供快速简便的 UI 功能。 ####Notes 这并...
可以快速搭建出一个项目,作为一个超轻量级的PHP框架,完美支持MVC,完全面向对象。作为一个PHPer,你还需要什么呢? 我们的口号是: 给力的超轻量级PHP框架。 原因: 用了的人都知道! DuoLamPHP框架功能...
JDiy是一个超轻量级的java极速开发框架,内置一个建站平台(不用写代码,生成后台管理界面),有了JDiy,您无需再折腾其它庞大的框架(如SSH) JDiy同时支持javaEE/WEB和javaSE开发环境 JDiy利用本地化Locale,中文显示...
LightningPHP是一个用于PHP的FAST超轻量级MVC(模型,视图,控制器)框架。 与大多数其他可用框架不同,LightningPHP默认情况下几乎不包含任何内容。 这是一个最小的准系统MVC框架,没有绒毛,没有复杂性并且没有...
JunePHP是一个超轻量级的PHP框架,采用MVC架构,基于PHP5.3开发。 关于数据库:数据库操作采用Medoo,支持MySQL, SQLite, MariaDB, PostgreSQL等多种数据库。 关于模板:模板引擎使用原生PHP,高效灵活,支持替换...
可以快速搭建出一个项目,作为一个超轻量级的PHP框架,完美支持MVC,完全面向对象。作为一个PHPer,你还需要什么呢? 我们的口号是: 给力的超轻量级PHP框架。 原因: 用了的人都知道! DuoLamPHP框架功能概述: ...
JunePHP是一个超轻量级的PHP框架,采用MVC架构,基于PHP5.3开发。关于数据库:数据库操作采用Medoo,支持MySQL, SQLite, MariaDB, PostgreSQL等多种数据库。关于模板:模板引擎使用原生PHP,高效灵活,支持替换为...
MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。MiniFramework 能够帮助开发者用最小的学习成本快速构建 Web 应用,在满足开发者最基础的分层开发、数据库和缓存...
Foxtrot是一个用于快速开发Web和移动应用程序的框架,具有可视化的视图编辑器,该框架集成了JavaScript中的客户端(前端)和PHP中无头的服务器(后端),并且力求成为超轻量级的框架。 -多合一平台更易于学习和使用...
为您提供WillPHP框架下载,超轻量级PHP框架(MVC),如ThinkPHP简化版,支持php7+,大小不到70KB,开发简单,功能强大。环境要求:PHP5.6+ 版本(支持PHP7+),支持Mysql数据库。框架特点:1、大小不到70KB,开发简单...
1、采用目前流行的PHP语言编写,底层采用超轻量级框架作为系统支撑; 2、页面布局使用DIV CSS技术,遵循WEB标准,及大提高页面的浏览速度; 3、使用应用广泛的SMARTY模板引擎,页面高速缓存,提高网站运行速度,...
MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。