说说Java Web中的Web应用程序|乐字节
大家好,我是乐字节的小乐,今天接着上期文章《Javaweb的概念与C/S、B/S体系结构》继续往下介绍Java Web ,这次要说的是web应用程序。
1. Web 应用程序的工作原理
Web 应用程序大体上可以分为两种,即静态网站和动态网站。早期的 Web 应用主要是 静态页面的浏览,即静态网站。这些网站使用 HTML 语言来编写,放在 Web 服务器上,用户使用浏览器通过 HTTP 协议请求服务器上的 Web 页面,服务器上的 Web 服务器将接收到 的用户请求处理后,再发送给客户端浏览器,显示给用户。

随着网络的发展,很多线下业务开始向网上发展,基于 Internet 的 Web 应用也变得越来越复杂,用户所访问的资源已不能只是局限于服务器上保存的静态网页,更多的内容需要根据用户的请求动态生成页面信息,即动态网站。这些网站通常使用 HTML 语言和动态脚本语言(如 JSP、ASP 或者是 PHP 等)编写,并将编写后的程序部署到 Web 服务器上,由 Web 服务器对动态脚本代码进行处理,并转化为浏览器可以解析的 HTML 代码,返回给客户端浏览器,显示给用户。

就好比,静态网站类似于 10 年前的手机,这种手机只能使用出厂时设置的功能和铃声,用户自己并不能对其铃声进行添加和删除等;而动态网站则类似于现在研制的手机,用户在使用这些手机时,不再是只能使用手机中默认的铃声,而是可以根据自己的喜好任意设置。
2. Web 应用技术
在开发 Web 应用程序时,通常需要应用客户端和服务器端两方面的技术。其中,客户端应用的技术主要用于展现信息内容,而服务器端应用的技术,则主要用于进行业务逻辑的处理和与数据库的交互等。
1) 、客户端应用的技术
在进行 Web 应用开发时,离不开客户端技术的支持。目前,比较常用的客户端技术包 括 HTML 语言、CSS、Flash 和客户端脚本技术。
✓ HTML
HTML 语言是客户端技术的基础,主要用于显示网页信息,有浏览器解释执行,它不需 要编译。
✓ CSS
CSS 就是一种叫做样式表的技术,也有人称之为层叠样式表。在制作网页时才有用 CSS 样式,可以有效地对页面的布局、字体、颜色、背景和其他效果实现更加精确的控制。
✓ Flash
Flash 是一种交互式矢量动画制作技术,它可以包含动画、音频、视频以及应用程序, 而且 Flash 文件比较小,非常适合在 Web 上应用。
✓ 客户端脚本技术
客户端脚本技术是指嵌入到 Web 页面中的程序代码,这些程序代码是一种解释性的语言,浏览器可以对客户端脚本进行解释。通过脚本语言可以实现以编程的方式对页面元素进行控制,从而增加页面的灵活性。常用的客户端脚本语言由 JavaScript 和 VBScript。目前, 应用最广泛的客户端脚本语言是 JavaScript 脚本,它是 Ajax 的重要组成部分。
2)、 服务器端应用的技术
在开发动态网站时,离不开服务器端技术,比较传统和经典的 Web 服务器端技术主要 有:CGI、ASP、SERVLET/JSP、PHP 等。
✓ CGI(公用网关接口)
CGI 可以说是最早的 WEB 服务器端技术,它是个 HTTP 过滤程序,其大致的原理是:CGI 是在 WEB 服务器上运行的一个程序,该程序定义了 WEB 客户请求与应答的一种方法。客户 向服务器的请求(主要是 HTML 表单)只要属于 CGI 定义范围,就启动 CGI 程序,其任务是 把客户的请求从网管的环境变量中取出并加以转换,提交给服务器上的 CGI 应用程序,这些 程序可以用 C/C++/PERL 等语言编写,这些程序具备访问服务器资源(比如数据库)的能力, 这些程序的运行结果,通过 CGI 转换成 HTML 格式,发送到客户端。 CGI 程序很容易实现对服务器资源的访问,但是向客户端输出则比较麻烦,程序员不能 使用“所见即所得”的网页制作工具,只能一行行手写 HTML 代码,向客户端输出,不适合生成复杂页面,这项技术现在使用的人不多。 但是,CGI 的基本原理却被后续的服务器端网页技术沿用。
✓ ASP
ASP 是微软研发的技术,出现于 1997 年前后。它解决了 CGI 的输出麻烦。 ASP 允许 HTML 和服务器端脚本混合编程。可以在 HTML 中插入括起来的代码段, 这些代码可以用 JavaScript\VBScript 等脚本语言编写,但他们是在服务器上执行的。 ASP 编程是非常方便的,你可以先用“所见即所得”的网页制作工具把页面效果做出来, 然后再在其中插入服务器端脚本输出服务器端的计算结果。它的缺点是:HTML 和脚本混合编程,使程序的可读性很差,不利于维护大型 WEB 项目,脚本程序的调试也是个问题。2003 年前后退出的 http://ASP.NET 基本解决了上述问题。 ASP 还内置了几个对象,这些对象不需要实例化即可使用,实现网页的状态维护、HTTP 模拟等功能,这些对象后来大都出现于 JSP 中。
✓ PHP
PHP 语法类似于 C,别切混合了 Perl、C++和 Java 的一些特性。它是一种开元的 Web 服 务器脚本语言,于 ASP 一样可以在页面中加入脚本代码来生成动态内容。对于一些复杂的 操作可以封装到函数或类中。在 PHP 中提供了许多已经定义好的函数,例如提供的标准的 数据库接口,是的数据库连接方面,扩展性强。PHP 可以被多个平台支持但被广泛应用于 UNIX/Linux 平台。由于 PHP 本身的代码对外开放,并且经过许多软件工程师的检测,因此到 目前为止该技术具有公认的安全性能。
✓ JSP
Java Server Page 简称 JSP。JSP 是以 Java 为基础开发的,所以它沿用 Java 强大的 API 功 能。JSP 页面中的 HTML 代码用来显示静态内容部分,嵌入到页面中的 Java 代码与 JSP 标记 用来生成动态的内容。JSP 允许程序员编写自己的标签库来完成应用程序的特定要求。JSP 可以被预编译,提高了程序的运行速度。另外,JSP 开发的应用程序经过一次编译后,便可 随时随地运行。所以在绝大部分系统平台中,代码无需做修改即可在支持 JSP 的任何服务器中运行。
✓ Servlet
Servlet 是 Java 早期的 Web 服务器端技术,用 Java 语言编写。无论是从原理和编程方式 上,几乎就是 CGI 的翻版,具有 CGI 的缺点和优点,与 CGI 主要不同的是,Servlet 对每个请求都是单独启动一个线程,而不是进程。
关于Javaweb应用程序就介绍到这里,下次小乐会带来Tomcat,详细讲解Tomcat的前前后后和安装使用。
说说Java Web中的Web应用程序|乐字节的更多相关文章
- Java注解-注解处理器、servlet3.0|乐字节
大家好,我是乐字节的小乐,上次给大家带来了Java注解-元数据.注解分类.内置注解和自定义注解|乐字节,这次接着往下讲注解处理器和servlet3.0 一.注解处理器 使用注解的过程中,很重要的一部分 ...
- eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明
context-param.listener.filter.servlet 首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...
- 自定义URL协议在Web中启动本地应用程序
转自(http://blog.csdn.net/jackychen_king/article/details/7743811) 1.注册应用程序来处理自定义协议 你必须添加一个新的key以及相关的va ...
- 对Java数组中去除重复项程序分析
我作为一个Java菜鸟,只会用简单的办法来处理这个问题.如果有大神看到,请略过,感激不尽! 所以首先先分析这道题目:数组中重复的数据进行删除,并且要让数组里的数据按原来的顺序排列,中间不能留空. 既然 ...
- Java 语言中一个字符占几个字节?
Java中理论说是一个字符(汉字 字母)占用两个字节. 但是在UTF-8的时候 new String("字").getBytes().length 返回的是3 表示3个字节 作者: ...
- Web中的积累:外观模式 Facade
摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 壹 前言 目测好久没写文章了,距离上一篇文章也有二十多天.我是怎么了?哈 ...
- java环境中基于jvm的两大语言:scala,groovy
一.java环境中基于jvm的两大语言:scala,groovy 可以在java项目里混编这两种语言: scala:静态语言,多范式语言,糅合了面向对象.面向过程:可以与java和net互操作:融汇了 ...
- 乐字节Java变量与数据结构之二:Java常量与变量
大家好,小乐又来给大家讲述Java基础知识.上次说了乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符,这次将接着往下说,谈谈Java常量与变量. 1.常量 1).定义 在程序执行的过 ...
- 乐字节Java|封装JavaBean、继承与权限修饰
本文继续讲Java封装.上一篇:乐字节Java|GC垃圾回收机制.package和import语句 这次讲述JavaBean.继承与权限修饰 一. 封装javaBean 封装(Encapsulatio ...
随机推荐
- 解读Es6之 promise
单线程: 在同一时间只能有同一任务进行.JavaScript就是一门单线程语言 当有多个任务需要进行时,则需要进行排队,前一个执行完毕才能执行下一个; ...
- CTSC 2017 游戏[概率dp 线段树]
小 R 和室友小 B 在寝室里玩游戏.他们一共玩了 $n$ 局游戏,每局游戏的结果要么是小 R 获胜,要么是小 B 获胜. 第 $1$ 局游戏小 R 获胜的概率是 $p_1$,小 B 获胜的概率是 $ ...
- A|G\C003
AGC003 A Wanna go back home = = https://agc003.contest.atcoder.jp/submissions/7910739 B Simplified m ...
- 《Java虚拟机JVM故障诊断与性能优化》读书笔记(未完待续)
前言: 对于JVM学习用处的理解:我们程序员写的代码,虽说是放在服务器(linux)系统上的.但是很多时候,受JVM的影响,其实程序并没有发挥出服务器的最大性能.这时候,JVM就成为了瓶颈了.有瓶颈就 ...
- nuxt项目服务端渲染应用部署、使用pm2守护进程及遇到的问题处理
服务端渲染应用部署应该先编译构建,然后再启动 Nuxt 服务,可通过以下两个命令来完成: nuxt build nuxt start 我们已经在pakage.json里配置好script命令 { &q ...
- v-model和 .sync
1.v-model的双向数据绑定其实是一个语法糖,类似于,给子组件传入一个value值,并且监听子组件的input事件,在这个事件里将子组件传过来的新值赋值给父组件的value <Input v ...
- 【Beta】Scrum meeting 7
目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 照片 commit截图记录 后端代码仓库 技术博客 写在前面 例会时间:5.11 22:30-22:50 例会地点:微信群语音 ...
- Java 内存排查,慢慢收集总结
Java堆外内存排查小结: https://mp.weixin.qq.com/s?__biz=MzA4MTc4NTUxNQ==&mid=2650518612&idx=2&sn= ...
- RNN 的不变性
卷积神经网络的不变性 不变性的实现主要靠两点:大量数据(各种数据):网络结构(pooling)不变性的类型 1)平移不变性 卷积神经网络最初引入局部连接和空间共享,就是为了满足平移不变性. ...
- Element + Vue I18n动态import加载国际化语言包翻译文件
需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...