Java Web应用开发中的一些概念解读

开发 后端
概念一直是学习计算机软件开发中经常遇到的问题,也是软件行业最喜欢创造的东西。很多时候,学习计算机软件开发遇到困难都是因为对某些概念的不理解,而不是因为技术本身有多么复杂。Java Web作为Java EE技术体系的一部分,应该是目前所有Web开发技术中最复杂的一种,很多初学者,或者是从ASP、PHP转移过来的开发者都会遇到概念方面的困难。

  其实很多概念都是非常简单的,只是因为厂家为了宣传需要,将概念复杂化、学术化,导致学习者觉得这些概念非常深奥,难以理解。在这里,我们首先去澄清Java Web开发中几个常用的基本概念。当然理解这些概念的前提是需要你具备一定的计算机系统、面向对象等方面基础知识。

  1、Web容器

  所有的程序运行都需要有一个必要的运行环境。这个环境可以是软件,也可以是硬件,或者是软件和硬件的结合。比如说Windows操作系统需要运行在硬件基础上;Office软件需要运行在操作系统上。并且程序与运行环境之间会有一定的数据交换,比如操作系统会将运行指令传递给硬件,硬件也会将指令运行结果传递给操作系统。Java Web程序也需要一个运行环境才能够执行。这种运行Java Web程序的环境被称为Web容器,Java Web程序与Web容器之间存在数据交互。目前主要存在两种类型的Java Web容器:一种是独立的Java Web容器,在这种容器里面只能运行Web程序,这种容器一般也叫做Web服务器,如Tomcat等;另一种是与其他Java EE容器混合在一起的Web容器,Web容器负责运行Web程序,其他容器负责运行EJB等程序,如WebLogic等。

  当用户通过浏览器等Web客户端软件向服务器发出一个请求之后,首先接收到这个请求的是Web容器,Web容器会将请求信息封装到一个HttpServletRequest类型的Java对象中,并将对象传递给Java Web程序。对于每个请求,Web容器还会创建一个HttpServletResponse类型对象,该对象的作用是用来保存需要返回到浏览器等客户端的内容。Java Web程序可以从HttpServletRequest提取用户发出的请求信息,进行适当的处理之后,将处理结果放置到HttpServletResponse中,然或由Web容器解析HttpServletResponse对象内容,并将解析结果以浏览器能够识别的HTML等格式返回给浏览器等客户端。在这个过程中,HttpServletRequest和HttpServletResponse就如同两条渡船,负责在Web容器和Java Web程序之间传递信息。需要注意的是,这两个对象仅存在于Web容器和Java Web程序当中,与浏览器没有关系。

  2、Web应用

  Web应用,可以认为是Web程序的另一个名称。缺的的定义就是运行在Web容器当中的,能够完成完整功能的应用程序。Java Web应用由一系列编译之后的Java类、静态图片、静态HTML文件、配置文件等构成。通过Java Web应用可以就收用户的输入和请求,并对请求信息进行加工处理、访问数据库、对用户的请求给出回应。开发Java Web应用程序处理需要遵守Web应用的一些特殊规范要求以外,与开发其他类型的应用程序并没有本质区别。目前Web应用主要有两种类型:一种是以展示为目的的Web应用,这种应用会以HTML等标记文本或者浏览器所能识别的媒体格式最为请求返回内容,用户可以通过浏览器等客户端操作这类应用。另一类是以服务为目的的Web应用,这类应用不提供图形操作界面,只提供方法调用结构,比如Web服务,该类应用一般只能被其他应用程序调用和访问。

  3、Web元件

  Web元件是构成Web应用,能够对来自浏览器等客户端请求做出回应的基本单元。在Java Web应用中,所提供的Web元件有Servlet、JavaServer Pages(JSP)、JavaServer Faces(JSF)等。另外还可以使用其他类型Web应用同样使用的内容,比如HTML文件、静态图片等。事实上Java Web只提供了一种Web元件元件,就是Servlet,JSP、JSF等都是基于Servlet的衍生技术。Servlet实质就是一个有特殊继承关系要求的Java类,理解Servlet就基本上完全理解Java Web技术了。

【编辑推荐】

  1. Java Web程序设计
  2. Java Web开发指南
  3. Java Web开发实战宝典
  4. 例解Java Web开发技术精髓
  5. Java Web标签应用开发 
责任编辑:韩亚珊 来源: IT168
相关推荐

2010-05-25 17:00:04

Java WebWeb容器Web应用

2011-09-13 09:41:59

Python

2009-06-18 14:54:52

Spring AOP

2022-02-28 15:05:17

ArkUIHarmonyOS鸿蒙

2012-04-16 09:54:05

移动web错误理念

2009-07-09 13:16:54

Java Swing开

2021-06-30 07:19:35

微服务业务MySQL

2022-09-09 08:51:42

ShellLinux

2011-12-14 16:43:54

javanio

2011-03-15 17:46:43

2010-08-05 13:54:36

NFS协议

2012-01-09 16:02:19

JavaJVM

2009-07-09 17:46:44

Java流程控制

2012-06-25 10:13:00

Java.NET

2021-02-06 14:25:29

Java延迟加载代码

2021-06-08 06:13:16

React开发开发技术

2010-03-16 09:15:20

2011-11-08 21:12:35

2011-06-01 16:50:21

JAVA

2015-07-28 14:39:02

IOS技巧
点赞
收藏

51CTO技术栈公众号