【JavaWeb】Servlet总结

本文介绍了Servlet的基本概念,包括Servlet的功能、生命周期方法及其在Java Web开发中的作用。通过一个简单的FirstServlet示例,展示了如何在Tomcat中部署和运行Servlet。此外,还讨论了Servlet的映射路径和缺省路径的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet入门

Servlet简介

Servlet(Server Applet)是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

当浏览器发送一个HTTP请求时,HTTP请求由Web容器分配给特定的Servlet进行处理,Servlet拥有一系列的方法来处理HTTP请求。常见的方法有doGet(),doPost()等。Web容器中包含了多个Servlet,特定的HTTP请求该由哪一个Servlet来处理是由Web容器中的web.xml来决定的。

Servlet必须部署在Java servlet容器才能使用。虽然很多开发者都使用Java Server Pages(JSP)和Java Server Faces(JSF)等Servlet框架,但是这些技术都要在幕后通过Servlet容器把页面编译为Java Servlet。也就是说,了解Java Servlet技术的基础知识对任何Java web开发者来说是很有用的。

第一个Selvlet程序

1.在tomcat中新建一个web应用hello,在web应用中新建一个WEB-INF/classes目录

2.在classes目录新建一个FirstServlet

package com.lwb.servlet;

import java.io.*;
import javax.servlet.*;

public class FirstServlet extends GenericServlet{
    public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException{
        OutputStream out = res.getOutputStream();
        out.write("My First Sevlet".getBytes());
    }
}

3.编译,javac -cp %CATALINA_HOME%/lib/servlet-api.jar -d . FirstServlet.java

4.在WEB-INF目录中新建一个web.xml文件,配置servlet的对外访问路径

5.启动tomcat服务器,用浏览器访问。

  • 注意:(1)MyFirstServlet类继承了GenericServlet。这个继承是必须的,因为所有的Servlet必须是要么继承了 javax.servlet.GenericServlet 的普通Servlet,要么是继承了 javax.servlet.http.HttpServlet 的HTTP Servlet。
  • (2)如果你在使用IDE(例如eclipse),那么打包和部署你的应用只需要一个简单的步骤。右击项目> Run As > Run As Server。如果还没配置服务器先配置好服务器

Servlet生命周期方法

在你的应用加载并使用一个Servlet时,从初始化到销毁这个Servlet期间会发生一系列的事件。这些事件叫做Servlet的生命周期事件(或方法)。

Servlet生命周期的三个核心方法分别是 init() , service() 和 destroy()。每个Servlet都会实现这些方法,并且在特定的运行时间调用它们。

1) 在Servlet生命周期的初始化阶段,web容器通过调用init()方法来初始化Servlet实例,并且可以传递一个实现 javax.servlet.ServletConfig 接口的对象给它。这个配置对象(configuration object)使Servlet能够读取在web应用的web.xml文件里定义的名值(name-value)初始参数。这个方法在Servlet实例的生命周期里只调用一次。

2) 初始化后,Servlet实例就可以处理客户端请求了。web容器创建一个多线程来调用Servlet的service()方法来处理每一个请求。service() 方法定义了能够处理的请求类型并且调用适当方法来处理这些请求。编写Servlet的开发者必须为这些方法提供实现。如果发出一个Servlet没实现的请求,那么父类的方法就会被调用并且通常会给请求方(requester)返回一个错误信息。

3) 最后,web容器调用destroy()方法来终结Servlet。如果你想在Servlet的生命周期内关闭或者销毁一些文件系统或者网络资源,你可以调用这个方法来实现。destroy() 方法和init()方法一样,在Servlet的生命周期里只能调用一次。

其他内容(细节)

##Servlet的映射路径

这里写图片描述

匹配分两种,(1)精确匹配 (2)模糊匹配 。比较好理解,这里不讲了。

注意:

  • url-pattern要么以 / 开头,要么以*开头。 例如, itcast是非法路径。
  • 不能同时使用两种模糊匹配,例如 /itcast/*.do是非法路径
  • 当有输入的URL有多个servlet同时被匹配的情况下:1,精确匹配优先。2 以后缀名结尾的模糊url-pattern优先级最低。

Servlet的缺省路径

servlet的缺省路径是在tomcat服务器内置的一个路径。该路径对应的是一个DefaultServlet(缺省Servlet)。这个缺省的Servlet的作用是用于解析web应用的静态资源文件。

    问题: URL输入http://localhost:8080/myweb/index.html 如何读取文件????

    1)到当前day10应用下的web.xml文件查找是否有匹配的url-pattern。
    2)如果没有匹配的url-pattern,则交给tomcat的内置的DefaultServlet处理
    3)DefaultServlet程序到day10应用的根目录下查找是存在一个名称为index.html的静态文件。
    4)如果找到该文件,则读取该文件内容,返回给浏览器。
    5)如果找不到该文件,则返回404错误页面。

        结论: 先找动态资源,再找静态资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值