Web应用程序的定义:
顾名思义,Web应用是运行在Web上的应用程序。但是反过来,运行在Web上的应用程序都是Web应用吗?答案是否定的。这里所说的Web应用是指运行在网络上,以浏览器作为通用客户端的应用程序,在许多地方又被称为B/S(Browser/Server,浏览器-服务器)模式的应用。例如我们身边的教务系统,选课系统,都是基于浏览器进行访问的Web应用程序。
Web应用程序的开发方法及应用范围:
Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Python
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。目前Python典型的Web开发框架有Django、Flask、Tornado等。
ASP
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。当服务器收到对ASP文件的请求时,它会处理包含在用于构建发送给浏览器的HTML(Hyper Text Markup Language,超文本置标语言)网页文件中的服务器端脚本代码。除服务器端脚本代码外,ASP文件也可以包含文本、HTML(包括相关的客户端脚本)和com组件调用。ASP简单、易于维护 , 是小型页面应用程序的选择,在使用DCOM (Distributed Component Object Model)和 MTS(Microsoft Transaction Server)的情况下,ASP甚至可以实现中等规模的企业应用程序。
JSP
我们这学期采用的就是JSP做前端模板,Java作为后端的开发形式。JSP(全称Java Server Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
PHP
PHP原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”,即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法,利于学习,使用广泛,主要适用于Web开发领域。PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。但随着互联网的不断更新换代,PHP语言也出现了不少问题。 根据动态网站要求,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,其技术水平的优劣与否将直接影响网站的运行效率。其特点是具有公开的源代码, 在程序设计上与通用型语言,如C语言相似性较高,因此在操作过程中简单易懂,可操作性强。同时,PHP语言具有较高的数据传送处理水平和输出水平,可以广泛应用在Windows系统及各类Web服务器中。如果数据量较大,PHP语言还可以拓宽链接面,与各种数据库相连,缓解数据存储、检索及维护压力。随着技术的发展,PHP 语言搜索引擎还可以量体裁衣,实行个性化服务,如根据客户的喜好进行分类收集储存,极大提高了数据运行效率。
学习心得
这学期,基于一个电商网站的web应用程序。我开始了我的web应用程序开发之路,接触到了很多的新知识,当然也有对很多旧知识的复用。比如Java就是,新一次的学习,不光学习到了新的知识,对Java的理解仿佛也更加深刻了,这可能就是老师督促我们反复学习的原因所在。前端采用JSP模板,利用JSP这门脚本语言,动态的内嵌Java代码,形成了前端页面。当然,也要对CSS,HTML的运用得心应手。否则是出不来漂亮的页面的。还有Servlet,过滤器,监听,EL表达式等等,需要有自己的理解才能用的得心应手。当然,合理的开发模式也是必不可少的,我采用的就是MVC模式。将后端分成三层,合理分工,各司其职。做到程序的低耦合性,提高我们代码的健壮性。下面写一下自己的一点知识理解。
MVC开发模式
Java的开发模式也是历经周折,几次转变,才有了现在的三层架构。在最开始的时候,单纯的只有一个Servlet模块来作为衔接数据库和前端的程序。后来代码逻辑的复杂,使得有了JavaEE Model1版本,分成了JSP(C和V)和JavaBean(M),由JavaBean来和数据库交互再交给JSP。再后来不得不将JSP分开,分成了Servlet(C)、JSP(V)和JavaBean(M)。这样就有了最开始的MVC模型。M(Model,模型层):负责数据的操作,数据库的访问,数据的封装。也就是我们的JavaBean。V(视图层,View):负责生成视图的内容,和用户进行交互。也就是我们的JSP。C(Controller,控制器层):负责调度M和V,进行程序的控制。也即是我们的Servlet。再后来对数据封装的业务逻辑不断复杂,为了降低耦合度,我们又将JavaBean进行了拆分,分成了DAO持久层(负责进行数据库访问,也称Repository)和Service(负责数据的封装)两层,此时的JavaBean只是作为实体类来封装对象,在层与层之间产生作用。也就是我们现在使用的流水线式开发模式,各司其职,互不干扰。画了一幅图可以更好地加深理解。
Servlet
浏览器内核中有通信模块,来和我们的服务器中的通信模块首先建立连接。当用户产生操作后,通信模块生成请求数据包,由浏览器发送给服务器,服务器收到后解析数据包,写入request,创建Servlet,由Servlet来读取request。经过Servlet的逻辑处理后,写入response,交由服务器通信模块来读取response,读取成功后会销毁request对象和response对象,并且生成响应数据包。发送给浏览器,浏览器解析响应数据包后,展示给用户。这就是完成的从用户产生操作到和用户产生交互的完整过程。
其中Servlet的内部及其发展是这样的:
- 为了保证服务器模块和开发者提供的代码判断能够正确的配合到一起,Sun公司设计了Servlet接口。
- 其中init(ServletConfig)方法:当一个Servlet对象被创建后,我们的服务器,会马上调用该对象的init方法,实现初始化的逻辑。我们如果希望哪些逻辑希望在Servlet对象在被创建后立即执行,可以放入init方法。
- destroy()方法:当服务器准备销毁一个Servlet对象之前,会主动调用该对象的destroy方法。我们如果希望哪些逻辑在Servlet对象销毁之前调用,可以放入destroy方法内。
- service()方法:当服务器收到一份Servlet来响应用户的请求时,会调用该Servlet的service方法。处理用户的请求的逻辑应该放入service方法中。
- init方法,destroy方法,service方法在一个Servlet的生命周期中分别会被调用1次,1次,多次。
- 还有getServletInfo()方法和ServletConfig()方法目前的开发中一般不会应用到。
- 并且,在实际开发中。我们一般仅仅只需要写service方法中的逻辑。
- 因此,Sun公司对此重新定义了GenericServlet抽象类,该类实现了Servlet接口,和其他四个方法的空实现。我们现在的实际开发中,只需要继承GenericServlet抽象类即可。
- 但是,浏览器访问服务器存在HTTP协议和HTTPS协议,GenericServlet是面向两种协议的协议,没有对HTTP协议的特殊支持。
- 所以,Sun公司又开发了面向HTTP协议的HTTPServlet,继承了GenericServlet,并提供了很多处理HTTP协议请求的