2.1.6 小露身手:使用Eclipse创建第一个Servlet程序

步骤

(1)打开Project Explorer视图→展开刚刚创建的Web项目→展开Java Resources→右击src→单击Servlet→弹出Create Servlet窗口。Java package文本框处输入controller,Class name文本框处输入ABCServlet,父类是HTTPServlet,如图2-8所示。

图2-8 Create Servlet窗口

说明1:通常Servlet程序负责“扮演”控制器(Controller)的角色,在Java package文本框处输入controller,指该package存放的是Servlet程序(有关控制器的更多知识参考第8章内容)。

说明2:父类HTTPServlet专门用于处理HTTP请求。本书所开发的Servlet程序都继承了HTTPServlet。

(2)单击Next按钮,进入Servlet部署界面,如图2-9所示。Servlet程序的URL mappings保持默认设置(2.1.7节讲解URL Mappings的相关知识)。

(3)单击Next按钮,进入创建Servlet程序的界面,选择创建构造方法、init、destroy、doGet和doPost方法,单击Finish按钮,即可创建ABCServlet程序,如图2-10所示。

图2-9 Servlet部署界面

图2-10 创建ABC Servlet程序

场景1 将servlet-api.jar导入Web项目

说明

Servlet程序继承了HttpServlet类,HttpServlet类定义在第三方库servlet-api.jar中。如果刚刚创建的Servlet程序存在如下所示的语法错误(错误代码下有波浪线),需要将servlet-api.jar导入Web项目中。Tomcat是可以运行Servlet的容器,Tomcat的安装目录里存在该第三方库。

在Tomcat的安装目录C:\apache-tomcat-9.0.29中找到lib目录,找到servlet-api.jar,将它复制到当前Web项目的lib目录下。方法是:打开Project Explorer视图→展开刚刚创建的Web项目→展开WebContent目录→展开Web-INF目录→找到lib目录→复制。Eclipse自动将servlet-api.jar包复制到Web项目“Web-INF/lib”下,Eclipse代码编辑区域将不提示错误。

场景2 篇幅所限,精简代码

场景2步骤

(1)删除注释语句。

(2)在每个方法中添加一条Tomcat控制台输出语句。

(3)修改doGet()方法的代码,在Tomcat控制台输出项目部署后的绝对物理路径。(4)删除doPost()方法的代码“doGet(request, response);”。

(5)再次确保Servlet的urlPatterns是“/类名”。

说明

注解@WebServlet配置了Servlet类的urlPatterns。为了简化Servlet的声明,从Servlet 3.0开始,Servlet新增了注解支持,使得web.xml配置文件从Servlet 3.0开始不再是必选的了。

场景3 Tomcat集成到Eclipse、Web项目部署到Tomcat

说明1:Servlet程序需要Servlet容器才能运行,Tomcat提供了Servlet容器。Eclipse仅是一个集成开发环境,并不提供Tomcat。有必要将第1章的Tomcat集成到本章的Eclipse集成开发环境中,这样就可以在一个界面中编写代码、启动/停止Tomcat、将项目部署到Eclipse的Tomcat中、调试代码。另外,还有很重要的一点:每次修改Servlet程序的代码后,需要重新编译Servlet程序、重启Tomcat。而Eclipse会检测Servlet程序是否修改,若修改,则会自动重新编译Servlet程序、重启Tomcat,使修改后的Servlet程序生效,提高开发效率。通过如下步骤,可将Tomcat集成到Eclipse中以及将Web项目部署到Eclipse的Tomcat中。

说明2:进行下列操作前,请务必阅读第1章有关Tomcat启动的相关内容。

场景3步骤

(1)在Eclipse菜单栏中单击Window菜单→选择Show View→单击Servers命令→进入Servers视图→单击“No servers are available. Click this link to create a new server...”链接→弹出New Server窗口→找到Apache文件夹→选择Tomcat V9.0 Server,如图2-11所示。

图2-11 New Server窗口

(2)单击Next按钮,进入选择Tomcat安装目录的界面,选择第1章的Tomcat安装目录和JRE,如图2-12所示。

(3)单击Next按钮,进入将项目部署到Eclipse中的Tomcat界面,如图2-13所示。选择要部署的项目get→单击Add按钮→单击Finish按钮。

图2-12 选择Tomcat安装目录和JRE

图2-13 将项目部署到Eclipse中的Tomcat界面

最终,将Tomcat集成到Eclipse中,同时项目get被部署到Eclipse中的Tomcat界面。

(4)启动集成在Eclipse中的Tomcat。

打开Servers视图,如图2-14所示。右键单击Tomcat v9.0 Server at localhost→单击Start,启动Tomcat后,在Eclipse的Console控制台视图中,就可以看到Tomcat的后台信息。

图2-14 打开Server视图

说明

完成上述步骤后,打开Project Explorer视图→展开Servers项目→双击server.xml配置文件,里面会有如下配置选项。该配置选项配置了get项目的虚拟路径。


<Context docBase="get" path="/get" reloadable="true" source="org.eclipse.
jst.jee.server:get"/> 

场景4 运行第一个Servlet程序

Servlet程序不会自动运行,只有在浏览器地址栏输入Servlet程序对应的urlPatterns,才能触发Servlet程序的执行。启动Tomcat后,打开浏览器,输入网址http://localhost:8080/get/ABCServlet,就会看到一个空白网页。Tomcat控制台会显示图2-15所示的执行结果。

图2-15 Servlet程序执行结果

注意

第一次执行ABCServlet程序时,会依次触发ABCServlet程序的构造方法、init()方法、doGet()方法执行。以后再执行ABCServlet程序时,会触发doGet()方法执行,但构造方法和init()方法将不再执行。

从执行结果可以看出:通过浏览器地址栏访问ABCServlet时,只触发了ABCServlet的doGet()方法(并没有触发doPost()方法)。这是因为,通过浏览器地址栏访问资源文件时,浏览器向资源文件发出的是GET请求。

说明

HTTP请求主要有GET请求和POST请求两种。

从浏览器的角度:单击超链接或者直接在浏览器地址栏输入网址,浏览器发出的请求都是GET请求。GET请求会触发Servlet程序的doGet()方法;POST请求会触发Servlet程序的doPost()方法。

从Servlet程序的角度:每个Servlet程序有两个入口,doGet()方法用于处理GET请求;doPost()方法用于处理POST请求。