1.Servlet概述
(1)Serlet名字的由来?
Servlet 是Java Servlet 的简称,Servlet本身并不是一个英文单词,而是两个单词拼构而成的:Servlet = Service + Applet。与之类似的是Scriptlet,它也是由两个单词拼构而成的:Scriptlet = Script + Applet,它表示的是脚本小程序。由此可以看出,java的老东家sun的命名特点。
(2)Servlet是什么?用来干什么?
通俗的理解,Servlet是用java语言编写的一个小程序,这个小程序运行在服务器端。实际上,我们对于Servelet的理解可以分为两个层次:
- 狭义的Servlet是指Java语言实现的一个接口。
- 广义的Servlet是指任何实现了这个Servlet接口的类。
我们知道Java Web的资源分为动态资源和静态资源,其中动态资源的特征是具有逻辑性,而动态资源的逻辑性就是通过java代码呈现出来的,具体的实现就是运行在服务器端的java代码,也就是我们的Servlet类,因此我们通常是说的Servlet,实际上指的是广义Servlet。但是Servlet类与我们通常写的java类又有着不同之处。下面详细讲解。
(3)Servlet与通常的java程序的不同之处
- 因为它运行在服务器端的Web服务器软件上,因此它要遵循一定的规则。它需要遵循的规则的具体体现就是,编写运行在服务器端的小程序的话,需要实现Servlet接口。实现这样接口的程序写出来以后,就叫Servlet程序。
- 我们通常写的程序是我们主动去调用它,也就是在主方法中使用它。但是,运行在服务器端的小程序,也就是Servlet不需要我们主动去调用它,在需要执行的时候,我们的服务器软件就会去调用它。
- 实际上说我们不会主动去调用它,也不完全正确。作为一个客户,当我们使用浏览器访问一些web资源时,实际上可能就发起了Servlet的调用。但是,这个请求中间经过了web服务器软件这一层,也就是我们先把请求给了web服务器软件,web服务器软件再去具体的执行某一个servlet。那web服务器软件怎么知道我们要执行哪个Servlet呢?它是怎么体现的呢?答案就是通过url体现出来的。也就是我们在浏览器中输入一个路径时,可能就是在请求执行一个(或多个)Servlet的。因此,我们需要给每一个Servlet配置一个url。
(4)Servlet的特点
Servlet自身不依赖于协议或者平台。它的主要功能在于交互式地浏览和生成数据,生成动态Web内容。通俗的说,它就是用来申请和生成web资源的,例如html页面。
2.Servlet的继承体系
Servlet的继承关系图如下
在实际开发中,我们写Servlet程序,一般继承自HttpServlet。
3.Servlet的访问路径配置
- 通过配置文件配置
- 通过注解配置
注意:一个Servlet程序可以配置多个访问路径。例如通过注解方式配置,可以这样写:@WebServlet({"/d4","/dd4","/ddd4"}),这样配置的话我们访问三个路径中的任何一个,都可以访问到该Servlet资源。
4. Servlet程序举例
(1)使用配置文件方式配置
//使用配置文件方式配置Servlet,在web.xml中添加 下述信息即可:
/*
<!--配置Servlet -->
<!--(1).为Servlet类起一个别名, 例如:demo-->
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>全类名</servlet-class>
</servlet>
<!--(2). 为demo配置一个url-pattern ,例如:/demo1 这样,这个servlet类便可以通过/demo 这个资源路径访问到 -->
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
*/
(2)使用注解方式配置
@WebServlet("/demo")
public class ServletDemo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo4...");
System.out.println(req);
}
}