`
ericxu131
  • 浏览: 188385 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JForum源码学习研究5-JForum的mvc框架原理

阅读更多
下面这张图基本上就是JForum的MVC框架结构,省略了方法什么的。


对照上图来解释一下各个类吧

JForumBaseServlet它是一个基础类,在第一次加载的时候执行一些初始化的任务。

JForum这个类从它的名字来看就能知道它很重要,它是JForum的核心控制器,也叫做JForum。。。 ,它的主要任务还是封装ResponseContext和RequestContext,将不同的请求分配给不同的action进行处理。处理的方式是解析URL,从URL中得到组件的名字,然后由名字找到具体的类,然后实例化。
	private Command retrieveCommand(String moduleClass) throws Exception
	{
		return (Command)Class.forName(moduleClass).newInstance();
	}
Command c = this.retrieveCommand(moduleClass);
Template template = c.process(request, response, context);
template.process(JForumExecutionContext.getTemplateContext(), out);


Command这个类是所有action的基础类,所有action的类都会泛化为Command给JForum调用,在Command中主要工作是进行动态方法调用,调用的方法名称也是由url当中解析出来的。
		if (!this.ignoreAction) {
			try {
				this.getClass().getMethod(action, NO_ARGS_CLASS).invoke(this, NO_ARGS_OBJECT);
			}
			catch (NoSuchMethodException e) {		
				this.list();		
			}
			catch (Exception e)
            {
                throw new ForumException(e);
			}
		}


ResponseContextRequestContextSessionContext这三个接口是给action使用的,起到一个与应用服务器松耦合的作用。

下面介绍一下它们对应的实现类。

WebResponseContextWebSessionContext这两个类没什么好说的,只是对HttpServletResponse和HttpSession的简单封装

WebRequestContext这个类是一个比较有趣的类,它的主要工作室解析URL和封装参数,判断调用类型如果是AJAX的调整编码方式为UTF-8。代码比较长我就不贴了,有兴趣可以自己去看一下。

小结:JForum的控制器是一个很典型的COMMAND模式的列子,通过COMMAND模式来分配请求的处理,通过面向接口的方式进行松耦合设计,很好的实现了一个简单的MVC框架。
分享到:
评论
1 楼 zhuge 2008-12-25  
ericxu131 写道
下面这张图基本上就是JForum的MVC框架结构,省略了方法什么的。


对照上图来解释一下各个类吧

JForumBaseServlet它是一个基础类,在第一次加载的时候执行一些初始化的任务。

JForum这个类从它的名字来看就能知道它很重要,它是JForum的核心控制器,也叫做JForum。。。 ,它的主要任务还是封装ResponseContext和RequestContext,将不同的请求分配给不同的action进行处理。处理的方式是解析URL,从URL中得到组件的名字,然后由名字找到具体的类,然后实例化。
	private Command retrieveCommand(String moduleClass) throws Exception
	{
		return (Command)Class.forName(moduleClass).newInstance();
	}
Command c = this.retrieveCommand(moduleClass);
Template template = c.process(request, response, context);
template.process(JForumExecutionContext.getTemplateContext(), out);


Command这个类是所有action的基础类,所有action的类都会泛化为Command给JForum调用,在Command中主要工作是进行动态方法调用,调用的方法名称也是由url当中解析出来的。
		if (!this.ignoreAction) {
			try {
				this.getClass().getMethod(action, NO_ARGS_CLASS).invoke(this, NO_ARGS_OBJECT);
			}
			catch (NoSuchMethodException e) {		
				this.list();		
			}
			catch (Exception e)
            {
                throw new ForumException(e);
			}
		}


ResponseContextRequestContextSessionContext这三个接口是给action使用的,起到一个与应用服务器松耦合的作用。

下面介绍一下它们对应的实现类。

WebResponseContextWebSessionContext这两个类没什么好说的,只是对HttpServletResponse和HttpSession的简单封装

WebRequestContext这个类是一个比较有趣的类,它的主要工作室解析URL和封装参数,判断调用类型如果是AJAX的调整编码方式为UTF-8。代码比较长我就不贴了,有兴趣可以自己去看一下。

小结:JForum的控制器是一个很典型的COMMAND模式的列子,通过COMMAND模式来分配请求的处理,通过面向接口的方式进行松耦合设计,很好的实现了一个简单的MVC框架。

tr5rrrrrrrr

相关推荐

    jforum 源码

    本篇文章将深入探讨JForum源码中的核心知识点,以及它如何与FreeMarker结合提供动态网页生成。 1. **FreeMarker模板引擎** FreeMarker是一个用Java语言编写的模板引擎,用于生成动态内容。在JForum中,FreeMarker...

    开源BBS--JForum 源码

    学习JForum的源码,你不仅可以掌握Java Web开发的基本技巧,还能了解到如何设计一个大型的、可扩展的论坛系统。这对你提升自己的编程能力,尤其是Java和Web开发技能,将大有裨益。同时,如果你计划开发自己的论坛...

    jforum说明文档 源码解析 单点登录 jforum缓存

    通过阅读这些PPT,你可以更直观地了解Jforum的工作原理和应用场景,对学习和使用Jforum大有裨益。 总结,Jforum是一个功能丰富的Java论坛系统,其源码解析有助于深入理解其内部机制。从数据库设计到缓存优化,再到...

    jforum-2.1.4-src.zip

    总的来说,JForum 2.1.4的源码提供了一个学习和实践BBS系统开发的绝佳平台。无论是对Java Web开发感兴趣的初学者,还是寻求提升论坛系统解决方案的专业开发者,都能从中受益匪浅。如果你在研究过程中遇到任何问题或...

    JForum-2.1.4.rar_JForum-2.1.4_jforum_jsp_jsp struts_struts

    "ddvip.net"可能是论坛的一个示例或者源码发布站点,它可能包含了更多关于JForum的资源和讨论。 **总结** JForum 2.1.4是一个基于JSP和Struts的开源论坛系统,具有丰富的功能和良好的可扩展性。通过学习和使用这个...

    开源jsp论坛_ jforum 2.1.4源码

    通过研究`JForum 2.1.4`源码,开发者不仅可以掌握JSP的基础知识,还能了解到Web开发中的许多最佳实践,如使用MVC模式、模板引擎、数据库交互等。同时,对于想要自定义论坛功能或开发自己的Web应用的开发者来说,这是...

    基于java的开发源码-论坛系统 JForum.zip

    JForum的源码分析可以帮助开发者了解如何使用Java进行Web开发,特别是对于MVC(Model-View-Controller)设计模式的应用。该项目可能采用了Servlet和JSP技术来处理HTTP请求和展示视图,使用了JDBC来与数据库交互,还...

    jforum2.1.9代码及SQL SERVER数据库备份

    1. **数据库恢复**:`jforum_ns.bak`文件可以通过SQL SERVER Management Studio进行恢复操作,恢复后的数据库可以直接与jForum源码对接,快速搭建论坛环境。 2. **性能优化**:SQL SERVER 2008提供了丰富的性能监控...

    jforum学习资源

    总的来说,JForum是一个全面且成熟的论坛解决方案,它的源码学习对于Java开发者来说,不仅可以提升Web应用开发技能,还能深入理解MVC架构、数据库设计和权限管理等核心概念。通过对JForum的源码分析和实践,开发者...

    JForum3 完整项目

    总结来说,JForum3是一个成熟的Java论坛解决方案,它的完整源代码对于Java Web开发者来说是一个宝贵的资源,无论是用于学习、研究还是定制自己的论坛系统,都能从中受益匪浅。通过深入了解JForum3的架构和实现,...

    jforum二次开发 详解 BBS开源安装

    JForum采用MVC(Model-View-Controller)设计模式,确保了代码结构清晰,易于维护。主要组件包括: 1. 数据库模型(Model):负责存储论坛数据,通常使用MySQL或PostgreSQL等关系型数据库。 2. 控制器(Controller...

    Jforum2.19

    通过深入研究Jforum的源代码,开发者可以了解到Java Web应用的开发模式,包括MVC架构、ORM框架的使用(如Hibernate)、国际化处理、权限控制等方面的知识。同时,这也是学习和理解Web论坛系统设计与实现的一个宝贵...

    jforum项目

    总结来说,JForum项目是一个全面的Java Web学习资源,涵盖了MVC架构、数据库管理、ORM、权限控制、模板引擎、并发处理和邮件服务等多个领域。通过研究其源码,我们可以深入理解这些技术的实战应用,进一步提升我们的...

    JForumBBS自定义修改论坛源码

    这个压缩包文件包含的是对JForum源码进行自定义修改的版本,使得用户可以根据自身需求调整论坛的功能和外观。通过链接"http://blog.csdn.net/dowith7/article/details/19110599"提供的修改说明,我们可以了解到具体...

    java源码:Java论坛系统 JForum.zip

    **Java源码:Java论坛系统 JForum** JForum是一款基于Java技术开发的开源论坛系统,以其高效、稳定和可扩展性而闻名。该系统由Rafael Steil等人开发,旨在提供一个功能丰富的社区交流平台。JForum的核心设计遵循了...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    ASP.NET新闻、论坛、电子商城、博客源码及JSP常见问题解答

    在论坛开发中,Java框架如Spring Boot和Hibernate可以提供高效的数据访问和事务处理,同时,社区组件如JForum提供了开箱即用的功能。电子商城方面,开源项目如OpenCart或VirtueMart基于JSP,为开发者提供了丰富的...

Global site tag (gtag.js) - Google Analytics