带你吃透Servlet核心编程上篇(完整图文教程)(上)

简介: 文章目录1 走进Servlet1.1 Servlet简介1.2 第一个Servlet程序1.3 Servlet程序如何定位到url地址1.4 Servlet的生命周期方法1.5 Servlet请求的分发处理1.6 通过继承HttpServlet类实现Servlet程序2 Servlet体系2.1 Servlet继承体系2.2 ServletConfig类的使用

1 走进Servlet

1.1 Servlet简介

Servlet是什么?


Servlet是JavaEE规范之一,规范就是接口

Servlet是JavaWeb的三大组件之一,三大组件分别是:Servlet程序、Filter过滤器、Listener监听器

Servlet是运行在服务器上的一个java小程序,可以接收客户端发来的请求,并响应数据给客户端

如何实现Servlet程序呢?


编写一个类去实现Servlet接口

实现service方法,处理请求,并响应数据

到web.xml中配置servlet程序的访问地址

1.2 第一个Servlet程序

下面来完成一个简单的Servlet程序,当访问到则在控制台打印提示信息

HelloServlet.java:

import javax.servlet.*;
import java.io.IOException;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /**
     * service方法是专门用来处理请求和响应的
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet 被访问了");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--servlet标签给Tomcat配置Servlet程序-->
    <servlet>
        <!--servlet-name标签Servlet程序起别名 一般是类名-->
        <servlet-name>HelloServlet</servlet-name>
        <!--servlet-class是Servlet程序的全类名-->
        <servlet-class>com.example.servlet_test.HelloServlet</servlet-class>
    </servlet>
    <!--servlet-mapping标签给servlet程序配置访问地址-->
    <servlet-mapping>
        <!--servlet_name告诉服务器,当前配置的地址给哪个servlet程序使用-->
        <servlet-name>HelloServlet</servlet-name>
        <!--url-pattern标签配置访问地址     <br/>
            /   斜杠表示在服务器解析的时候,地址为:http://ip:port/工程路径   <br/>
            /hello  表示地址为:http://ip:port/工程路径/hello <br/>
        -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

配置完成后,可以通过 http://ip:port/工程路径/hello 访问,成功访问后,控制台打印了如下信息:



1.3 Servlet程序如何定位到url地址

以上面的案例:http://localhost:8080/工程路径/hello为例:


 先通过ip定位定位到了服务器,而后通过服务器端口找到Tomcat,再通过工程路径确认访问的工程,而后由资源路径访问到 web.xml 配置文件 中的 url,后确认了访问的HelloServlet类。


1.4 Servlet的生命周期方法

Servlet程序的生命周期方法调用顺序如下:


执行Servlet构造器方法;

执行init初始化方法;

执行service方法;

执行destroy销毁方法。

其中第一、二步,是在第一次访问的时候创建Servlet程序会调用。第三步每次访问都会调用。第四步只有在web工程停止的时候调用。


案例如下:

修改HelloServlet.java如下

import javax.servlet.*;
import java.io.IOException;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class HelloServlet implements Servlet {
    public HelloServlet(){
        System.out.println("构造方法被调用");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init方法被调用");
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /**
     * service方法是专门用来处理请求和响应的
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service方法被调用");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
        System.out.println("destroy方法被调用");
    }
}

当运行程序后,进行一次刷新页面后退出程序时,控制台打印信息如下:


补充


除了生命周期方法外,Servlet接口还提供了 getServletConfig 方法和 getServletInfo 方法,servlet可使用前一种方法获取任何启动信息,而后一种方法允许 servlet 返回有关其自身的基本信息,比如:作者、版权、版本等。




相关文章
|
13天前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
50 20
|
7月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n),利用`request.getLocale()`获取用户区域设置,通过`DateFormat`类格式化特定区域的日期。示例代码演示了根据用户区域显示相应日期,强调了处理多语言网站的关键方法,如`getCountry()`、`getLanguage()`等。
52 6
|
5月前
|
安全 Java API
Java中的Servlet编程详解
Java中的Servlet编程详解
|
5月前
|
前端开发 Java 应用服务中间件
JavaEE:Servlet后端搭建部署 一条龙全教程
JavaEE:Servlet后端搭建部署 一条龙全教程
|
7月前
|
Java API
Servlet 教程 之 Servlet 发送电子邮件 2
使用Servlet发送HTML邮件需要JavaMail API和JAF。在示例中,Servlet创建MimeMessage对象,设置发件人、收件人、主题及HTML内容,然后通过Transport.send()发送。确保相关jar在CLASSPATH中。当Servlet被调用时,它会向指定邮箱发送带有HTML标题的邮件。
57 11
|
7月前
|
Java 应用服务中间件 API
Servlet 教程 之 Servlet 调试 2
Servlet调试常面临挑战,建议采用日志记录,推荐使用log4J。Servlet API的`log()`方法也能辅助调试,如示例代码所示,通过`ServletContext`记录消息。当参数缺失时,它能生成带有异常的日志。Tomcat容器会将这些日志保存在安装目录的logs文件夹下,有助于识别和追踪错误。在不常见异常的catch块中使用`log()`函数是良好实践。
58 8
|
7月前
|
开发框架 缓存 Java
JSP 教程 之 Eclipse JSP/Servlet 环境搭建 1
本教程指导如何使用Eclipse搭建JSP/Servlet开发环境。需下载Eclipse J2EE和Tomcat,将Tomcat解压至无中文和空格的D盘目录。启动Tomcat后,服务器运行,通过浏览器访问`http://localhost:8080/`。在Tomcat的webapps\ROOT目录创建test.jsp文件,输入代码并访问`http://localhost:8080/test.jsp`以验证环境配置成功。
105 1
|
7月前
|
小程序
Servlet 教程 之 Servlet 调试 3
Servlet调试是开发中的挑战,涉及复杂交互且错误难复现。使用JDB调试器,将HttpServer视为Servlet响应HTTP请求的调试目标。调试时,需配置调试器的classpath以包含HttpServer、Servlet及其相关类。为启用Servlet重载,通常将`server_root/servlets`加入classpath,但在调试时此规则有助于在加载Servlet前设置断点。在正确配置后,可在Servlet代码中设定断点,通过浏览器请求该Servlet以启动调试,程序会在断点处暂停。
68 6
|
7月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 4
Servlet教程之国际化讲解了如何根据用户区域设置展示多语言内容。关键术语包括国际化(i18n)、本地化(l10n)和区域设置(locale)。Servlet通过`request.getLocale()`获取区域设置,并使用`NumberFormat`类格式化特定区域的货币。示例代码展示了如何根据客户端locale显示货币格式。
44 3
|
7月前
|
定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n)。通过request对象的getLocale()获取用户区域设置,利用DateFormat进行特定区域的日期格式化。示例代码显示了根据用户浏览器设置显示相应语言和文化的日期。
42 2