sakai中,请求url到tool对象的映射。
下面是一次过滤过程中过滤器相关类的堆栈:
其流程简单来说是:某个类处理过滤器目标servlet。
从堆栈上看,涉及到5个类:ActiveToolComponent(“某个类处理”)
ApplicationDispatcher, ApplicationFilterChain, AdminSiteAction(目标servlet)
有几个问题:
1、整个过程是同步的函数调用还是类似于异步的消息机制?
整个过程比较简单,只是一些简单函数调用而已,变换较多,所以貌似比较复杂,同步函数调用。
2、过滤器怎么知道该调用哪个servlet?
ActiveToolComponent持有一个servletcontext,在初始化时注入。
然后通过m_servletContext.getNamedDispatcher(getId());
得到一个实现了RequestDispatcher接口的类,即ApplicationDispatcher。
注意,getNamedDispatcher方法接受一个servlet名称参数,这个名称是在部署描述符中﹤servlet-name﹥元素指定的那个名称。这里传入了一个getId()参数,就能保证得到一个具体的servlet类,这个类可能是通过IOC 容器注入的。
等效的看,servlet已经由ActiveToolComponent传到了RequestDispatcher。
接下来是如何传到ApplicationFilterChain中:
从以下第二行可以看出filterChain的工厂是将ApplicationDispatcher类中的servlet成员传入的。
最后,在filterChain中,过滤链中的所有函数传递完后,取出目标servlet,即AdminSiteAction。
3、补充
在本例中ActiveToolComponent通过调用forward()进行调用,过滤去进行了处理,是因为在web.xml 中声明了<dispatcher>FORWARD</dispatcher>
4、那么,为什么这么做?
至少有一种原因:为了解耦。如第二点中分析,目标servlet在启动初始化的时候注入(与getId()的值绑定),getId是ActiveToolComponent的一个属性,所以问题变为构造一个ActiveToolComponent的子类。这个过程发生在Toolhandler.java中。
5、其他
RequestFilter.java 作用。主要参考sakai_request.doc以及注释。
一般情况下,RequestFilter会过滤sakai的所有tool请求,通过写cookie维护session;如果是文件上传,就用Apache commons-fileuplaod进行处理。
- 大小: 40.3 KB
- 大小: 38 KB
分享到:
相关推荐
### sakai 用户注册业务流程分析 #### 一、引言 Sakai 是一款被广泛应用于高等教育领域的开源课程管理系统...未来还可以进一步探索 Sakai 中其他功能模块的实现机制,以便更全面地理解和利用这个强大的课程管理系统。
2. **Announcement Tool**:在Sakai中,公告工具是教师向学生传达重要信息的工具,可能支持格式化文本、附件和时间戳等功能。 3. **Versioning**:软件版本号(如2.9.2)用于追踪软件的更新和改进,帮助用户了解是否...
标题 "sakai-site-tool-2.9.0-rc01.zip" 暗示了这是一个关于Sakai开源教育平台的特定工具版本。Sakai是一个协作和学习管理系统,广泛用于高等教育机构,它提供了丰富的教学和学习工具。这个2.9.0-rc01版本可能是该...
《Sakai-src:探索与理解Sakai开源教育平台的源码》 Sakai,作为一款全球知名的开源教育协作平台,为教育者和学习者提供了丰富的在线教学工具和服务。其源码版本,即"Sakai-src",是开发者和教育技术爱好者深入研究...
Charon作为Sakai 2.x版本中的一个重要组成部分,主要负责管理系统的入口和导航。它是Sakai网站的主要入口点之一,相较于之前的版本,Charon在用户界面和功能方面进行了改进,特别是在站点导航标签的控制上提供了更多...
在Sakai这个开源教育平台中,样式修改是提升用户界面体验的重要环节。要修改Sakai的样式,首先需要了解CSS(Cascading Style Sheets)的作用,它负责定义网页的布局和外观。以下是详细步骤: 1. **查找当前页面CSS*...
这个文件是Sakai系统的核心配置,它定义了系统的行为、连接到外部服务(如数据库)的方式以及各种服务的参数。 首先,我们来看`sakai.properties`文件的基本结构。它通常包含以下几个部分: 1. **全局配置**:这...
- **集成开发环境设置**:为了方便开发工作,还需要将Sakai源代码导入到Eclipse等IDE中。 #### 三、持续维护与更新 - **文档修订记录**:文档经过多次修订和完善,记录了不同版本的更新内容和日期,体现了文档的...
JAXB是一个Java技术,它提供了一种将XML文档和Java对象之间的映射机制,使得在Java应用程序中处理XML数据变得更加方便。XSL-FO是一种用于生成静态格式化输出(如PDF、PostScript或HTML)的XML语言。Apache FOP...
在本文中,我们将详细探讨如何部署Sakai教育平台,主要关注环境准备、MySQL数据库的安装与配置,以及Sakai的部署流程。Sakai是一个开源的学习管理系统,广泛用于教育机构,支持教学、协作和评估活动。让我们一步步来...
在Sakai中,这通常通过Hibernate这样的ORM框架实现,它可以将Java对象映射到数据库表,简化数据库操作。 3. **模型层(Model Layer)**:定义了公告对象的结构和属性,如AnnouncementModel类,包含了公告的标题、...
通过下载提供的压缩包中的文件,我们可以深入了解Sakai的内部结构和工作原理。 2. 工具:Sakai提供了丰富的工具集,包括课程管理、在线讨论、作业提交、成绩管理等,这些工具都是基于Sakai框架构建的。开发者可以...
总结,SAKAI架构的前世今生是一个不断进化的历程,从最初的教育工具集发展到如今的全方位教育技术平台。它体现了开源软件在教育领域的潜力和价值,同时也揭示了教育技术如何通过创新来推动教育进步。通过阅读《SAKAI...
- 下载 Sakai 2.9.0 的源码包,并解压到指定目录(如 `E:\SAKAI\sakai-src-2.9.0`)。 2. **配置 Windows 快捷打开命令行**: - 使用提供的注册表文件 `Cmdhere.reg` 来实现快捷打开当前目录下的命令行窗口的功能...
对于 Sakai 这样的开源项目,API 文档至关重要,因为它提供了清晰的指导,帮助开发者了解如何集成 Sakai 的功能到自己的应用中,或者对 Sakai 本身进行扩展和定制。 在 Sakai 2.9.3 的 Javadoc 中,开发者可以期待...
Sakai 是由高校、商业组织和个人开发者组成的社区,致力于开发一个通用的协作学习环境...Sakai OAE (Open Academic Environment)是一个目前正在开发中的新版本,继承了CLE中的内容和经验,致力于全新的用户体验。
sakai安装文档,很有用的安装Sakai App Builder
### 使用Sakai构建开放式教学平台的深度解析 #### Sakai概述 Sakai,源自于2004年由美国的顶尖学府如印第安纳大学、密歇根大学、斯坦福大学、麻省理工学院及伯克利大学联合发起的开放源代码课程管理系统(CMS)开发...
本文将详细介绍如何通过源代码版本在本地环境中安装和配置Sakai。 **一、环境准备** 1. **操作系统**: Sakai通常在Linux环境下运行,推荐Ubuntu或CentOS。 2. **Java环境**: Sakai需要Java Development Kit (JDK) 8...