JSP&Servlet学习笔记(2)HelloServlet解析

时间:2022-03-06 16:18:02

注:学习此篇教程之前请确定完成Servlet开发环境的配置。

一、文件组织

首先看一下之前在Eclipse中新建的Dynamic Web Project目录结构:

JSP&Servlet学习笔记(2)HelloServlet解析


重要的目录说明:
WEB-INF:此目录中存在的资源项目不会被列入应用程序根目录直接访问的项。
WEB-INF/web.xml:部署描述文件(需要手工创建)。
WEB-INF/classes:放置自定义的类(.class),必须包括包结构。
WEB-INF/lib:放置应用程序用到的JAR文件。

二、部署
1)使用@@WebServlet
在Servlet3.0中,可以使用标注(Annotation)来告知容器哪些Servlet会提供服务以及额外信息。
例如
@WebServlet("/Hello.view")
public class HelloServlet extends HttpServlet
只要在Servlet上设置@WebServlet,容器就会自动读取当中的信息。上面的例子告诉容器,如果请求的URL是
"/hello.view",则由HelloServlet的实例来提供服务。


2)使用web.xml
使用web.xml是更加通用的部署方法,会比较麻烦一些。
web.xml中的设置会覆盖Servlet中的标注设置。
还是基于之前的例子,我们用web.xml来部署一下。


在WEB-INF中新建web.xml,敲入下面的代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>
</web-app>


解释一下几个重要的标签:
<servlet>元素定义了一个servlet实例。<servlet>元素必须包含了<servlet-name>和<servlet-class>两个子元素,也可能包括其他初始化参数。

 <servlet-name>元素定义了servlet实例唯一的名字。每一个servlet实例必须有唯一的名字,这个名字仅用来配合对此实例的URL映射,所以不一定要和servlet类或servlet的URL一致。

 <servlet-class>元素告诉servlet容器如何构建一个servlet类的实例。<servlet-class>元素包含两部分,包含servlet的package名和servlet类的类名。

<servlet-mapping>用于定义映射。

<load-on-startup>1</load-on-startup>表示在应用启动的时候就将Servlet类载入。

设置完成之后,我们就只能通过“http://localhost:8080/ServletTest1/Hello”来访问Servlet而不是之前的Hello.view,因为@WebServlet被覆盖掉了。