JSP、Servlet、Listener 和 Filter 等都必须运行在 Web 应用中,所以先来学习如何构建一个 Web 应用。
构建 Web 应用
在前文中已经介绍了如何通过 Eclipse 来构建一个 Web 应用,但如果你仅学会在 Eclipse 等IDE工具中单击“下一步”、“确定”等按钮,那你将很难成为一个真正的程序员。
笔者一直坚信:要想成为一个优秀的程序员,应该从基本功练起,所有的代码都应该用简单的文本编辑器(包括 EditPlus、UltraEdit 等工具)完成。
坚持使用最原始的工具来学习技术,会让你对整个技术的每个细节有更准确的把握。比如说你掌握了通过 Eclipse 来构建一个 Web 应用的内容,但你是否知道 Eclipse 创建 Web 应用时为你做了些什么?如果你还不清楚 Eclipse 所干的每件事情,那你还不能使用它。
真正优秀的程序员当然可以使用 IDE 工具,但真正的程序员,即使使用 vi(UNIX 下无格式编辑器)、记事本也一样可以完成非常优秀的项目。正确对待 IDE 工具的态度是:可以使用 IDE 工具,但绝不可依赖于 IDE 工具。学习阶段,前期不要使用 IDE 工具;开发阶段,使用 IDE 工具。真正技术掌握了,无论用什么 IDE 工具都得心应手。不要盲目相信有些人的“掌握这些细节没用的······”说法,有些程序员的心态是:凡是他不会的,就是没用的。
下面将“徒手”建立一个 Web 应用,请按如下步骤进行:
① 在任意目录下新建一个文件夹,此处将以 webDemo 文件夹建立一个 Web 应用。
② 在第 1 步所建的文件夹内建一个 WEB-INF 文件夹(注意大小写,这里区分大小写)。
③ 进入 Tomcat 或任何其他 Web 容器内,找到任何一个 Web 应用,将 Web 应用的 WEB-INF 下的 web.xml 文件复制到第 2 步所建的 WEB-INF 文件夹下。
对于 Tomcat 而言,其 webapps 路径下有大量的示例 Web 应用。
④ 修改复制后的 web.xml 文件,将该文件修改成只有一个根元素的 XML文件。修改后的 web.xml 文件代码如下。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
在第 2 步所建的 WEB-INF 路径下,新建两个文件夹:classes 和 lib,这两个文件夹的作用完全相同:都是用于保存 Web 应用所需要的 Java 类文件,区别是 classes 保存单个*.class 文件;而 lib 保存打包后的 JAR 文件。
经过以上步骤,已经建立了一个空 Web 应用。将该 Web 应用复制到 Tomcat 的 webapps 路径下,该 Web 应用将可以自动部署在 Tomcat 中。
通常只需将 JSP 放在 Web 应用的根路径下(对本例而言,就是放在 webDemo 目录下),然后就可以通过浏览器来访问这些页面了。
根据上面介绍,不难发现 Web 应用应该有如下文件结构:
<webDemo>——这是 Web 应用的名称,可以改变
|——WEB-INF
| |——classes
| |——lib
| |——web.xm1l
|——<a.jsp>——此处可存放任意多个 JSP 页面
上面的 webDemo 是 Web 应用所对应文件夹的名字,可以更改;a.jsp 是该 Web 应用下 JSP 页的名字,也可以修改(还可以增加更多的 JSP 页面)。其他文件夹、配置文件都不可以修改。
a.jsp页面的内容如下。
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %>
<html>
<head>
<title>欢迎</title>
</head>
<body>
欢迎学习 Java Web 知识
</body>
</html>
上面的页面实际上是一个静态 HTML 页面,在浏览器中浏览该页面将看到如右图所示的界面。
将上面的 webDemo 应用复制到 Tomcat 的 webapp 目录下(部署完成),然后启动 Tomcat 服务器,再使用浏览器访问 http://127.0.0.1:8888/webDemo/ajsp,即可看到如右图所示的页面,即表示 Web 应用构建成功,并已经将其成功地部署到 Tomcat 中了。
{/gird-item}
{gird-item}
{/gird-item}
配置描述符web.xml
上面介绍的位于每个 Web 应用的 WEB-INF 路下的 web.xml 文件被称为配置描述符,这个 web.xml 文件对于 Java Web 应用十分重要,在 Servlet 2.5 规范之前,每个 Java Web 应用都必须包含一个 web.xml 文件,且必须放在 WEB-INF 路径下。
对于 Java Web 应用而言,WEB-INF 是一个特殊的文件夹,Web 容器会包含该文件夹下的内容,客户端浏览器无法访问 WEB-INF 路径下的任何内容。
在 Servlet 2.5 规范之前,Java Web 应用的绝大部分组件都通过 web.xml 文件来配置管理,从 Servlet 3.0 开始,也可通过注解来配置管理 Web 组件,因此 web.xml 文件可以变得更加简洁,这也是 Servlet 3.0 的重要简化。接下来讲解的内容会同时介绍两种配置管理方式。
➢ 配置 JSP。
➢ 配置和管理 Servlet。
➢ 配置和管理 Listener。
➢ 配置和管理 Filter。
➢ 配置标签库。
➢ 配置 JSP 属性。
除此之外,web.xml 还负责配置、管理如下常用内容。
➢ 配置和管理 JAAS 授权认证。
➢ 配置和管理资源引用。
➢ Web 应用首页。
web.xml文件的根元素是<web-app.../>元素,在 Servlet 3.0 规范中,该元素新增了如下属性。
➢ metadata-complete: 该属性接受 true 或 false 两个属性值。当该属性值为 true 时,该 Web 应用将不会加载注解配置的 Web 组件(如Servlet、Filter、Listener 等)。
在 web.xml 文件中配置首页使用 welcome-file-list 元素,该元素能包含多个 welcome-file 子元素,其中每个 welcome-file 子元素配置一个首页。例如,如下配置片段:
<!-- 配置 Web 应用的首页列表 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
上面的配置信息指定该 Web 应用的首页依次是 index.html、index.htm 和 index.jsp,意思是说:当 Web 应用中包含 index.html 页面时,如果浏览者直接访问该 Web 应用,系统将会把该页面呈现给浏览者;当 index.html 页面不存在时,则由 index.htm 页面充当首页,依此类推。
每个 Web 容器都会提供一个系统的 web.xml 文件,用于描述所有 Web 应用共同的配置属性。例如,Tomcat 的系统 web.xml 放在 Tomcat 的 conf 路径下,而 Jetty 的系统 web.xml 文件放在 Jetty 的 etc 路径下,文件名为 webdefault.xml。
评论