动机:现在的web框架大都是庞然大物,学习曲线陡峭,难道就不能有5分钟能熟练应用的框架?我想做一个这样的。
大致思路: 根据url映射为各个Action类的method,进行控制器的调用,这样的好处是省略了view的配置。
框架的使用
1.实现一个具体的Action(见下面的Class Blog),并对其进行标记(只对Action类标记一个值)。
2.将标记的Action注入到Guice容器,就是要实现自己的Guice Module。
3.在web启动后,进行Guice注入,在ServeletContextListener中实现。
4.好像没有需要做的了。。。。除了写jsp\javascript\
实现:
1.Action类大概的设计
Action类都implements Action 接口。Action接口是一个空接口,紧紧用于标识。
每个Action类都标记一个名称,Action的标记与method一起用于与url匹配.
每个Action可以实现多个方法.
@ActionAnnotation("blogs")
class Blog implements Action{
....
public View new(HttpServeletRequest req,HttpServeletResponse resp){
}
//Action中的方法,模仿spring.
public View list(HttpServeletRequest req,HttpServeletResponse resp){
Map model=new HashMap();
model.put("list",service.findAll());
return new JstlView("/blogList.jsp",model);
}
....
}
2.url路径转换器
//将url路径转换成MethodInvocation.
public class PathTranslator {
public static MethodInvocation translate(String requestPath);
}
public class MethodInvocation{
private Object object; //invocate action.
private Method method; //invocate method of the action
public Object inovate(Object... params);
}
3.建立一个MainServelet,将PathTranslator转化来的MethodInvocation进行调用.调用结果将返回一个View的对象.
4.View 表示框架视图.可以有JstlView,JsonView,RedirectView等等,不过暂时准备实现这三个。
流程:
1.Client发出http://jander.iteye.com/admin/blogs/list请求;
2.该请求由MainServelet接收,发给PathTranslator翻译;
3.翻译结果出来是一个MethodInvocation对象,隐含我们要调用的Action Object和 method Object;
4.调用MethodInocation.innvocate方法,这将导致调用Action.method();
5.action.method()返回一个View。
就这样,应该没有问题,争取这两天做出来。
分享到:
相关推荐
【Web移动应用框架构想】 Web移动应用框架是专门为移动设备设计和开发的,它们旨在提供高效、轻量级的解决方案,以优化在智能手机和平板电脑上的用户体验。这些框架允许开发者构建具有桌面级功能和流畅交互的Web...
《基于Web-GIS的森林资源管理信息系统构想》是一篇探讨如何利用现代信息技术提升森林资源管理效率和质量的学术文章。Web-GIS(Web Geographic Information System)是将地理信息系统(GIS)与互联网技术相结合,实现...
Web 3.0 是一个正在兴起的概念,它将互联网转化为数据库,并朝向人工智能和语义网络的方向发展。以下是 Web 3.0 的一些关键特点和技术: 1. 数据网络:Web 3.0 的第一步是将互联网转化为数据库,即结构化数据集以可...
数据库设计是IT领域中至关重要的一个环节,它关乎到系统的性能、可扩展性和数据的一致性。本资料“数据库设计构想”深入探讨了在构建高效数据库时应考虑的关键因素和设计方法。以下是对这些核心知识点的详细阐述: ...
作者董伟明在序言中强调,Python Web开发不仅仅局限于会使用某个框架进行简单的代码编写,而是需要更多的技能和知识来构建一个具有可扩展性、高效性和高可用性的Web系统。因此,这本书为读者展示了Python Web开发...
【标题】:Web3.0视角下的地方志信息化平台建设构想 【描述】:本文并未直接涉及Web3.0技术或地方志信息化平台建设,而是关于小小说标题艺术的探讨。 【标签】:Web开发 开发技术 互联网 网页技术 专业指导 ...
根据给定文件的信息,我们可以提炼出关于“规划管理系统构想”的相关知识点,主要涉及规划管理系统的构架设计、系统功能以及实现目标等几个方面。 ### 规划管理系统构想 #### 一、系统概述 规划管理系统是针对...
尽管这与我们现在使用的万维网大不相同,但是它们有许多相同的核心思想,甚至还包括一些伯纳斯-李的万维网之后的下一个项目语义网中的构想。 1989年3月,伯纳斯-李撰写了《关于信息化管理的建议》一文,文中提及 ...
很多的同学认为学习.NET 开发要比学习 JAVA 做项目要容易吧,不过用.NET 做一个小程序很简单, 但要你开发一个商业化系统就没那么容易了,而这套框架的目的就是让新手开发一个系统,就像他 们开发一个“计算器”小...
电商发展思路构想.pptx
特斯拉,作为交流电的先驱,不仅在电力系统方面做出了革命性的贡献,还设想了一个无需物理连接的全球无线充电网络。他的核心理念是利用电磁波来传输能量,类似于现代的无线电广播,但特斯拉构想的系统更为高效,能够...
网站架构设计是构建高效、可扩展且易于维护的web应用程序的关键。本文主要探讨了网站架构的基本需求、目标、...通过合理划分层次,明确职责,以及灵活、简单的设计原则,可以构建出适应不断变化需求的高质量web系统。
Web原型设计工具是用于创建网页或应用程序交互模型的软件,它们帮助设计师在开发过程中快速构建出界面布局和功能流程的初步构想。这些工具通常强调易用性,以手绘风格呈现,给予用户自然、直观的体验。...
本书的重点在于通过实际操作来学习Yii框架,具体方法是通过构建一个基于Web的项目任务跟踪系统,从项目构想到生产部署的整个过程中逐步深入地讲解。项目任务跟踪系统是一个典型的Web应用程序,它可以帮助团队组织、...
智慧城市实施路径构想.pdf
构想阶段,我们需要考虑如何支持大量的信息点(500-1000个),确保网络的稳定性和高效性,同时预留足够的扩展空间,以适应企业的持续增长。 设计是网络建设的关键环节。首先,网络拓扑的选择至关重要,常见的有星型...