【JavaWeb学习,快一起呀,干!】第二章 Servlet基础(2)—— 使用 Eclipse开发
开门见山~
我们又开始了
Servlet 本质上是平台独立的 Java 类,编写一个 Servlet,实际上就是按照 Servlet 规范编写一个 Java 类。
今天是以一个简单向客户端返回 “Hello Servlet!” 字符串的 Servlet 为例,介绍一下如何使用 Eclipse开发第一个 Servlet。
任务目标:
使用 Eclipse 开发第一个 Servlet
教学步骤:
一、创建 Java Web 项目
二、创建 Servlet
三、Servlet 的声明配置
四、Servlet 的部署运行
一、创建 Java Web 项目
教学开始:
· 在 Eclipse 中新建 Dynamic Web Project
二、创建 Servlet
教学开始:
· 选择 chapter02 项目,右键单击选择 New -> Servlet 菜单
· 在弹出的 Servlet 创建窗口中,输入新建的 Servlet 的包名和类名
我这里用的 default 包
· Next -> Next,选择 Servlet 中需要重写的方法
· Finish 完成,Eclipse 工具自动创建 HelloServlet 类代码
我们使用 Eclipse 工具创建了 Servlet,它默认继承 HttpServlet,同时默认重写 init()、destroy()、doGet() 和 doPost()
我们再做一步回顾
· init():Servlet 的初始化方法
· destroy():销毁前的处理方法
· doGet():处理 HTTP 协议 GET 请求
· doPost():处理 HTTP 协议 POST 请求
为了验证 Servlet 的生命周期以及在网页中输出第一个 “Hello Servlet!”,我们完善这份代码
老规矩,源代码在最后~
【代码】 HelloServlet.java
三、Servlet 的声明配置
Servlet 运行访问之前,需要对其进行声明配置。
Servlet 的配置信息主要包括 Servlet 的描述、名称、初始参数、类路径以及访问地址等。
在 Servlet 3.x 规范中,Servlet 的声明配置可以通过注解方式实现。
注解 @WebServlet,用于将一个类声明为 Servlet,该注解会在程序部署时被 Servlet 容器处理,容器将根据具体的属性配置把相应的类部署为 Servlet。
注解 @WebServlet 的属性及描述:
· 属性名 name 类型 String
指定 Servlet 的名字,可以为任何字符串,一般与 Servlet 的类名相同,如果没有显示自定,则该 Servlet 的取值即类的全限定名
· 属性名 urlPatterns 类型 String[]
指定一组 Servlet 的 URL 匹配模式,可以是匹配地址映射(如 /SimpleServlet)、匹配目录映射(如/servlet/*)和匹配扩展名映射(如 *.action)
· 属性名 value 类型 String[]
该属性等价于 urlPatterns 属性。两个属性不能同时使用。
· 属性名 loadOnStartup 类型 int
指定 Servlet 的加载顺序。
当此选项没有指定时,表示容器在 Servlet 第1次被请求时才加载;当值为0或者大于0时,表示容器在应用启动时就加载这个 Servlet。值越小,启动该 servlet 的优先级越高。原则上不同的 Servlet 应该使用不同的启动顺序数字。
· 属性名 initParams 类型 WebInitParam[]
指定一组 Servlet 初始化参数,为可选项
· 属性名 asyncSupported 类型 boolean
声明 Servlet 是否支持异步操作模式,默认为 false
· 属性名 description 类型 String
指定该 Servlet 的描述信息
· 属性名 displayName 类型 String
指定该 Servlet 的显示名,通常配合工具使用。
一个使用 @WebServlet 进行较为详细的 Servlet 声明配置代码
【示例】使用 @WebServlet 声明 Servlet
还记得我们刚刚写的代码吗?@WebServlet("/HelloServlet")
Eclipse 工具在创建 HelloServlet 时,自动为其生成了声明代码 @WebServlet("/HelloServlet"),表示当请求的 URL 地址匹配/HelloServlet 映射地址时,加载执行此 Servlet。
这种配置为 Servlet 的最简声明配置。
除了通过注释的方式进行声明外,还可以通过项目的配置文件 web.xml 完成
【示例】在 web.xml 中声明 Servlet
在 web.xml 中, 元素用于 Servlet 声明
web.xml 中 子元素的配置属性:
· 属性名 类型 String
指定该 Servlet 的描述信息,等价于 @WebServlet 的 description
· 属性名 类型 String
指定该 Servlet 的显示名,通常配合工具使用,等价于 @WebServlet 的 displayName 属性
· 属性名 类型 String
指名 Servlet 的名称,一般与 Servlet 的类名相同,要求在一个 web.xml 文件内名字唯一,等价于 @WebServlet 的 name 属性
· 属性名 类型 String
指定 Servlet 类的全限定名,即包名.类名
· 属性名
指定 Servlet 初始化参数,等价于 @Webservlet 的 initParams 属性,若有多个参数可重复定义此元素。此元素为可选配置
· 属性名 类型 String
指定初始参数名
· 属性名 类型 String
指定初始参数名对应的值
· 属性名 类型 int
指定 Servlet 的加载顺序,等价于 @WebServlet 的 loadOnStartup 属性
· 属性名 类型 boolean
指定 Servlet 是否支持异步操作模式,默认为 false,等价于 @WebServlet 的 asyncSupported 属性
与元素相对应的 元素用于指定 Servlet 的 URL 映射。
web.xml 中 子元素的配置属性:
· 属性名 类型 String
用来指定要映射的 Servlet 名称,要与 声明中的 值一致
· 属性名 类型 String
指定 Servlet 的 URL 匹配模式,等价于 @WebServlet 的 urlPatterns 属性或 value 属性
四、Servlet 的部署运行
好啦,终于来到最后一步了,部署运行。
Servlet 的部署与 JSP 稍有不同,Servlet 需要将编译好的 class 字节码文件部署到项目发布路径的 classes 目录下进行运行访问。
同 JSP 的访问一样,Servlet 的访问也需要有一个 URL 地址,其访问地址由 @WebServlet 的 urlPatterns 或 value 属性值决定。
本项目中根据 Edipse 工具自动生成的声明 @WebServlet("/HelloServlet"),对 HelloServlet 的访问地址为:
部署运行教学开始:
· 选中 HelloServlet 类,右键单击,选择 Run As -> Run on Server 菜单
· 选择要运行的 Servlet 的 Web 服务器,选择 Next 按钮,选择要发布的 Web 项目
· 选择 Finish 按钮,可以看到自动打开浏览器上的运行结果
当我们查看生成的网页源码时,可以看到其生成的页面源代码正为在 doGet() 方法中所输出的内容,同时在 Console 控制台可以看到在页面被访问时 init() 方法被调用执行的信息。