《Servlet和JSP学习指南》一1.3 编写基础的Servlet应用程序

1.3 编写基础的Servlet应用程序

Servlet应用程序编写起来非常简单,只需要创建一个目录结构,并将Servlet类放在某一个目录下即可。在本节中,将学习如何编写一个简单的Servlet应用程序,将它命名为app01a。最初它只包含一个Servlet:MyServlet,其会给用户发送一条问候信息。
需要用一个Servlet容器来运行Servlet。Tomcat是一个开源的Servlet容器,可以免费获得,它也可以在能够使用Java的任何操作系统平台上运行。如果你还没有安装Tomcat,现在应该先去阅读附录A,并安装Tomcat。

1.3.1 编写和编译Servlet类

确定你的机器上已经有了Servlet容器之后,下一步就是编写和编译Servlet类。这个例子中的Servlet类是指MyServlet,如代码清单1-1所示。按照规范,Servlet类的名称要以Servlet作为后缀。

在阅读代码清单1-1中的代码时,可能首先会注意到下面这个注解:

用WebServlet注解类型来声明一个Servlet。在声明Servlet的同时,还可以告诉容器是哪个URL调用这个Servlet。name属性是可选的,如果有,一般是用来提供Servlet类的名称。关键是urlPatterns属性,它也是可选的,但是几乎都会用到它。在MyServlet中,utlPattern告诉容器,/my模式应该调用这个Servlet。
注意,URL模式必须以一条正斜线开头。
Servlet的init方法调用一次,并将private transient变量servletConfig设置成传给该方法的ServletConfig对象。

如果你想从Servlet内部使用ServletConfig,只须将传进来的ServletConfig赋给一个类变量即可。
service方法将字符串“Hello from MyServlet”传给浏览器。每当有针对该Servlet的HTTP请求进来时,都会调用service方法。
要编译Servlet,必须将包含Servlet API的类型放在类路径(Class Path)中。Tomcat的servlet-api.jar文件中打包有javax.servlet和javax.servlet.http包的成员。这个jar文件就放在Tomcat安装目录的lib目录下。

1.3.2 应用程序的目录结构

Servlet应用程序必须以特定的目录结构进行部署。图1-2展示了这个应用程序的目录结构。

这个目录结构最上方的app01a就是应用程序目录。应用程序目录下方是一个WEB-INF目录。它有两个子目录:
classes。Servlet类和其他的Java类都必须放在这里。类下方的目录反映了类的包结构。在图1-2中,已经部署了一个类:app01a.MyServlet。
lib。在这里部署Servlet应用程序所需的jar文件。Servlet API jar文件则不需要部署在这里,因为Servlet容器已经包含这些Servlet API了。在这个应用程序中,lib目录是空的。空的lib目录也可以删除。
Servlet/JSP应用程序一般会有JSP页面、HTML文件、图像文件以及其他资源。这些都应该放在应用程序的目录下,并且经常放在子目录下。例如,所有的图像文件可以放在一个image目录下,所有的JSP页面可以放在一个jsp目录下,以此类推。
放在应用程序目录下的任何资源,用户都可以通过输入该资源的URL而直接进行访问。如果你希望某个资源可以被Servlet访问,但是不能被用户访问,那么应该把它放在WEB-INF目录下面。
现在,把这个应用程序部署到Tomcat中。在Tomcat中,一种部署方法是将应用程序目录直接复制到Tomcat安装目录下方的webapps目录下。也可以通过在Tomcat的conf目录下编辑server.xml文件来部署应用程序;或者为了不用编辑server.xml,而单独部署一个XML文件到conf\Catalina\localhost目录下。其他Servlet容器可能会有不同的部署规则。关于如何将一个Servlet/JSP应用程序部署到Tomcat的详细信息,可查看附录A。
这里建议部署Servlet/JSP应用程序的方法是将它打包成一个war文件来进行部署。war文件是指以war作为扩展名的jar文件。可以利用JDK提供的jar程序或者像WinZip这类工具来创建war文件。然后,将war文件复制到Tomcat的webapps目录下。当启动或者重启Tomcat时,Tomcat会自动解压war文件。以war文件的方式部署,这在所有的Servlet容器中都适用。在第16章中,你还会学到更多关于部署的知识。

1.3.3 调用Servlet

要测试你的第一个Servlet应用程序,需先启动或者重启Tomcat,并将浏览器切换到以下URL(假设将Tomcat配置成在它的默认端口8080上进行监听):

其输出应该如图1-3所示。

恭喜!你的第一个Servlet应用程序已经写好了!

时间: 2024-09-03 02:35:48

《Servlet和JSP学习指南》一1.3 编写基础的Servlet应用程序的相关文章

《Servlet和JSP学习指南》一1.9 HTTP Servlet

1.9 HTTP Servlet 我们所编写的Servlet应用程序,尽管不能说全部,但其中大多数要用到HTTP.这意味着,可以利用HTTP提供的特性.javax.servlet.http包是Servlet API中的第二个包,其包含了编写Servlet应用程序的类和接口.javax.servlet.http中的许多类型覆盖了javax.servlet中的类型. 图1-5展示了javax.servlet.http中的主要类型. 1.9.1 HttpServlet HttpServlet类覆盖ja

《Servlet和JSP学习指南》一第1章 Servlet 1.1 Servlet API概述

第1章 Servlet Servlet是开发Servlets应用程序的主要技术.掌握Servlet API是成为一名技术高超的Java Web开发者的基础.你必须非常熟悉Servlet API中所定义的70多种类型.这个数字听起来似乎不少,但是如果你每次学一种,就不会觉得困难了. 本章将介绍Servlet API,并教你编写第一个Servlet应用程序. 1.1 Servlet API概述 Servlet API中有4个Java包,包括: javax.servlet.包含定义Servlet与Se

《Servlet和JSP学习指南》一导读

前 言 欢迎你阅读本书,其内容涵盖了Servlet 3.0和JSP 2.2方面的技术. Java Servlet技术,或简称Servlet,是Java中用于开发Web应用程序的基本技术.Sun公司于1996年发布了Java Servlet技术,与CGI(Common Gateway Interface,公共网关接口)形成竞争.之后,它成为在Web中生成动态内容的标准.CGI的主要问题在于,它为每一个HTTP请求都创建一个新的进程.因为创建进程需要花费大量的CPU周期,这使得编写可扩展的CGI程序

《Servlet和JSP学习指南》一3.1 JSP概述

3.1 JSP概述 JSP页面其实是一个Servlet.但是,使用JSP页面则比Servlet要容易得多,这有两个原因:第一,不需要编译JSP页面:第二,JSP页面一般是扩展名为jsp的文本文件,可以利用任何文本编辑器来编写. JSP页面是在JSP容器中运行的.Servlet容器一般也是JSP容器.例如,Tomcat就是一个Servlet/JSP容器. 第一次请求一个JSP页面时,Servlet/JSP容器要做两件事情: 1. 将JSP页面转换成一个JSP页面实现类,这是一个实现javax.se

《Servlet和JSP学习指南》一3.5 脚本元素

3.5 脚本元素 第二种JSP句法元素是脚本元素,它将Java代码合并成一个JSP页面.脚本元素有3种类型:Scriptlet.声明及表达式,这些都将在接下来的小节中讨论. 3.5.1 Scriptlet Scriptlet是一个Java代码块,它以<%开头,以%>结束.例如,代码清单3-6中的scriptletTest.jsp页面就是使用了Scriptlet. 上述JSP页面中有两个Scriptlet.注意,在一个Scriptlet中定义的变量,对于它后面的其他Scriptlet是可见的.

《Servlet和JSP学习指南》一3.6 动作

3.6 动作 第三种句法元素是动作(Action),它们被编译成执行某个操作的Java代码,例如访问某个Java对象,或者调用某个方法.本节讨论必须能被所有JSP容器支持的标准动作.除标准动作之外,还可以创建定制的标签,用来执行某些操作.定制标签将在第6章中讨论. 下面列举部分标准动作.doBody和invoke这两个标准动作将在第7章中讨论. 3.6.1 useBean 这个动作将创建一个与某个Java对象相关的脚本变量.它是将表现逻辑与业务逻辑分隔开来的最容易的方法之一.但是有了像定制标签和

《Servlet和JSP学习指南》一第3章 JSP 3.0

第3章 JSP 在第1章中我们已经知道,Servlet有两个缺陷无法克服.第一,在Servlet中编写的所有HTML标签都必须包在Java字符串中,这使得发送HTTP响应变成一项十分烦琐的工作.第二,所有文本和HTML标签都必须进行硬编码:因此,即使只对表示层做极其微小的修改,例如,修改背景颜色,也需要重新编译.JavaServer Pages(JSP)解决了Servlet中的这两个问题.但是,JSP并没有取代Servlet,而是对它进行了补充.现代的Java Web应用程序都使用Servlet

《Servlet和JSP学习指南》一1.11 使用部署描述符

1.11 使用部署描述符 在前面的范例中已经学过,编写和部署Servlet应用程序是很容易的.部署的一个方面是给Servlet映射配置一条路径.在那些例子中,利用WebServlet注解类型给一个Servlet映射了一条路径.使用部署描述符是配置Servlet应用程序的另一种方法,关于部署描述符的详细讨论,可查看第16章的内容.部署描述符总是命名为web.xml,并放在WEB-INF目录下.本章将介绍如何创建一个名为app01c的Servlet应用程序,并为它编写一个web.xml文件.app0

《Servlet和JSP学习指南》一3.4 指令

3.4 指令 指令(Directive)是第一种JSP句法元素,其指示JSP转换器应该如何将某个JSP页面转换成Servlet的命令.JSP 2.2中定义了几个指令,但最重要的是这两个:page和include,这些在本章中都会讨论到.其他章节中还会讲到的其他指令有:taglib.tag.attribute及variable. 3.4.1 page指令 利用page指令可以就当前JSP页面的某些方面对JSP转换器提出指示.例如,可以告诉JSP转换器隐式对象out应该使用多大容量的缓存区,要使用哪