购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
Java Web应用开发概述

在信息化时代的今天,Web已经成为人们日常生活中的重要部分。设想一下,假如我们离开了互联网,生活会变得怎样?伴随着Web技术的发展,Web应用也蓬勃兴起。接下来进入Web应用的新世界吧。

1.1 程序开发体系结构

在网络技术遍布全球每个角落的今天,各种Web应用已经深入每个人的日常。伴随着技术发展,程序开发的结构体系也在不断完善、不断优化,由最初的单机软件发展成为各种分布式、云端等体系结构。其中较为常用的Web应用程序开发体系结构主要有两类:基于C/S(客户端/服务器)的体系结构和基于B/S(浏览器/服务器)的体系结构。

1.1.1 C/S体系结构介绍

C/S体系结构即Client(客户端)/Server(服务器)。Server端通常是高性能的工作站或者个人计算机,采用大型数据库(Oracle、DB2、SQL Server),Client端需要安装特定的客户端软件。此结构体系的主要特点是具有很强的交互性,充分利用客户端和服务器的环境优势,具有安全的存取模式,响应速度快,合理分配任务,降低网络通信开销,由于它有独立的客户端,因此操作界面设计更漂亮、更灵活。C/S体系结构如图1.1所示。

图1.1 C/S体系结构

1.1.2 B/S体系结构介绍

B/S体系结构即Browser(浏览器)/Server(服务器)。在B/S体系结构中,客户端不需要额外开发专有的客户端软件,只需要通过浏览器(如IE、Chrome、Firefox等)向Web服务器发送请求,由Server端进行处理,并将处理结果传回给Browser。这种模式统一了客户端,简化了系统的开发、维护和使用,极大地节约了成本。B/S体系结构如图1.2所示。

图1.2 B/S体系结构

说明: C/S结构是美国Borland公司最早研发的,B/S结构则是美国Microsoft(微软)公司研发的。

1.1.3 两种体系结构的比较

当前网络程序开发比较流行的两大主流架构:C/S结构和B/S结构。目前这两种结构都有各自的用武之地,都牢牢占据着自己的市场份额和客户群,在响应速度、用户界面、数据安全等方面,C/S强于B/S,但是在共享、业务扩展和适用万维网的条件下,B/S明显胜过C/S。通过以下5个方面来分析对比它们的异同。

1.程序架构

C/S是两层架构,由客户端和服务器组成,更加注重流程,极少考虑运行速度,软件复用性差(复用性也称为重用性);B/S是三层架构,由浏览器、Web服务器和数据库服务器组成,B/S结构对安全性和访问速度有多重考虑,是Web程序架构发展的趋势。

2.软件成本

C/S结构的开发和维护成本都比B/S结构高。不论是开发还是维护,C/S结构都需要大量专业人员适配、安装、调试客户端,系统升级也需要重新开发适配,并重新提供安装文件升级客户端。B/S结构则只需要适配浏览器,开发升级也只需要在服务器上升级即可。

3.负载和性能

C/S结构的客户端既要负责交互,收集用户信息,又要完成通过网络向服务器请求对数据库、电子表格或文档等信息的处理工作。所有复杂的逻辑处理都放在了客户端,对客户端负载很高。

B/S结构的客户端把事务处理逻辑部分交给了服务器,由服务器进行处理,客户端只需要进行显示。这样,重负荷的处理交给了服务器,客户端只需要轻便级就能使用。

4.安全性

C/S结构由于客户端处理了核心逻辑,可通过严格的管理软件达到保证系统安全的目的,这样的软件相对来说安全性比较高。而B/S结构的软件,由于其共享广泛,使用的人数较多,相对来说安全性就会低一些(需要做好网络传输安全和信息加密安全)。

5.共享和扩展

C/S架构是建立在局域网之上的,面向的是可知的有限用户,隐私性和安全性较好,因此导致其共享能力较弱。由于安装升级需要提供安装软件,客户端如果不更新升级,很多新功能就无法使用,扩展性也较弱。B/S架构建立在广域网之上,用户随时随地都可以访问,外部用户也可以访问,尤其是Web技术的不断发展,B/S面对的是几乎无限的用户群体,所以信息共享性很强,而且B/S结构只要在服务器上升级扩展即可,不影响用户体验,扩展性高。

1.2 Web应用程序的工作原理

用户通过客户端浏览器访问网站或者其他网络资源时,通常需要在客户端浏览器的地址栏中输入URL(Uniform Resource Locator,统一资源定位符),或者通过超链接方式链接到相关网页或网络资源;然后通过域名服务器进行全球域名解析(DNS域名解析),并根据解析结果访问指定IP地址的网站或网页。

为了准确地传输数据,TCP采用了三次握手策略。首先发送一个带SYN(Synchronize)标志的数据包给接收方,接收方收到后,回传一个带有SYN/ACK(Acknowledgement)标志的数据包以示传达确认信息。最后发送方再回传一个带ACK标志的数据包,代表握手结束。在这个过程中,若出现问题导致传输中断了,TCP会再次发送相同的数据包。

在完成TCP后,客户端的浏览器正式向指定IP地址上的Web服务器发送HTTP(HyperText Transfer Protocol,超文本传输协议)请求;通常Web服务器会很快响应客户端的请求,将用户所需的HTML文本、图片和构成该网页的其他一切文件发送给用户。如果需要访问数据库系统中的数据,Web服务器就会将控制权转给应用服务器,根据Web服务器的数据请求读写数据库,并进行相关数据库的访问操作,应用服务器将数据查询响应发送给Web服务器,由Web服务器将查询结果转发给客户端的浏览器;浏览器解析客户端请求的页面内容;最终浏览器根据解析的内容进行渲染,将结果按照预定的页面样式呈现在浏览器上。概括起来,Web应用的工作原理如图1.3所示。

图1.3 Web应用的工作原理

说明: Web本意是蜘蛛网和网。现广泛译作网络、互联网等技术,表现为三种形式:超文本(HyperText)、超媒体(Hypermedia)、超文本传输协议(HTTP)。

1.3 Web应用技术

经过前面两节的介绍,读者应该对Web开发有了一定的了解,也应该认识到了Web应用中的每一次信息交换都会涉及客户端和服务端。因此,Web应用技术大体上可以分为客户端技术和服务端技术两大类。

下面我们对这两大类Web应用技术进行简要介绍,方便读者对Web应用有一个初步认识。

1.3.1 客户端应用技术

Web客户端主要通过发送HTTP请求并接收服务器响应,最终展现信息内容。也就是说,只要能满足这一目的的程序、工具、脚本,都可以看作是Web客户端。Web客户端技术主要包括HTML语言、Java Applets、脚本程序、CSS、DHTML、插件技术以及VRML技术。

1.HTML语言

HTML语言(Hyper Text Markup Language,超文本标记语言)是Web客户端最主要、最常用的工具。

2.Java Applets

Applet是采用Java编程语言编写的小应用程序。Applets类似于Application,但是它不能单独运行,需要依附在支持Java的浏览器中运行。

3.脚本程序

脚本程序是嵌入HTML文档中的程序,使用脚本程序可以创建动态页面,大大提高交互性。比较常用的脚本程序有JavaScript和VBScript。

JavaScript由Netscape公司开发,易用,灵活,无须编译。

VBScript由Microsoft公司开发,与JavaScript一样,可用于动态Web页面。

4.CSS

CSS(Cascading Style Sheets,层叠样式表)是一种用来表现HTML或XML等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页对象和模型样式进行编辑。

5.DHTML

DHTML(Dynamic HTML,动态HTML)是HTML、CSS和客户端脚本的一种集成。

6.VRML

VRML(Virtual Reality Modeling Language,虚拟现实建模语言)用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,具有平台无关性。

1.3.2 服务端应用技术

服务端首先包括服务器硬件环境,Web服务端的开发技术与客户端技术的演进过程类似,也是由静态向动态逐步发展、逐步完善起来的。Web服务器技术主要包括CGI、PHP、ASP、ASP.NET、Servlet/JSP等。

1.CGI

CGI(Common Gateway Interface,公共网关接口)技术允许服务端的应用程序根据客户端的请求动态生成HTML页面,这使客户端和服务端的动态信息交换成为可能。

2.PHP

PHP原本是Personal Home Page(个人主页)的简称,后更名为PHP:Hypertext Preprocessor(超文本预处理器)。与以往的CGI程序不同,PHP语言将HTML代码和PHP指令合成为完整的服务端动态页面,Web应用的开发者可以用一种更加简便、快捷的方式实现动态Web功能。

3.ASP

Microsoft借鉴PHP的思想,在IIS 3.0中引入了ASP(Active Server Pages,活动服务器页面)技术。ASP使用的脚本语言是VBScript和JavaScript,从而迅速成为Windows系统下Web服务端的主流开发技术。

4.ASP.NET

ASP.NET是使用C#语言代替ASP技术的JavaScript脚本语言,用编译代替了逐句解释,提高了程序的运行效率。

5.Servlet/JSP

Servlet和JSP(Java Server Page)的组合让Java开发者同时拥有了类似CGI程序的集中处理功能和类似PHP的HTML嵌入功能,Java的运行时编译技术也大大提高了Servlet和JSP的执行效率。Servlet和JSP被后来的Java EE平台吸纳为核心技术。

1.4 Java Web应用的开发环境

Java Web是用Java技术来解决Web领域问题的技术,需要运行在特定的Web服务器上,Java Web是跨平台的,可以在不同的平台上部署运行。

俗话说,工欲善其事,必先利其器。对于Java Web,4件利器是我们必须掌握的:JDK、Tomcat、IDEA和数据库。

JDK是Java开发环境,Tomcat是Web程序部署的服务器,IDEA是开发Java Web的集成工具,可以极大地改善和提高开发效率,数据库负责数据持久化。下面分别讲解其安装过程。

说明: 笔者使用的是Windows系统,因此介绍安装过程时以Windows系统为主,macOS和Linux系统的安装过程与之类似。

1.4.1 下载JDK

这里选择的是Oracle JDK,页面如图1.4所示。

笔者选择了Archive版本,这个版本只需要解压缩并配置环境变量即可,如果是Windows用户,建议选择Installer版本,安装的时候可以选择配置环境变量。读者可以选择适合自己计算机系统的版本。

图1.4 JDK下载

1.4.2 安装JDK并配置环境变量

双击刚刚下载的jdk-18.0.2.1_windows-x64_bin.msi,按照提示一步一步安装,注意在安装的过程中记下安装的目录,这里安装在C:\java\jdk-18.0.2.1目录下。

JDK安装完成之后,需要配置环境变量。这里安装好环境变量会自动配置完成,不需要像旧版本一样自主配置环境变量,此处只需要设置JAVA_HOME参数即可。

首先打开“设置”→“系统”→“高级系统设置”→“高级”→“环境变量”,在系统变量中新建变量名为JAVA_HOME,变量值为刚刚安装的目录,即C:\java\jdk-18.0.2.1,单击“确定”按钮。

1.4.3 验证JDK

重新打开命令行,输入java -version,若显示如图1.5所示的版本信息,则说明JDK安装配置成功。

图1.5 JDK环境验证

另外,也可以在命令行分别输入javac和java命令,如果在命令行看到与图1.5类似的信息,同样意味着JDK安装配置成功。

注意: JDK配置完成之后,部分读者的系统可能会出现“此命令不是内部命令”的提示信息,此时只需要重启命令行即可。

1.5 Tomcat的安装与配置

前面介绍了Web相关的技术,我们了解了Web服务器。Web服务器是一种软件服务器,其主要功能是提供网上信息浏览服务,可以向发出请求的浏览器提供文档,也可以放置网站文件和数据文件,提供浏览下载等服务。

常见的Web服务器如下:

· Tomcat(Apache):免费。当前应用最广的Java Web服务器。

· JBoss(Redhat红帽):支持Java EE,应用比较广的EJB容器。

· GlassFish(Oracle):Oracle开发的Java Web服务器,应用不是很广。

· Resin(Caucho):支持Java EE,应用越来越广。

· WebLogic(Oracle):收费。支持Java EE,适合大型项目。

· WebSphere(IBM):收费。支持Java EE,适合大型项目。

Tomcat服务器是一个免费、开源的Web应用服务器,常用在中小型系统和并发访问用户不是很多的场合下,是开发和调试Web程序的首选。

1.5.1 下载Tomcat

首先进入官网,页面如图1.6所示。

图1.6 下载Tomcat

笔者这里下载的是apache-tomcat-10.0.21,下载的是ZIP包。注意:Windows用户下载相应系统版本的ZIP包即可,以方便与IDEA集成。如图1.7所示。

图1.7 Tomcat版本

下载之后,将ZIP包移到自己设定的目录下(目录路径最好不要有空格和中文,Windows用户尽量不要放在C盘)。

此处可以暂时不需要配置环境变量,我们在开发中会将Tomcat集成到IDEA开发工具中使用,不配置环境变量不影响开发。

1.5.2 Tomcat的目录结构

进入Tomcat解压后的目录,目录结构如图1.8所示。

图1.8 Tomcat目录结构

Tomcat各目录及文件功能说明如表1.1所示。

表1.1 Tomcat各目录及文件功能说明

1.5.3 修改Tomcat的默认端口

上一节的Tomcat目录结构让我们了解到,端口等相关的配置都在conf\server.xml中,下面来看一下这个文件,如图1.9所示。

图1.9 Tomcat默认端口信息

可以看到,这个配置文件中包括3个开启配置的端口和一个注释的端口,其功能如下:

· 8005:关闭Tomcat进程所用的端口。当执行shutdown.sh关闭Tomcat时,连接8005端口执行SHUTDOWN命令,如果8005未开启,则shutdown.sh无法关闭Tomcat。

· 8009:默认未开启。HTTPD等反向代理Tomcat时,可用AJP反向代理到该端口,虽然我们经常使用HTTP反向代理到8080端口,但由于AJP建立TCP连接后一般长时间保持,从而减少了HTTP反复进行TCP连接和断开的开销,因此反向代理中AJP比HTTP高效。

· 8080:默认的HTTP监听端口。

· 8443:默认的HTTPS监听端口。默认未开启,如果要开启,由于Tomcat不自带证书,因此除了取消注释之外,还要自己生成证书并在<Connector>中指定才可以。

我们通常说的修改端口一般是指修改HTTP对应的8080端口,将图1.9中port的值修改成我们的目标值,如80,然后重启Tomcat(端口修改一定要重启Tomcat才能生效)。

1.5.4 Tomcat控制台管理

进入Tomcat\conf目录,打开tomcat-users.xml。添加一行代码:

     <user username="admin" password="admin" roles="manager-gui"/>

保存文件,重启Tomcat,在浏览器输入:http://localhost:8080/manager/html,页面提示输入用户密码,输入上面代码中的用户密码,即可得到如图1.10所示的页面。

图1.10 Tomcat控制台

1.5.5 部署Web应用

Tomcat部署Web应用程序有4种方式。

1.自动部署

若Web应用结构为..\AppName\WEB-INF\*,只要将一个Web应用的WebContent级的AppName直接放在%Tomcat_Home%\webapps文件夹下,系统就会把该Web应用直接部署到Tomcat中。

2.控制台部署

若Web应用结构为..\AppName\WEB-INF\*,进入Tomcat的Manager控制台的deploy区域(详见1.5.4节),在Context path中输入"XXX"(可任意取名,一般是AppName),在WAR or Directory URL中了输入AppName在本机的绝对路径(表示去寻找此路径下的Web应用),单击deploy按钮即可。

3.增加自定义Web部署文件

若Web应用结构为..\AppName\WEB-INF\*,则需要在%Tomcat_Home%\conf路径下新建一个文件夹Catalina,再在其中新建localhost文件夹,最后新建一个XML文件,即增加两层目录并新增XML文件:%Tomcat_Home%\conf\Catalina\localhost\xxx.xml,该文件就是部署Web应用的配置文件。该文件的内容如下:

    <Context path="/Hello" reloadable="true" docBase="D:\IdeaProjects\HelloWorld"
workDir="D:\IdeaProjects\work"/>

说明如下:

· path:表示访问的路径,如上述例子中,访问该应用程序为http://localhost:8080/Hello(path可以随意修改)。

· reloadable:表示可以在运行时在classes与lib文件夹下自动加载类包。

· docbase:表示应用程序的地址,注意斜杠的方向“\”或“/”。

· workdir:表示缓存文件的放置地址。

4.手动修改%Tomcat_Home%\conf\server.xml文件来部署Web应用

打开%Tomcat_Home%/conf/server.xml文件并在其中增加以下元素:

    <Context docBase="D:\IdeaProjects\HelloWorld" path="/Hello" debug="0"
reloadable="false" />

然后启动Tomcat即可。

1.6 IDEA的下载与使用

IntelliJ IDEA简称IDEA,由JetBrains公司开发,是Java编程语言开发的集成环境,由于其速度快,高度优化,深受广大Java开发者的喜爱。

1.6.1 IDEA的下载与安装

官网地址为https://www.jetbrains.com/idea/,进入IDEA官方下载页面,单击“下载”按钮,如图1.11所示。

图1.11 IDEA官网

IntelliJ IDEA提供了免费的社区版和付费的旗舰版。免费版只支持Java等为数不多的语言和基本的IDE特性,而旗舰版还支持HTML、CSS、PHP、MySQL、Python等语言和更多的工具特性。这里我们选择旗舰版,如图1.12所示。

图1.12 IDEA下载页面

这里,作者选了Windows版本的,读者可以根据自己的操作系统选择相应的版本。下载完成之后,我们会得到一个安装文件,双击安装即可。

1.6.2 启动IDEA

安装完成之后,双击桌面图标,启动IDEA,会提示30天试用或者注册安装,我们直接按安装向导的要求选择30天试用,进入IDEA界面,如图1.13所示。

图1.13 IDEA启动页面

说明: IDEA 30天试用期到期后,我们可以重置,继续30天试用期。

1.6.3 IDEA工作台

IDEA工作台比较简洁,主要是项目菜单区域和代码编辑区域,最上面是软件功能菜单和工具栏,底部是控制台,最右侧会有Maven、Database等辅助区域。具体功能如图1.14所示。

图1.14 IDEA工作台

1.6.4 使用IDEA开发Web应用——HelloWorld

打开IDEA,选择File→New Project,输入项目名称HelloWorld,如图1.15所示。

图1.15 创建工程

这里创建的是普通的Java项目,我们要创建Web项目,右击项目名称,选择Add Frameworks Support,勾选Web Application,即可创建成功,如图1.16所示。

图1.16 添加Web Application

接下来,我们在WEB-INF下创建classes和lib文件夹,如图1.17所示。

图1.17 创建文件夹

选中项目名,右击,选择Open Module Settings,如图1.18所示。

图1.18 打开模块设置菜单

选择Modules → HelloWorld → Paths,将下面的Output path改成刚刚创建的classes文件夹,如图1.19所示。

图1.19 配置classes目录

切换至Dependencies(依赖)选项卡,单击“+”,选择JARs or Directories,如图1.20所示。

图1.20 选择配置JARs项

选择刚刚创建的lib文件夹,如图1.21所示。

图1.21 配置lib目录

可以看到,依赖项中多了刚刚选择的lib目录,如图1.22所示,把图示的JAR包文件加进来,再单击OK按钮关闭配置窗口。

图1.22 lib目录配置结果

接下来配置Web服务器。从主菜单开始,依次选择Run→Edit Configuration→Run/Debug Configurations→+→Tomcat Server→Local选项,打开Run/Debug Configurations窗口配置Web服务器,如图1.23所示。

图1.23 配置Tomcat

单击“+”,加入Tomcat 10.0.12,如图1.24所示,在窗口右侧单击Configure…按钮,打开如图1.25所示的窗口,在Tomcat Home中输入Tomcat解压缩的路径,再单击OK按钮关闭配置窗口。

图1.24 配置Tomcat

图1.25 配置Tomcat根目录

切换到Deployment选项卡,单击“+”,在弹出的菜单中选择Artifact…,会自动加入本应用的上下文(如图1.27中的“/HelloWorld_war_exploded/”),再单击OK按钮,如图1.26所示。

图1.26 部署Web项目

注意,在图1.26的Server选项卡中的应用URL,会随着应用上下文的加入而发生变化,如图1.27所示。同时,这个URL可以用来手工设置应用的入口。

图1.27 访问应用的URL

接下来,单击IDEA右上角的三角形图标,启动Tomcat,三角形图标右边的爬虫图标是以Debug模式启动Tomcat,如图1.28所示。

图1.28 启动Tomcat

启动Tomcat后,会自动打开默认浏览器,执行结果如图1.29所示。

图1.29 执行结果

至此,我们完成了IDEA开发部署第一个Web应用程序,同时也了解了IDEA部署、发布应用程序的流程和步骤。

1.7 实践与练习

1.学习并了解B/S结构和C/S结构,能基本说出这两个结构体系适用的场景。

2.能独立安装并配置JDK环境。

3.能独立安装并配置Tomcat环境。

4.能独立安装并配置IDEA环境。

5.熟悉IDEA软件,了解软件集成Tomcat操作。

6.独立实现一遍HelloWorld项目。 OG8VlaD2Ef+UynzdnSB0Pa1McvvivThX2WGst/fI+z7iQKfMY2F9cUt/RYKB7j7R

点击中间区域
呼出菜单
上一章
目录
下一章
×