首页 > 其他分享 >servlet系列:简介和基本使用以及工作流程

servlet系列:简介和基本使用以及工作流程

时间:2023-08-12 20:13:50浏览次数:53  
标签:service Servlet 简介 流程 HttpServlet import servlet javax

目录

一、简介

Servlet 是 Server 与 Applet 的缩写,是服务端小程序的意思。使用 Java 语言编写的服务器端程序,可以生成动态的 WEB 页,Servlet 主要运行在服务器端,并由服务器调用执行, 是一种按照 Servlet 标准来开发的类。 是 SUN 公司提供的一门用于开发动态 Web 资源的技术。(言外之意:要实现 web 开发,需要实现 Servlet 标准)

Servlet 本质上也是 Java 类,但要遵循 Servlet 规范进行编写,没有 main()方法,它的创建、使用、销毁都由 Servlet 容器进行管理(如 Tomcat)。(言外之意:写自己的类,不用写 main 方法,别人自动调用)

Servlet 是和 HTTP 协议是紧密联系的,其可以处理 HTTP 协议相关的所有内容。这也是 Servlet 应用广泛的原因之一。提供了 Servlet 功能的服务器,叫做 Servlet 容器,其常见容器有很多,如 Tomcat, Jetty, WebLogicServer, WebSphere, JBoss 等等。

二、Servlet实现

Servlet

在 Servlet API中最重要的是 Servlet接口,所有 Servlet都会直接或间接的与该接口发生联系,或是直接实现该接口,或间接继承自实现了该接口的类该接口包括以下五个方法

  • init
  • getServletConfig
  • service
  • getServletInfo
  • destroy

GenericServlet

提供生命周期方法init和destroy的简单实现,要编写一般的Servlet只需重写抽象service方法

HttpServlet

HttpServlet是继承GenericServlet的基础上进一步的扩展

提供将要被子类化以创建适用于Web站点的HttpServlet的抽象类。

HttpServlet的子类至少必须重写一个方法,该方法通常是以下这些方法之一

  • doGet
  • doPost
  • doPut
  • doDelete

image

三、基本使用

1.引入pom依赖

    <!--servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

2.实现Servlet规范,重写service方法

实现 Servlet 规范,即继承 HttpServlet 类,并到如响应的包,该类中已经完成了通信的规则,我们只需要进行业务的实现即可。

满足 Servlet 规范只是让我们的类能够满足接收请求的要求,接收到请求后需要对请求进行分析,以及进行业务逻辑处理,计算出结果,则需要添加代码,在规范中有一个叫做 service的方法,专门用来做请求处理的操作,业务代码则可以写在该方法中。

package com.mcode.servlet.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * ClassName: HelloServlet
 * Package: com.mcode.servlet.controller
 * Description:
 *
 * @Author: robin
 * @Create: 2023/8/12 - 2:27 PM
 * @Version: v1.0
 */

public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello,servlet!");
        resp.getWriter().write("hello,world");
    }
}

3.配置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" id="WebApp_ID" version="4.0">
    
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.mcode.servlet.controller.HelloServlet</servlet-class>
</servlet>
    
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

4.配置Tomcat

image

6.运行

image

四、Servlet的工作流程

  1. 通过请求头获知浏览器访问的是哪个主机

  2. 再通过请求行获取访问的是哪个一个web应用

  3. 再通过请求行中的请求路径获知访问的是哪个资源

  4. 通过获取的资源路径在配置中匹配到真实的路径,

  5. 服务器会创建servlet对象,(如果是第一次访问时,创建servlet实例,并调用init方法进行初始化操作)

  6. 调用service(request, response)方法来处理请求和响应的操作

  7. 调用service完毕后返回服务器 由服务器讲response缓冲区的数据取出,以http响应的格式发送给浏览器

标签:service,Servlet,简介,流程,HttpServlet,import,servlet,javax
From: https://www.cnblogs.com/vic-tory/p/17625379.html

相关文章

  • JavaWeb之Servlet入门版教务系统(四)
    之前分享了教务系统中的系统管理模块的具体内容,相信或多或少都收获到了一些东西,今天继续讲述教务系统下的邮件系统模块。首先说一下我写的时候的思路,该模块下主要包含写邮件、收邮件、发邮件、草稿箱、垃圾箱等五个主要功能,用户通过登录系统后,可以在收件箱中看到其他用户给自己发送......
  • JavaScript之流程控制
    1流程控制2顺序流程空制顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照(代码的先后顺序,依次执行)程序中大多数的代码都是这样执行的。3分支流程控制if语句3.1分支结构3.2if语句3.2.1语法结构//条件成立执行代码,否则什么也不做if(条件表达式){/......
  • Mybatis简介
    1.1、Mybatis简介●MyBatis是一款优秀的持久层框架●它支持定制化SQL、存储过程以及高级映射。●MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。●MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POjO(PlainOldJavaObjects,普通老式Java......
  • 访问网站慢处理方法,思路流程
    chrome浏览器F12点Network 查看载入时间禁用缓存Disablecache超过几百毫秒,就需要分析了右面绿条越长加载时间越长有的边长了会变红 发黑ping不通服务宕机 机房宕机 服务过载ping通不丢包服务宕机 机房宕机 服务过载ping的通但是断断续续的丢包比如10次只有5次通......
  • gitee仓库创建和操作系统安装流程
    创建Gitee账号和仓库1、官网:https://gitee.com/创建好账号,然后登录账号2、流程点击创建仓库填写仓库信息创建好仓库后点击仓库主页的管理在管理中自行选择是否开源创建好仓库后:点击自己主页设置,配置SSH秘钥点击设置按钮跳转到主页,然后点击红色箭头的SSH秘钥配......
  • HDFS工作流程与机制
    1、各个角色的职责主角色:NameNode从而,NameNode成为了访问HDFS的唯一入口从角色:DataNode主角色辅助角色:SecondaryNameNodeNameNode职责:DataNode职责:2、HDFS写数据流程(上传文件)流程图:PipeLine管道:HDFS文件系统的一种数据传输方式ACK应答响应:确认字符(计算机网络相......
  • Traffic Control (TC) 简介和使用指南
    TrafficControl(TC)简介和使用指南TrafficControl(TC)是一个在Linux操作系统中用于控制网络流量的工具,允许对网络流量进行限速、排队、分流以及其他管理操作。TC用于实现QoS(QualityofService)和流量整形,能够更好地控制网络资源和提供更好的用户体验。我们主要用于网损控制......
  • 软件资产管理的八大流程,让您从采购到处置全面管理软件资产!
    软件资产管理(SoftwareAssetManagement,简称SAM)是指对组织内部使用的所有软件资产进行全面和有效的管理,以实现软件资产的最大化效益和价值。软件资产管理不仅可以帮助组织节省成本、提高效率、降低风险,还可以促进组织的数字化转型和创新。然而,软件资产管理也面临着诸多挑战,如软件资......
  • LTE和5G无线技术对比简介
    LTE和5G是两种不同的无线通信技术,它们在速度、延迟、容量、覆盖范围和设备兼容性等方面存在差异。LTE,即长期演进技术,是一种基于OFDMA的4G蜂窝网络标准,由3GPP组织制定并发布。它的主要目的是改进3G的空中接入技术,提供更高的数据速率和更低的延迟。LTE支持最高100Mbps的下行速率和50M......
  • JavaWeb之Servlet入门版教务系统(三)
    本次要分享的内容是之前教务系统中系统管理模块下的权限列表功能,包括对权限信息进行增删改查以及对不同的角色身份进行的不同权限分配(重点讲解)。首先还是需要使用mysql数据库准备一张权限表,建表语句如下:DROPTABLEIFEXISTS`sys_permission`;CREATETABLE`sys_permission`(......