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

2.2 搭建Java Web开发环境

Java不但可以开发桌面程序,在Web应用领域也是诸侯一霸,这就是大名鼎鼎的JSP网页程序。在前面JDK、Eclipse已经准备好的基础上,我们只需要再安装一个Web服务器软件就可以成功搭建出JSP开发环境了。这里选择Tomcat 9作为Web服务器软件。Web服务器软件主要用来解析网页、执行Web服务端的Java代码,然后返回结果给浏览器。

2.2.1 下载Tomcat

我们可以到官网去下载Tomcat。打开下载页面,单击Tomcat 9链接,如图2-25所示,然后根据操作系统选择合适的版本,这里选择“32-bit/64-bit Windows Service Installer (pgp, sha512)”,下载的安装文件是apache-tomcat-9.0.34.exe。

图2-25

2.2.2 安装Tomcat

直接双击apache-tomcat-9.0.34.exe,会出现欢迎界面,如图2-26所示。单击Next按钮,出现License Agreement确认协议对话框,此时单击I Agree按钮,会出现Choose Components对话框,保持默认设置单击Next按钮,就会出现Configuration对话框,设置User name为“admin”、Password为“123456”,其他保持默认值,如图2-27所示。

图2-26

图2-27

单击Next按钮,出现Java Virtual Machine对话框,保持默认设置,如图2-28所示。

这个JRE路径是我们前面安装JRE所设置的路径,如果前面安装JRE的路径是其他路径,那么这里要保持一致。单击Next按钮,会出现Choose Install Location对话框,保持默认设置,如图2-29所示。

图2-28

图2-29

单击Install按钮开始安装。稍等片刻,安装完成,如图2-30所示。

单击Finish按钮,即可完成安装,Tomcat自动启动。稍等片刻,可以在任务栏右下角看到Tomcat正在运行的图标,如图2-31所示。至此,Tomcat安装完毕。打开浏览器(比如火狐浏览器),在地址栏中输入“http://localhost:8080”或“http://127.0.0.1:8080”,如果出现Tomcat示例主页,则表示服务器安装成功,如图2-32所示。

图2-30

图2-31

图2-32

2.2.3 在Eclipse中配置Tomcat

Tomcat安装完毕后,我们还需要Eclipse认识,所以需要在Eclipse中进行Tomcat相关配置。打开Eclipse,然后单击主菜单Window→Preferences,打开Preferences对话框,然后在该对话框左边展开Server,然后选择Runtime Environment,如图2-33所示。

图2-33

在右边单击Add按钮,出现New Server Runtime Environment对话框,选择Tomcat 9,如图2-34所示。

单击Next按钮,在随后出现的对话框上选择Tomcat安装路径(C:\Program Files\Apache Software Foundation\Tomcat 9.0),如图2-35所示。

其他保持默认设置,单击Finish按钮。至此,Eclipse中的Tomcat配置完毕,以后在新建Web工程时Eclipse会自动选择出配置的Tomcat。

图2-34

图2-35

2.2.4 第一个Eclipse下的JSP工程

前面我们部署了Tomcat软件,现在我们来看一下网页JSP的测试程序。下面我们通过一个Eclipse下的JSP工程测试一下它们工作是否正常。

【例2.3】 第一个Eclipse JSP工程,在浏览器中查看结果

(1)打开Eclipse,准备新建一个Web工程,即在主菜单上选择File→new→Dynamic Web Project,在New Dynamic Web Project对话框中输入工程名“myprj”,其他保持默认设置,如图2-36所示。

图2-36

如果Target runtime下是None,则可以单击New Runtime按钮添加Tomcat 9.0。接着,直接单击Finish按钮。这时主界面左边的Project Explorer视图下就会出现myprj工程。同时,在工作区文件夹内会出现一个myprj文件夹,这个myprj文件夹就是工程文件夹,里面会自动建立好一些文件夹和文件,比如build文件夹用来放入编译之后的文件、WebContent存放jsp文件。

(2)为myprj工程添加一个JSP文件。右击Project Explorer视图下的项目名myprj,在右键菜单上选择New→JSP File,此时出现New JSP File对话框,如图2-37所示。

图2-37

WebContent文件夹通常存放JSP网页文件(.jsp),src目录通常存放Java源文件(*.java),build文件夹通常存放生成的字节码文件(.class)。

我们要把文件NewFile.jsp放到WebContent目录下,因此要在树形控件中选中WebContent,然后输入新建JSP文件的文件名,这里保持默认文件名“NewFile.jsp”,然后单击Finish按钮。一个JSP文件就建好了,并且默认写好了一些代码,但是并不是我们所需要的,把代码全部删除,然后输入短小精悍的代码:

其中,第1行是JSP指令标签,后面章节会详细阐述;第2~7行是HTML标记,<br>表示回车换行;第8行为Java代码,而且是包含在指令标签<%%>里的,这行Java代码很简单,就是输出一段文本。在JSP中,Java代码要写在<%和%>之间,这样可以和HTML语言区分开来。大家在输入的时候,会发现输入“<%”的时候,Eclipse会自动补齐%>,在输入out.的时候,会自动显示out的很多方法,我们直接选择println即可,非常方便,这就是Eclipse提供给我们的IntelliSense(智能感知)功能,大大提高了编程效率。最后,保存文件。

(3)配置Tomcat虚拟目录。Tomcat的默认根目录为C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT\,初学者喜欢把Web项目都放到webapps目录下,这不大符合规范也不专业(所有Web工程都放在默认的根目录下会很乱),最好还是把Tomcat的默认根目录和每个Web项目文件分开,专业的方式是设置虚拟目录。首先找到当前项目所在的路径,在Eclipse中展开myprj工程,右击WebContent,在右击菜单上选择Properties,在属性对话框上把Location右边的路径复制下来,如图2-38所示。

图2-38

接着,我们进入Tomcat安装路径下的conf子目录(C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf),用记事本或其他文本编辑工具打开文件server.xml,定位到末尾Host标签处,然后在Host标签中添加Context标签:

粗体部分(<Context标记那一行)是我们添加的。在操作server.xml文件时要非常小心。首先要注意<Context path那一行末尾“>”前面的“\”不要少了。这个“\”表示<Context结束,如果少了“\”,Tomcat服务就无法启动了。此时可以到C:\Program Files\Apache Software Foundation\Tomcat 9.0\logs下看日志文件,比如catalina.2020-05-11.log,有一次少写了“\”,该文件末尾就提示:

    file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%209.0/conf/
server.xml; lineNumber: 168; columnNumber: 9; 元素类型 "Context" 必须由匹配的结束标
记 "</Context>" 终止。

第二个要注意的是,“docBase=”语句中开始的双引号右边不要有空格,结尾的双引号左边也不要有空格。

server.xml中粗体部分是我们添加的,path的内容是浏览器访问的目录,现在为空,我们可以通过http://localhost:8080加网页文件直接访问Web下的JSP文件。docBase的内容表示虚拟目录对应的实际磁盘目录路径,也就是JSP文件所在的目录,而NewFile.jsp正是在D:\eclipse-workspace\myps\myprj\WebContent下。保存server.xml,然后重启Tomcat服务,可以右击右下角的Tomcat小图标,在菜单项上选择Stop Service,稍等片刻,以同样的方式选择Start Service,就重启了Tomcat服务,我们所设置的虚拟目录也就能被Tomcat知道了。现在访问NewFile.jsp,打开浏览器,输入URL(http://localhost:8080/NewFile.jsp),会出现如图2-39所示页面。

如果我们想为虚拟目录添加一个名字,可以再为path赋值,比如path="/myprj",这样在浏览器中访问的时候输入URL就要增加myprj,即http://localhost:8080/myprj/NewFile.jsp。

当前不一定要使用hello,也可以用其他名字(这样可以起到迷惑用户的作用,一般不要把真实的工程名作为名字,当然学习时无所谓),比如path="/test",这样在浏览器中访问的时候就会输入URL:http://localhost:8080/test/NewFile.jsp。

另外,path留空("")与"/"效果是一样的。值得注意的是,如果path为空或为“/”,则会覆盖/webapps/ROOT下的项目,导致ROOT下的内容无法访问。

我们的第一个JSP程序执行成功了。

图2-39

为了让Tomcat中/webapps/ROOT下的内容可以访问,最好不要把path留空,可以把虚拟目录改为/hello,即把刚才在conf/server.xml文件中添加的Context标签改为:

    <Context path="/myprj" docBase="D:\eclipse-workspace\myps\myprj\hello\
WebContent"/>

重启Tomcat服务,打开浏览器,输入URL(http://localhost:8080/myprj/NewFile.jsp),应该会出现同样的效果,如图2-40所示。

现在输入http://localhost:8080/,会访问到/webapps/ROOT下的index.jsp文件,如图2-41所示。

图2-40

图2-41

这就是采用虚拟目录的好处,不影响默认系统主页。为了方便大家,笔者把server.xml放在本例工程源码目录下,当然如果要采用该文件的配置,就要记得把myprj文件夹放到D:\eclipse-workspace\下,因为我们在server.xml中写死了这个路径。

2.2.5 第一个JavaBean工程

JavaBean是一种可重用的Java组件,可以被Applet、Servlet、SP等Java应用程序调用,也可以可视化地被Java开发工具使用,包含属性(Properties)、方法(Methods)、事件(Events)等特性。

JavaBean是一种软件组件模型,就跟ActiveX控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的Java类。任何可以用Java代码创造的对象都可以利用JavaBean进行封装。通过合理的组织具有不同功能的JavaBean,可以快速生成一个全新的应用程序,如果将这个应用程序比作一辆汽车,那么这些JavaBean就好比组成这辆汽车的不同零件。对软件开发人员来说,JavaBean带来的最大优点就是充分提高了代码的可重用性,并且对软件的可维护性和易维护性起到了积极作用。

JavaBean的种类按照功能可以划分为可视化和不可视化两类。可视化的JavaBean就是拥有GUI图形用户界面,对最终用户是可见的。不可视化的JavaBean不要求继承,更多地被使用在JSP中,通常情况下用来封装业务逻辑、数据分页逻辑、数据库操作和事物逻辑等,这样可以实现业务逻辑和前台程序的分离,提高了代码的可读性和易维护性,使系统更健壮和灵活。随着JSP的发展,JavaBean更多地应用在非可视化领域,并且在服务器端应用方面表现出了越来越强的生命力。

从功能上讲,JavaBean可以看成是一个黑盒子,即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口,如按钮、窗口、颜色、形状、句柄等。通过将系统看成使用黑盒子关联起来的通信网络,我们可以忽略黑盒子内部的系统细节,从而有效地控制系统的整体性能。

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、Applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地复制和粘贴功能,而不用关心任何改变。

一个JavaBean由3部分组成:

(1)属性(properties)

JavaBean提供了高层次的属性概念,属性在JavaBean中不只是传统的面向对象的概念里的属性,同时还得到了属性读取和属性写入的API的支持。属性值可以通过调用适当的Bean方法进行。比如,可能Bean有一个名字属性,这个属性的值可能需要调用String getName()方法读取,而写入属性值可能需要调用void setName(String str)的方法。

每个JavaBean属性通常都应该遵循简单的方法命名规则,这样应用程序构造器工具和最终用户才能找到JavaBean提供的属性,然后查询或修改属性值,对Bean进行操作。JavaBean还可以对属性值的改变做出及时的反应。比如一个显示当前时间的JavaBean,如果改变时钟的时区属性,则时钟会立即重画,显示当前指定时区的时间。

(2)方法(method)

JavaBean中的方法就是通常所说的Java方法,可以从其他组件或在脚本环境中调用。默认情况下,所有Bean的公有方法都可以被外部调用,但Bean一般只会引出其公有方法的一个子集。JavaBean本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。JavaBean严格遵守面向对象的类设计逻辑,不让外部世界访问其任何字段(没有public字段)。这样,方法调用是接触Bean的唯一途径。

和普通类不同的是,对有些Bean来说,采用调用实例方法的低级机制并不是操作和使用Bean的主要途径。公开Bean方法在Bean操作中降为辅助地位,因为两个高级Bean特性(属性和事件)是与Bean交互作用的更好方式。因此,Bean可以提供要让客户使用的public方法,但是应当认识到,Bean设计人员希望看到绝大部分Bean的功能反映在属性和事件中,而不是在人工调用和各个方法中。

(3)事件(event)

Bean与其他软件组件交流信息的主要方式是发送和接受事件。我们可以将bean的事件支持功能看作是集成电路中的输入输出引脚:工程师将引脚连接在一起组成系统,让组件进行通信。有些引脚用于输入,有些引脚用于输出,相当于事件模型中的发送事件和接收事件。

事件为JavaBean组件提供了一种发送通知给其他组件的方法。在AWT事件模型中,一个事件源可以注册事件监听器对象。当事件源检测到发生了某种事件时,它将调用事件监听器对象中的一个适当的事件处理方法来处理这个事件。由此可见,JavaBean确实也是普通的Java对象,只不过它遵循了一些特别的约定而已。

JavaBean有如下6个特征:

第一,JavaBean为共有类,此类要使用访问权限对public进行修饰,主要是为了方便JSP的访问。

第二,JavaBean定义构造的方式时,一定要使用public修饰,同时不能要参数;不定义构造方式时,Java编译器可以构造无参数方式。

第三,JavaBean属性通常可以使用访问权限对private进行修饰,此种主要表示私有属性,但是也只能在JavaBean内使用,在声明中使用public修饰的则被认为是公有权限,主要是方便同时与JSP进行交互。

第四,使用setXXX()的方法以及getXXX()的方法得到JavaBean里的私有属性XXXDE的数值。

第五,JavaBean一定要放在包内,使用package进行自定义,也可以放在JavaBean代码的第一行。

第六,对部署好的JavaBean进行修改时,一定要重新编译节码文件,同时启动Tomcat服务器,之后便能够生效。

【例2.4】 第一个Javabean工程

(1)打开Eclipse,新建一个Dynamic Web Project,工程名是myprj。

(2)在Eclipse的Project Explorer中,直接右击工程myprj,或者展开Java Resources,右击src,在右键菜单选择New→Class,即准备新建一个class,设置Package的名称为com.ljy、类的名称为Box,如图2-42所示。

图2-42

在图2-42中单击Finish按钮,IDE将打开Box.java文件。我们在其中输入如下代码:

代码很简单,就是计算一个盒子的体积。长、宽、高分别可以设置或获取,体积也可以获取。输入后保存文件,将自动生成Box.class文件(在D:\eclipse-workspace\myws\myprj\build\classes\com\ljy\下)。

(3)右击Project Explorer视图下的项目名myprj,在右键菜单上选择New→JSP File,会出现New JSP File对话框,设置File Name为“index.jsp”,如图2-43所示。

图2-43

单击Finish按钮,然后在index.jsp文件中添加如下内容:

保存文件,接着进入Tomcat安装路径下的conf子目录(C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf),用记事本或其他文本编辑工具打开文件server.xml,定位到末尾Host标签处,然后在Host标签中添加Context标签:

    <Context path="/myprj" docBase="D:\eclipse-workspace\myws\myprj\WebContent"
reloadable="true"/>

保存文件server.xml。如果reloadable属性为true,那么Tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新,那么服务器会自动重新加载Web应用。在开发阶段将reloadable属性设为true,有助于调试servlet和其他class文件,但这样会加重服务器运行负荷,建议在Web应用的发布阶段将reloadable设为false。

下面把Box.class放到合适的位置,让index.jsp可以找到它。我们在D:\eclipse-workspace\myws\myprj\WebContent\WEB-INF\下新建一个文件夹classes,再根据Box的包名在classes下新建文件夹com,再在com文件夹下建立文件夹ljy,然后把D:\eclipse-workspace\myws\myprj\build\classes\com\ljy\下的Box.class复制到D:\eclipse-workspace\myws\myprj\WebContent\WEB-INF\classes\com\ljy\下。记得以后每次修改Box.java都要执行这个复制操作。其中,WEB-INF目录是Web目录中最安全的文件夹,保存各种类、第三方jar包、配置文件。

最后,在桌面任务栏右下角重启Tomcat服务。

(4)打开火狐或IE浏览器,输入URL(http://localhost:8080/myprj/index.jsp),运行结果如图2-44所示。

顺便扩展一下,如果不想使用<%@ page import="com.ljy.Box" %>,也可以使用useBean指令,比如:

    <jsp:useBean id="box" scope="page"
class="com.ljy.Box"/>

图2-44

其中,box是定义的对象名称,这样在后续代码中就可以直接使用box对象了,而不必用Box box定义了。

至此,第一个JavaBean运行成功!有了JavaBean,我们就可以把一些加解密运算放在JavaBean中,然后提供给前台JSP Web开发人员调用。所以,一个密码开发者还是需要掌握JavaBean的。 AviDTRUqo59Iha3ccbjDxi0Sjd7Yj/L9rogcPKjzHyqgVEaicI5OIhSLZmPaArlc

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