AI低代码开发宣言:一场新的软件工程革命

引言:AI低代码开发不仅是继面向过程,面向对象之后的一种新的抽象方式,也是继瀑布开发,敏捷开发之后的一种新的开发方法。

 五十年前的软件危机 

      正是计算机技术的起步阶段,软件的基础设施正在建立,如操作系统,数据库,互联网底层协议等,软件正在从简单走向复杂。人们发现一旦软件开发失控,就如同陷入焦油坑,无论投入多大的人力物力都很难改变,与人月无关。软件开发成本和时间无限放大并且质量也难以保证。

      在1970年,Winston Royce提出了著名的“瀑布模型”,其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,采用结构化的分析与设计方法把逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

      瀑布模型旨在通过明确的阶段和规定的文档,使软件开发变得更加可预测和有序,非常适用于大规模、高度集成性、不频繁变更需求的软件开发项目。直到80年代早期,一直是被广泛采用的软件开发模型。

 二十年前的软件危机 

      随着互联网的兴起,软件已经开始触及生活的方方面面,软件正在定义一切,人们对于信息化的需求开始爆发,程序员与各种用户场景之间开启了第一次碰撞,需求的不明确性和不断变化,使得传统的瀑布开发模型严重束缚了软件开发的进度,影响了软件开发的成本。

      2001年2月,Martin Fowler,Jim Highsmith等17位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地,举行了一次敏捷方法发起者和实践者的聚会。在这次会议上面,他们正式提出了Agile(敏捷开发)这个概念,并共同签署了《敏捷宣言》。

      极限编程(XP)和 Scrum代表了敏捷开发实践的两个不同流派,Scrum是一个包括了一系列的实践和预定义角色的过程骨架,如项目负责人、产品负责人和开发团队通过冲刺完成每一次迭代,产出每一次增量和达成每一次目标。极限编程更侧重具体工程实践,如现场客户、代码规范、每周40小时工作制、计划游戏、系统隐喻、简单设计、测试驱动开发、重构、代码集体所有、持续集成、小型发布、结对编程等。

      在敏捷开发的具体实践中,不同的流派也没有严格的区别,往往是做不同程度的融合。敏捷开发也并不是对瀑布开发的抛弃,而是在此基础上的过程优化,瀑布模型在更短的时间维度上得以体现。因此到今天,敏捷开发依然是软件开发的主流模式。

 今天的软件危机 

      软件已经融入了生活的方方面面,可以说绝大部分的场景都已经被信息化过了,软件已经对世界进行了重构,然而新技术的发展还在方兴未艾,特别是移动互联网、物联网、大数据、云原生、人工智能等技术的发展,人们对信息系统的需求还在不断的爆发,IT领域的最大矛盾依然是软件的开发不能满足人们日益增长的数字化需求。而在这一过程中,危机也在不断地积累。

第一,敏捷开发带来的问题越来越多。

虽然敏捷开发取得了巨大的成绩,许多软件团队都在遵循着敏捷的思想进行敏捷实践,但敏捷开发不是灵丹妙药,其带来的问题也日益显现。比如:很难准确地定义必要的文档,把握整体产品的一致性;难以判断项目的终点,并有效地进行估算;过度依赖高手程序员等等。

第二,技术的更新越来越快。

移动互联网的普及为技术的发展起了巨大的推动作用。如层出不穷的前端技术,Android和IOS的App开发,Web前端框架React,Vue等;数据量的快速增加,使得后端服务也从单体架构变为微服务框架,还有各种各样支持分布式和高并发数据库系统和中间件;物联网和人工智能的应用普及,Python和Go等多种语言融合的应用也越来越广泛。因此对于程序员的要求不但能够快速学习适合的技术栈,还要不断跟踪技术前沿的变化情况。

第三,客户对软件的要求越来越高。

随着软件用户的不断增加,让传统的信息管理系统越来越互联网化,不仅拥有更多的用户,业务的流程也变得更加复杂。人们通过智能手机既可以满足生活需要,还可以完成大部分的事务性工作,如政府、医疗、教育、考勤、办公等。一些高效而又强大的ToC软件应用对用户的教育使得用户对ToB软件在交互体验方面也有了更高的要求。

第四,研发团队越来越不可控。

现在软件开发的组织分工越来越细,如前端、后端、UI设计、产品经理、项目经理等。这种模式在业务逻辑相对简单的互联网软件开发中是有效的,但是在业务日益复杂,需要领域知识的信息管理软件中就开始出现问题。前后端分离造成了巨大的沟通成本;既懂专业又懂开发的产品经理少之又少;全栈工程师的缺失导致软件架构越来越弱;人员的流动性使得代码也愈加难以维护。因此现在软件开发已经迫切需要一种新的组织方式,来解决日益失控的局面。

第五,程序员越来越迷茫。

IT技术的高速发展吸引了大量年轻人进入了软件行业,而软件开发又是一个知识密集型的工作,程序员之间的能力差异非常巨大。很多程序员对于软件开发的边界是没有概念的,互联网软件开发,信息管理系统开发和专业软件的技术栈和开发方式都不尽相同。很多程序员学习了大量的互联网开发技术,但只能从事信息管理系统开发,这让他们产生了很多困惑。还有众所周知的35岁现象。缺少有效的职业规划成为了越来越多程序员面临的问题。

 革命性的新技术 

      早在2014年,IT咨询公司Forrester 最早提出了低代码的概念,直到2019年,另一个著名的IT咨询公司Gartner对低代码开发做了更加详尽的定义后引起了大家的广泛关注:

      LCAP(低代码开发平台)是支持快速应用程序开发,使用实现应用陈述性、高级的编程抽象(如基于模型驱动和元数据编程语言)一站式部署、执行和管理的应用程序平台。不同于传统的应用平台,它支持用户界面、业务逻辑和数据服务的开发,但以牺牲跨平台的可移植性、应用开放性为代价来提升效率。

      从这个定义可以看出,低代码核心价值是实现业务应用的快速交付,通过利用平台工具在更高的抽象维度上来加快软件的开发。Gartner并没有指定低代码的具体实现方式,减少代码的录入和采用配置化策略的可视化拖拉拽只是一种实现方式。

      如果说低代码为改革软件开发指明了方向,AIGC则提供了更加有力的手段。2022年11月,OpenAI公司发布了ChatGPT,这个基于人工智能技术驱动的自然语言处理工具,能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、营销文案、翻译、论文等任务。在编程方面,其优秀的代码生成能力也同样让程序员感到震惊。早在2021年6月,微软与OpenAI共同推出了一款AI编程工具GitHub Copilot,其核心的模型借助了GPT的生成能力可以理解更大范围的上下文,无论是文档、注释、函数名称、测试代码还是代码本身,都可以根据上下文合成新代码进行匹配,因其高效的辅助编程能力而称为结对编程的虚拟版本。而最新的Github Copilot X不仅可以识别开发者输入的代码内容,显示报错信息,还能对代码块的用途进行分析和解释,生成单元测试,给出 debug 建议,甚至用语音与程序员进行交互。

CSDN的创始人蒋涛在最近的一次演讲中提到,将AI编程以无人驾驶为灵感分为五个等级C1、C2、C3、C4、C5。这里对C4和C5稍作修改,因为程序的开发目前看应该还很难离开人的作用,只是参与的多少。

      C1级别,就跟输入法一样,打一行会自动补全提示;

      C2级别,会在程序员打完一行代码之后预测后面的代码;

      C3级别,可以生成完整的函数代码,并且可以基于一段代码之后生成代码;

      C4级别,能够按程序员要求生成一个完整的模块,完成不同编程语言的互译;

      C5级别,在程序员的有限提示下生成一个完整的项目。

      据测试,ChatGPT 至少已经达到了 C3 水准,最新的GPT-4甚至能完成C4级别的部分工作。从C1到C5,可以看到这实际上就是对代码补全功能的一个不断强化,对于程序员来说,代码才是最高效最灵活的实现方式,代码补全正是对代码编写的灵活驾驭。

      我们知道在实际的软件开发中,同样的业务场景往往有无数种实现方式,虽然难以确定哪种是最好的,但我们需要的是确定的、可读的、经得起验证的实现方式,因此要达到C5的级别,仅仅依靠AI自由生成的代码是不够的,我们需要低代码的限制能力,即低代码概念中的以牺牲开放性的代价来提升确定性。另外,AI代码生成也取决于提示词的能力,而表达良好的提示词需要专业的领域知识,也正是对应低代码中的高级抽象。

      软件开发不仅仅是编写代码,还包括需求分析、流程建模、架构设计、详细设计、测试等软件开发周期中的多个流程。可以预见的是,ChatGPT将会在每个流程环节中都可以进行辅助,新技术带来的变革是毋庸置疑的。甚至有人提出:程序员的职业生涯将在 3 年内被AIGC终结。这虽然有点过激,但我想程序员永远不会被终结,终结的只是不会与时俱进,使用AI编程工具的程序员。

 AI低代码开发宣言 

      在这个技术发展的奇点上,我们对比敏捷开发宣言提出低代码开发宣言这个新的软件工程思想,试图来指导和分析软件编程领域接下来的发展。虽然右项有其价值,但是我们更注重左项的价值。

1、组件和模型高于个体和互动高于流程和工具

      在瀑布开发中,通过严格的流程和设计工具对软件开发过程进行定义来保证开发计划的有效执行。而在敏捷开发中,个体和互动更强调了人的作用,利用不同参与人员之间的技能和沟通交流来应对开发需求的变化。

      通过多年的软件开发积累,许多业务场景已经具有成熟的领域模型和操作流程,对于新的业务也能够通过不同粒度的组件快速搭建。稍具规模的软件公司也会形成自己独特的开发模式和框架体系,这也是低代码概念一经提出,低代码或者无代码平台就层出不穷的原因。

      通过AI大语言模型,可以更好地拆解场景,指导领域模型的建立和组件的搭建。组件和模型作为软件开发的基本要素而存在,各种各样的开发框架和组件体系由于面向的场景和设计模式的不同而各具特色。虽然组件和框架的积累能够提高开发效率,但是建立什么样的组件和模型能够与AI大模型进行有效协作才是问题的关键所在。

2、可读的代码高于工作的软件高于详尽的文档

      在瀑布开发中,文档是重要的里程碑产出。而在敏捷开发中,由于需求的变化,我们需要持续的迭代软件的开发过程,不断的与用户交流,这就要求软件的代码能够不断地进行快速而有效的修改,每一次迭代都产生可以工作的软件,

      然而在这个过程中,文档被不断地弱化,以至于到了最后,文档与代码完全脱节。关于文档还有一个有趣的共识就是程序员最讨厌写文档,同时也最讨厌别人不写文档。另外对于频繁修改的代码,代码的可维护性也在不断地降低,程序员最容易读懂的代码是刚写完的代码,而最难懂的代码则是自己一年前写的代码,程序员总是在不断的循环中崩溃。

      因此提高代码的可读性,才是解决软件开发能够持续迭代的最好方法,也是减少Bug的有效途径。提高的代码可读性可以从三个方面做起,首先是命名,清晰而准确的命名能够极大地提高代码的可读性;其次是代码文档,不仅仅是代码注释,一致且完备的文档能够让程序员更加快速地读懂代码;最后是良好的设计,好的设计能够简化代码并且让代码产生自注释的能力。这些问题同样可以利用AI大模型,通过AI大模型一方面可以对代码的质量进行检查,提供更好的设计方式;另一方面也可以自动生成符合质量要求的代码片段。程序员甚至可以直接利用伪代码进行编程,从而大幅度地提高代码的可读性。

3、客户成功高于客户合作高于合同谈判

      在瀑布开发中,首先要确定软件的功能范围,所以先进行合同谈判,一旦合同签订,软件的需求便不再变化。而在敏捷开发中,由于用户在开发之前并不能准确地描述想要的软件,因此需要与客户进行合作,在开发的过程中不断迭代,最终达成用户想要的效果。

      今天,软件开发在许多场景中已经积累了足够的经验,设计出了行业的最佳实践,这也是SaaS作为一种成熟的模式被广泛采用的原因。用户不需要完全的参与开发了,因此软件交付成为了一项重要的工作。客户成功可以分为三个层面,第一是客户使用好软件,第二是软件能够为客户真正创造价值,第三是能够跟随客户持续发展并保证客户的竞争优势。

      但SaaS模式并不意味着不再为用户进行定制开发。事实上,管理软件是管理思想的化身,而一个企业区别于另外一个企业也正是管理思想的不同。如何针对客户进行个性化定制,是SaaS软件的一个挑战,也是AI低代码开发的机遇。一个显而易见的问题是如果通过AI低代码进行定制化开发足够容易,SaaS的标准化是否还成立。在低代码开发中,有可能会出现一个新的程序员分工,业务程序员,他们将不再关注于技术的实现细节,而是通过使用合理的组件和模型在AI的指导下快速地对软件系统进行重构,从而保证软件系统在客户应用上的持续成功。

4、预测变化高于响应变化高于遵循计划

      在瀑布开发中,合同一旦签订就会遵循计划按部就班地进行开发。而在敏捷开发中,由于与用户不断地交互,就要不断响应需求的变化,用户变化的合理程度则要等待下次交互时才能确定,如果不合理,就会带来频繁的返工。

      因此对用户需求进行深刻理解并预测变化就非常重要。这对于程序员来说,经常是用几个月的时间来理解用户几年的工作经验,往往很多概念只是表面一致,其中深刻的业务逻辑却难以明白,因而造成了系统与用户的诉求不符。如何才能深刻的理解需求还需要更为专业的领域专家参与,而在AI低代码开发中,大语言模型的超能力则可以充当起领域专家的作用,增强程序员对用户需求的理解。

      另一个能够应对用户变化的能力是将AI融入到系统中,让软件本身就具有预测能力。通过AI,用户可以更加灵活的使用软件,而不仅仅受限于程序界面的有限交互和展现。同时利用大模型的庞大的知识和推理能力为客户的业务进行分析和预测,这对于现有的软件系统将是一个革命性的变化。

 AI低代码开发原则 

      低代码开发原则同样以敏捷开发原则为对应,分别从交付项目、沟通合作,项目实施和持续改进四个方面进行阐述。在AI低代码开发中,开发人员更多的是使用工具和深入业务场景以用户的方式进行思考,而不仅仅是服务用户,因此我们采取的策略和思想也随之改变。

 交付项目 

① 敏捷开发:我们最重要的目标是通过持续不断地及早交付有价值的软件使客户满意。

① AI低代码开发:我们最重要的目标是快速交付有价值的软件并能够持续的快速改进使客户满意。


② 敏捷开发:欣然面对需求变化,即使在开发后期也一样。善于掌控变化,帮助客户获得竞争优势。

② AI低代码开发:在软件开发和使用的任意阶段,欣然面对需求的变化,并增加软件系统的预测能力,帮助客户获得竞争优势。


③ 敏捷开发:经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。

③ AI低代码开发:通过使用低代码开发工具,快速地交付可工作的软件并保证代码和设计的可读性。


 沟通与合作 

④ 敏捷开发:业务人员和开发人员必须相互合作,项目中的每一天都不例外。

④ AI低代码开发:业务程序员可以通过AI了解业务或者与业务人员进行合作。


⑤ 敏捷开发:激发个体的斗志,以他们为核心搭建项目。提供他们所需的环境和支持,辅以信任,从而达成目标。

⑤ AI低代码开发:以AI低代码开发工具为核心搭建项目,激发个体的斗志,为他们提供一致的环境和支持,辅以信任,从而达成目标。


 敏捷开发:不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。

⑥ AI低代码开发:使用统一的设计开发平台,确保领域知识理解的一致性,在概念理解有差异时,尽可能面对面的进行交流。


 项目实施与项目推进 

⑦ 敏捷开发:可工作的软件是进度的首要度量标准。

⑦ AI低代码开发:可工作的软件和清晰可读的代码是进度的首要度量标准。


⑧ 敏捷开发:敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同保持步调稳定。

⑧ AI低代码开发:低代码过程倡导可持续的快速开发。责任人、业务程序员和用户要能够共同保持步调稳定。


⑨ 敏捷开发:坚持不懈地追求技术卓越和良好设计,会增强敏捷能力。

⑨ AI低代码开发:坚持不懈地追求技术卓越、良好设计以及可读的代码,以此增强低代码开发能力。


项目和团队的持续改进

 敏捷开发:以简洁为本,极力减少不必要工作量的艺术。

⑩ AI低代码开发:尽可能利用AI大模型的能力,极力减少不必要工作量。


⑪ 敏捷开发:最好的架构、需求和设计出自于自组织的团队。

⑪ AI低代码开发:最好的架构、需求和设计不仅出自于自组织的团队,好的开发平台和AI模型同样至关重要。


⑫ 敏捷开发:团队定期地反思如何能提高成效,并依此调整自身的行为举止。

⑫ AI低代码开发:团队定期地反思如何能提高成效和增强AI能力,并以此调整自身的行为举止。


 一场新的软件工程革命 

      AI低代码的出现是编程领域不断积累的结果,是即将从量变走向质变的必然趋势。AI低代码对于软件开发相当于制造业中自动化生产线,将不再依赖于个人,而是标准的可持续的快速开发体系。这不仅仅是一个技术框架,更是一个新的软件工程思想,是程序员自身编程方式的反思,是进一步解放生产力的新技术架构,将会深刻地改变软件系统的开发和实践。

      AI低代码开发是继面向过程,面向对象之后的一种新的抽象方式,利用成熟高效的组件和模型,从技术和业务两个层面快速完成软件系统的搭建和实现。

      AI低代码开发是继瀑布开发,敏捷开发之后的一种新的开发方法,利用高可读的代码和深刻的业务理解实现功能的快速迭代,达成客户不断成功保证

 后记 

      IT行业最不缺的就是概念,这些概念有的昙花一现,有的则代表了一个时代。AIGC和低代码毫无疑问都是炙手可热的概念。个人认为低代码是多年来软件开发领域难得的一个好词,低不仅仅是少,恰如微不仅仅是小,是一个非常道的状态,可以理解为代码实现在业务逻辑之下,也可以理解是分层和分工的体现。低代码与无代码有着本质的不同,并不能相提并论。一个是面向专业程序员,是新的软件工程思想和开发模式;一个是面向用户,采用可视化的配置方式是对成熟软件的扩展。另外AI作为今天最耀眼的技术,在低代码开发领域也必定会有产生更多不同的流派,所以引用一下王勃的《滕王阁序》:

敢竭鄙怀,恭疏短引;一言均赋,四韵俱成。请洒潘江,各倾陆海云尔。

作者文章链接:

AI低代码开发宣言之核心:编程的粒度

AI低代码开发宣言之过程:软件工程化

代码可读性是AI低代码开发的关键所在

面向AIGC的开发组件体系设计

再厉害的程序员都有这三个痛点,然而它没有

从五个维度比较:代码、无代码、低代码、AI提示代码、AI低代码

AI是为人类写代码还是为自己写代码?

原创 | 作者 | 薛丹,国防科技大学博士,资深程序员。版权所有,转载须联系授权并注明来源。

提供典型应用案例,剖析JSP/Servret技术与Struts 2技术在Web开发中的不同 提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最版本,紧跟技术发展的趋势 提供230个实例和4个综合案例,可以作为案头必备的查询手册 一线开发人员全力打造,分享技术盛宴! 重点内容及特色 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》介绍了Web开发中客户端技术的基础知识,包括JavaScript、CSS、AJAX等,这些技术都是Web应用中常用的客户端技术。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握的技术。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和事务管理等,Spring中的数据库技术与AOP等。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书相比,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》讲解由浅入深,涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想进一步学习SSH框架整合开发的人员 了解SSH整合开发,想进一步提高开发技术的人员 正在使用SSH整合技术开发项目,想查阅资料的人员 大中专院校的学生和老师,以及Java培训班的学员和讲师 需要一本案头必备查询手册的程序员 光盘内容 6小时多媒体体视频讲解 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》所涉及的源代码 布衣暖,菜根香,好书滋味长!清华大学出版社长期以来一直秉承为读者多出好书的宗旨,多年来为读者奉献了大量脍炙人口的精品图书。尤其在计算机图书出版领域更是形成了鲜明特色,所出版的各类计算机图书受到了广大读者的好评。本次出版的“原创经典,程序员典藏”系列图书是清华大学出版社的重点精品计算机图书,旨在帮助读者全面学习各类程序设计语言和开发工具,提高开发水平。同时也为广大程序员提供良好的技术参考,以便作为案头必备的查询手册。 内容提要 -------------------------------------------------------------------------------- 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean、Jdbc和Hibernate模板、事务管理、Spring AOP等)以及 Hibernate(会话、映射、标准查询API、HQL、事务管理、锁等)。除此之外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。SSH是目前最流行的Java Web开发技术。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》适合广大从事Java Web开发工作的技术人员、对SSH开发感兴趣的人员以及大专院校学生阅读,尤其是具有一定的Web开发经验的技术人员。 目录 -------------------------------------------------------------------------------- 第1篇 web开发基础篇 第1章 搭建开发环境 1.1 本书使用的软件和框架的版本 1.2 JDK6的下载与安装 1.3 Eclipse3.4 的下载与安装 1.4 MyEclipse6.5 的下载与安装 1.5 Eclipse:IDEforJavaEEDevelopers的下载与安装 1.6 Tomcat6的下载与安装 1.7 在MyEclipse中配置。Tomcat 1.8 在EclipseIDEforJavaEEDevelopers中配置Tomcat 1.9 小结 第2章 JavaWeb应用开发基础 2.1 Web技术的发展 2.2 JavaWeb技术 2.2.1 Java.Welb程序的基本组成 2.2.2 Java,Web程序的目录结构 2.2.3 JavaWeb程序的配置文件 2.3 MVC模式与MvC框架 2.3.1 JSP模型1和JSP模型2 2.3.2 Web应用程序需要的基础服务 2.3.3 MVC模式概述 2.3.4 常用的MvC框架 2.4 小结 第3章 Web开发中的客户端技术 3.1 常用的JavaScriptIDE简介 3.1.1 在MyEclipse中使用JavaScript 3.1.2 在EclipseIDEforJavaEE中使用JavaScript 3.1.3 在NetBeans中使用JavaScript 3.1.4 其他的JavaScriptIDE 3.2.1 avaScdpt语法基础 3.2.1 实例:编写第一个JavaScript程序:Greet 3.2.2 变量 3.2.3 原始类型 3.2.4 类型转换 3.2.5 函数与函数调用 3.2.6 类和对象 3.3 JavaScript高级技术 3.3.1 DOM技术概述 3.3.2 获得HTML元素的3种方法 3.3.3 实例:图像自动切换 3.3.4 正则表达式 3.3.5 实例:表格排序 3.4 CSS基础 3.4.1 CSS的基本语法 3.4.2 在Style属性中定义样式 3.4.3 在HTML中定义样式 3.4.4 在外部文件中定义样式 3.4.5 样式的继承 3.5 AJAX.基础 3.5.1 AJAX概述 3.5.2 实例:使用XMLHttpRequest获得Web资源 3.5.3 实例:使用XMLHttpRequest跨域访问Web资源 3.5.4 实例:AJAX的3种交换数据方法 3.6 小结 第4章 Servlet技术 4.1 Servlet的Helloworld程序 4.1.1 实例:在My Eclipse中编写Helloworld程序 4.1.2 实例:手工编写:Helloworld程序 4.2 Servlet基础 4.2.1 配置数据库连接池 4.2.2 数据库连接池的应用 4.2 -3实例:用doGet方法处理客户端请求 4.2.4 实例:用doPost方法处理客户端请求 4.2.5 实例:用service方法处理客户端请求 4.2.6 实例:初始化(init)和销毁(destroy)Servlet 4.2.7 实例:使用PrintWriter输出响应消息 4.2.8 实例:用ServletOutputStream显示图像 4.2.9 实例:使用RequestDispatcher包含Web资源 4.2.10 实例:使用RequestDispatcher转发Web资源 4.3 HttpServletResponse类的其他功能 4.3.1 产生状态响应码 4.3.2 设置响应消息头 4.3.3 实例:验证响应头设置情况 4.4 使用:HttpServletRequest获得请求消息 4.4.1 获取请求行消息 4.4.2 获取网络连接消息 4.4.3 获取请求头消息 4.5 处理Cookie 4.5.1 什么是Cookie 4.5.2 Cookie类中的方法 4.5.3 实例:用Cookie读写客户端信息 4.5.4 实例:用Cookie读写复杂数据 4.6 处理Session 4.6.1 什么是Session 4.6.2 HttpSession接口中的方法 4.6.3 HttpServletRequest接口中的Session方法 4.6.4 实例:通过Cookie跟踪Session 4.6.5 实例:通过重写uRL跟踪Session 4.7 Web开发的中文问题 4.7.1 Java的编码原理 4.7.2 实例:解决输出中文乱码问题 4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头中转输中文 4.8 小结 第5章 JSP技术 5.1 用MyEclipse编写第一个JSP程序 5.1.1 实例:编写显示服务器当前时间的JSP程序 5.1.2 调试JSP程序 5.1.3 改变JSP的访问路径和扩展名 5.1.4 手动发布JSP程序 5.2 JSP的运行原理 5.2.1 Tomcat如何处理JSP页 5.2.2 分析由JSP生成的Servlet代码 5.3 JSP基本语法 5.3.1 JSP表达式 5.3.2 在JSP中嵌入Java代码 5.3.3.JSP声明 5.3.4.JSP表达式语言(EL) 5.3.5 实例:用EL函数替换HTML中的特殊字符 5.3.6 JSP页面中的注释 5.4 JSP指令 5.4.1 JSP指令简介 5.4.2 page页面指令 5.4.3 include加入指令 5.5.JSP的9个内置对象 5.5.1 out输出对象 5.5.2 pageContext封装对象 5.5.3 其他的JSP内置对象 5.6 JSP标签 5.6.1 插入标签 5.6.2 转发标签 5.6.3 传参标签 5.6.4 创建:Bean标签 5.6.5 设置属性值标签 5.6.6 获取属性值标签 5.7 JSP的标准标签库(JSTL) 5.7.1 如何使用JSTL 5.7.2 条件标签 5.7.3 循环标签 5.8 小结 第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 第9章 Struts 2的* 第10章 Struts 2的类型转换 第11章 Struts 2的输入校验 第12章 文件的上传和下载 第13章 国际化 第14章 Struts 2的标签库 第15章 Struts 2对AJAX的支持 第16章 用Struts 2实现注册登录系统 第3篇 Hibernate篇 第17章 Hibernate的Helloworld程序 第18章 配置Hibernate 第19章 Hibernate的会话与O/R映射 第20章 Hibernate的查询与更技术 第21章 Hibernate的高级技术 第4篇 Spring篇 第22章 Spring的Helloworld程序 第23章 反向控制(Ioc)与装配JavaBean 第24章 Spring中的数据库技术 第25章 Spring的其他高级技术 第5篇 综合实例篇 第26章 Struts 2与Hibernate、Spring的整合 第27章 网络硬盘 第28章 论坛系统
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XDevelop AI低代码开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值