Java Web 里Servlet的介绍与理解

2023-11-05

文章目录


前言

本文记录了笔者在学习Java Web相关知识时对Servlet的一些介绍与个人理解,在Java学习阶段的后期自然是需要使用到Spring、SpringMVC、SpringBoot等框架的,在学习完这些框架的过程中,我意识到框架中我们对浏览器操作的各种方法的本质其实都是Web阶段Servlet的封装,故在这里记录并回顾一下Servlet的内容,望能有更深的体会。

一、Servlet是什么?

Servlet介绍

1.Servlet是sun公司开发动态Web的一门技术

2.sun公司在编写API的时候提供了一个接口叫做:Servlet,如果你想要开发一个Servlet程序,只需要完成以下两个步骤

    编写一个类,实现Servlet接口

    把开发好的实现了Servlet接口的类部署到WEB服务器中。

Servlet的工作流程可以用下面的图来表示


二、使用Servlet的步骤

1.创建一个Maven项目,然后在pom.xml中导入所需的Jar包 

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

2.编写继承了Servlet的实现类

这里继承HttpServlet 要重写里面的doGet 和doPost方法,这两个方法就是像浏览器发送get或者post请求

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进入doGet方法");
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("hello,ligou");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

3.然后把编写的类注册到web.xml文件中

我们需要注册Servlet,并且编写请求Servlet的浏览器请求头,才能查看到对应的效果。

注意,这里servlet-class对应是我们类的路径,<servlet>和<servlet-mapping>中<servlet-name>的值要相同。

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0"
         metadata-complete="true">
<!--    注册servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.he.servlet.HelloServlet</servlet-class>
    </servlet>
<!--    servlet的请求路径-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

 4.配置Tomcat

url栏写我们浏览器的访问路径,同时这里要注意要记得在部署栏中引入 war包

引入war包

5.启动项目,在浏览器中查看

首先进入的是我们的index.jsp

当我们在浏览器请求行中输入/hello

成功显示了内容 这个时候我们可以打开F12查看

浏览器发起了请求,传递到我们写的Servlet类中,执行了doGet方法。


总结

Servlet是一个运行了面向请求/ 响应服务器中的网络模块。

请求是客户的一个调用,可能是远程的。 请求包含了客户要发送给服务器的数据。

响应是服务器返回给客户的回答该请求的数据。

Servlet是一个JAVA对象,他以请求为输入,分析其数据,执行一些逻辑运算,并给客户发回一个响应。 另一方面,Servlet作为驻留在服务器端HTTP明白的中间层,它们知道怎样在HTTP中通过RMI或IIOP在EJB和客户之间进行通信。

在Spring框架火热的当今,我们也许不会再接触使用原生的Java Web或者原生的Servlet去编写前后端交互的代码了,但是我们仍然应该学习这部分的内容,正所谓,温故而知新,深入底层,了解原理,是一名程序员提升自我的路上必不可少的环节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Web 里Servlet的介绍与理解 的相关文章

随机推荐

  • 数组的push()、pop()、shift()和unshift()方法

    JavaScript的数组是一个拥有堆栈和队列自身优点的global对象 也就是说JavaScript数组可以表现的像栈 LIFO 和队列 FIFO 一样操作 这也是JavaScript数组强大的可操作性的体现 堆栈和队列 栈和队列都是动态
  • [预训练语言模型专题] SpanBERT: 抽取式问答的利器

    本文为预训练语言模型专题的第16篇 快速传送门 1 4 萌芽时代 风起云涌 文本分类通用技巧 GPT家族 5 8 BERT来临 浅析BERT代码 ERNIE合集 MT DNN KD 9 12 Transformer Transformer
  • linux系统开机启动顺序

    1 加载BIOS BIOS包含了CPU的相关信息 设备启动顺序信息 硬盘和内存信息等等 2 读取MBR MBR指硬盘上第0磁道第一个扇区 存放了预启动信息 分区表信息 3 运行BOOt Loader 一个小程序 调整系统软硬件环境 4 加载
  • 【嵌入式百科】004——ASCLL码表

    在计算机中 所有的数据在存储和运算时都要使用二进制数表示 因为计算机用高电平和低电平分别表示1和0 例如 像a b c d这样的52个字母 包括大写 以及0 1等数字还有一些常用的符号 例如 等 在计算机中存储时也要使用二进制数来表示 而具
  • 用pandas的read_csv函数读取csv文件某一列,每间隔5个数读取一个值,写出代码

    使用pandas read csv 读取csv文件中某一列 每间隔5个数读取一个值的代码如下 import pandas as pd 读取csv文件 df pd read csv 文件路径 获取某一列数据 column df 列名 每间隔5
  • 樱花映射手机上用linux,Sakura Frp 成功迁移至 Linux 服务器

    之前 Sakura Frp 主站是搭建在 IIS 10 0 PHP 5 4 45 nts MySQL 5 7 的服务器上的 机器是 i5 6500 PHP 5 4 45 安全性不够高 性能也很差 MySQL 在高并发请求下还是不够快 于是琢
  • PADS Router VX2.7 常规设计规则

    双击PCB空白区域跳出 设计特性 点击层 布线可以选择能否布线 如果关掉则该层无法布线 栅格 也可以使用快快捷键 G 5 GD 5中间需要空格与layout和logic不同 安全间距与layout设置一致 需要根据板厂生产工艺来决定 这些间
  • 上三角、下三角、对称矩阵

    说明 上三角矩阵是矩阵在对角线以下的元素均为0 即Aij 0 i gt j 例如 1 2 3 4 5 0 6 7 8 9 0 0 10 11 12 0 0 0 13 14 0 0 0 0 15 下三角矩阵是矩阵在对角线以上的元素均为0 即A
  • 华为OD机试真题 Java 实现【火车进站】【牛客练习题】

    一 题目描述 给定一个正整数N代表火车数量 0
  • 源端串联端接详解(转载)

    来源 一博自媒体 时间 2016 4 13 类别 微信自媒体 文 袁波 一博科技高速先生团队队员 拓扑和端接序列文章 记得刚接触SI的时候最先遇到的信号完整性问题就是过冲和振铃 产生过冲和振铃的最直接原因就是传输通道阻抗不匹配 抑制过冲和振
  • vs2019无法打开文件“libboost_thread-vc141-mt-gd-1_69.lib”

    最近在用darknet做目标检测相关的东西 然后是在windows环境下进行的 需要用到boost 但是这是我第一次使用boost 就像个小白一样 才了解到boost使用需要先编译 然后使用其它的来调用这个lib库 所以才会出现下面的这种报
  • AR模型是一种常用的信号建模方法,其目的是找到一些线性组合使得当前时刻的信号值能够由过去时刻的信号值预测得到

    AR模型是一种常用的信号建模方法 其目的是找到一些线性组合使得当前时刻的信号值能够由过去时刻的信号值预测得到 在实际应用中 需要对信号的功率谱密度进行估计 本文将介绍基于LS估计和Cadzow谱估计法来实现AR模型的信号功率谱密度估计方法
  • Vue项目中引入Jquery

    文章目录 前言 1 进入项目根目录 执行如下命令 安装jquery依赖 2 在webpack config js中添加如下配置项 3 在main js中引入 加入下面这行代码 全局引入 总结 前言 记录在vue项目中如何引入jquery 1
  • LSTM matlab实现

    前期在学习特征分类的时候确实花了不少功夫 想去了解一下长短时记忆网络的分类效果如何 这里主要分享一下LSTM的一些简介和代码 这个例子展示了如何使用长短时记忆 LSTM 网络对序列数据进行分类 若要训练深度神经网络对序列数据进行分类 您可以
  • Qt之QTextEdit

    关于QTextEdit Qt5对Qt4的做了一些小的改动 看上去很多方法都发生了变化 但万变不离其中 如 槽函数setFontFamily const QFont 变为setFontFamily const QString fontFami
  • Could not retrieve mirrorlist http://poptop.sourceforge.net/yum/stable/mirrorlist-poptop-stable-rhel

    解决说明 rm etc yum repos d pptp repo yum update
  • 手把手教你Hook Android 点击事件

    文章目录 前言 一 什么是Hook 二 Hook的优势 三 Hook前置条件 1 反射 2 代理模式 四 Hook实战 总结 前言 随着技术的不断创新 Android的需求也是越来越多 Hook技术是走向Android高级开发的必经之路 提
  • linux 命令ls /du用法

    copy https www cnblogs com xueqiuqiu p 7635722 html ls的用法 ls l grep wc l或find company type f wc l 查看某文件夹下文件的个数 包括子文件夹里的
  • LeetCode数据库题目汇总二(附答案)

    81 查询结果的质量和占比 查询表 Queries Column Name Type query name varchar result varchar position int rating int 此表没有主键 并可能有重复的行 此表包
  • Java Web 里Servlet的介绍与理解

    文章目录 目录 文章目录 前言 一 Servlet是什么 Servlet介绍 Servlet的工作流程可以用下面的图来表示 二 使用Servlet的步骤 1 创建一个Maven项目 然后在pom xml中导入所需的Jar包 2 编写继承了S