二、Servlet

文章目录

  • 1. Servlet技术
    • 1.1 什么是Servlet
    • 1.2 手动实现 Servlet 程序
    • 1.3 url 地址到 Servlet 程序的访问
    • 1.4 Servlet 的生命周期
    • 1.5 GET 和 POST 请求的分发
    • 1.6 通过继承 HttpServlet 实现 Servlet 程序
    • 1.7 使用 IDEA 创建 Servlet 程序
    • 1.8 Servlet 类的继承体系
  • 2. ServletConfig 类
    • 2.1 ServletConfig 类的三大作用
  • 3. ServletContext 类
    • 3.1 什么是 ServletContext?
  • 4. HTTP 协议
    • 4.1 什么是 HTTP 协议
    • 4.2 请求的 HTTP 协议格式
      • 4.2.1 GET 请求
      • 4.2.2 POST
      • 4.2.3 常用请求头的说明
      • 4.2.4 哪些是 GET 请求,哪些是 POST 请求
    • 4.3 响应的 HTTP 协议格式
    • 4.4 常用的响应码说明
    • 4.5 MIME 类型说明
  • 5. HttpServletRequest 类
    • 5.1 HttpServletRequest 类有什么作用
    • 5.2 HttpServletRequest 类的常用方法
    • 5.3 如何获取请求参数
    • 5.4 请求的转发
    • 5.5 base 标签的作用
    • 5.6 Web 中的相对路径和绝对路径
    • 5.7 web 中 / 斜杠的不同意义
  • 6. HttpServletResponse 类
    • 6.1 HttpServletResponse 类的作用
    • 6.2 两个输出流的说明
    • 6.3 如何往客户端回传数据
    • 6.4 响应的乱码解决
    • 6.5 请求重定向

1. Servlet技术

1.1 什么是Servlet

在这里插入图片描述

1.2 手动实现 Servlet 程序

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3 url 地址到 Servlet 程序的访问

在这里插入图片描述

1.4 Servlet 的生命周期

在这里插入图片描述

package com.gyh.servlet;import javax.servlet.*;
import java.io.IOException;/*** @author Gao YongHao* @version 1.0*/
public class HelloServlet implements Servlet {/*** 在Servlet实例化后,Servlet容器会调用init()方法,来初始化该对象,* 主要是为了让Servlet对象在处理客户请求前可以完成一些初始化的工作。* 例如:建立数据库连接,获取配置信息等。* 对于每一个Servlet实例,init()方法只能被调用一次。* init()方法有一个类型为ServletConfig的参数,* Servlet容器通过这个参数向Servlet传递配置信息。* Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。* 另外,在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,* 使用该对象,Servlet可以和它的Servlet容器进行通信* @param servletConfig* @throws ServletException*/@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}/*** 该方法返回容器调用init()方法时传递给Servlet对象的ServletConfig对象,* ServletConfig对象包含了Servlet的初始化参数* @return*/@Overridepublic ServletConfig getServletConfig() {return null;}/*** 专门用来处理请求的响应方法* 这个函数用于处理业务逻辑* 程序员应当把业务逻辑写在这里* 会被调用多次,当用户每访问该servlet时,都会被调用* req用于获得客户端(浏览器(b/s结构))的信息,res用于向客户端(浏览器)返回信息* @param servletRequest* @param servletResponse* @throws ServletException* @throws IOException*/@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("Hello Servlet 被访问了");}/*** 返回一个String类型的字符串,其中包括了关于Servlet的信息,* 例如,作者、版本和版权。该方法返回的应该是纯文本字符串,而不是任何类型的标记(HTML,XML等)* @return*/@Overridepublic String getServletInfo() {return null;}/*** 当容器检测到一个Servlet对象应该从服务中被移除的时候,容器会调用该对象的destroy()方法,* 以便让Servlet对象可以释放它所使用的资源,保存数据到持久存储设备中。* 例如:将内存中的数据保存到数据库中,关闭数据库的连接等。当需要释放内存或容器关闭时,* 容器就会调用Servlet对象的destroy()方法。在Servlet容器调用destroy()方法前,* 如果还有其他的线程正在service()方法中执行,容器会等待这些线程执行完毕或等待服务器设定的超时值到达。* 一旦Servlet对象的destroy()方法被调用,容器不会再把其他的请求发送给该对象。* 如果需要该Servlet再次为客户端服务,容器会重新产生一个Servlet对象来处理客户端的请求。* 在destroy()方法调用后,容器会释放这个Servlet对象,在随后的时候内,该对象会被Java的垃圾收集器所回收*/@Overridepublic void destroy() {System.out.println("销毁");}
}

1.5 GET 和 POST 请求的分发

在这里插入图片描述

1.6 通过继承 HttpServlet 实现 Servlet 程序

在这里插入图片描述

1.7 使用 IDEA 创建 Servlet 程序

在这里插入图片描述

1.8 Servlet 类的继承体系

在这里插入图片描述

2. ServletConfig 类

在这里插入图片描述

2.1 ServletConfig 类的三大作用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. ServletContext 类

3.1 什么是 ServletContext?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. HTTP 协议

4.1 什么是 HTTP 协议

在这里插入图片描述

4.2 请求的 HTTP 协议格式

在这里插入图片描述

4.2.1 GET 请求

在这里插入图片描述

在这里插入图片描述

4.2.2 POST

在这里插入图片描述

在这里插入图片描述

4.2.3 常用请求头的说明

在这里插入图片描述

4.2.4 哪些是 GET 请求,哪些是 POST 请求

在这里插入图片描述

4.3 响应的 HTTP 协议格式

在这里插入图片描述

在这里插入图片描述

4.4 常用的响应码说明

在这里插入图片描述

4.5 MIME 类型说明

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. HttpServletRequest 类

5.1 HttpServletRequest 类有什么作用

在这里插入图片描述

5.2 HttpServletRequest 类的常用方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3 如何获取请求参数

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.4 请求的转发

什么是请求的转发?

请求转发是指:服务器收到请求后,从一个资源跳转到另一个资源的操作叫 请求转发
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.5 base 标签的作用

在这里插入图片描述

在这里插入图片描述

5.6 Web 中的相对路径和绝对路径

在这里插入图片描述

5.7 web 中 / 斜杠的不同意义

在这里插入图片描述

6. HttpServletResponse 类

6.1 HttpServletResponse 类的作用

HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat 服务器都会创建一个 Response 对象传

递给 Servlet 程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息,

我们如果需要设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置。

6.2 两个输出流的说明

在这里插入图片描述

在这里插入图片描述

6.3 如何往客户端回传数据

在这里插入图片描述

6.4 响应的乱码解决

在这里插入图片描述

在这里插入图片描述

6.5 请求重定向

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143250.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

OpenFeign接口调用日志

一、介绍 在开发或测试环境中,需要更多的调试信息;在通过 Spring Cloud OpenFeign 调用远程服务的接口时,可能需要记录接口调用的日志详情,比如:请求头、请求参数、响应等。 Spring Cloud OpenFeign 打印 FeignClien…

Golang | Leetcode Golang题解之第413题等差数列划分

题目&#xff1a; 题解&#xff1a; func numberOfArithmeticSlices(nums []int) (ans int) {n : len(nums)if n 1 {return}d, t : nums[0]-nums[1], 0// 因为等差数列的长度至少为 3&#xff0c;所以可以从 i2 开始枚举for i : 2; i < n; i {if nums[i-1]-nums[i] d {t}…

java四种内置线程池介绍

目录 java线程池概述Executor接口ExecutorService接口 工具类快速创建线程池FixedThreadPoolSingleThreadExecutorCachedThreadPoolScheduledThreadPool内置线程池总结 java线程池概述 Executor框架是Java提供的一个用于处理并发任务的工具。它简化了线程管理&#xff0c;提供…

用Python实现时间序列模型实战——Day 24: 时间序列中的贝叶斯方法

一、学习内容 1. 贝叶斯时间序列分析的基本概念 贝叶斯方法基于贝叶斯统计&#xff0c;通过对数据的先验分布和似然函数进行推断&#xff0c;更新为后验分布。贝叶斯时间序列分析使用贝叶斯推断处理时间序列中的不确定性&#xff0c;适合处理复杂、不确定性高的时间序列问题。…

【RabbitMQ】可靠性传输

概述 作为消息中间件来说&#xff0c;最重要的任务就是收发消息。因此我们在收发消息的过程中&#xff0c;就要考虑消息是否会丢失的问题。结果是必然的&#xff0c;假设我们没有采取任何措施&#xff0c;那么消息一定会丢失。对于一些不那么重要的业务来说&#xff0c;消息丢失…

中秋佳节,月圆人团圆

文章目录 历史和文化起源与演变文化内涵习俗与活动 军事中秋节的军事背景中秋节的军事象征现代军营中的中秋节 月圆之夜&#xff0c;共赏婵娟传统文化&#xff0c;薪火相传团圆时刻&#xff0c;温馨满溢展望未来&#xff0c;祈愿美好 在这个金秋送爽、丹桂飘香的季节里&#xf…

web基础—dvwa靶场(五)File Upload

File Upload(文件上传) 上传的文件对 web 应用程序来说是一个巨大的风险&#xff0c;许多攻击的第一步是上传攻击代码到被攻击的系统上&#xff0c;然后攻击者只需要找到方法来执行代码即可完成攻击。也就是是说&#xff0c;文件上传是攻击者需要完成的第一步。 不受限制的文件…

Java或者前端 实现中文排序(调API的Demo)

目录 前言1. 前端2. Java 前言 前端 Vue 中的中文排序通常使用 JavaScript 提供的 localeCompare 方法来比较中文字符串 Java 后端可以使用 Collator 类来实现中文排序 1. 前端 在 Vue 中&#xff0c;使用 localeCompare 来实现中文字符串的排序&#xff1a; <template&…

如何在webots中搭建一个履带机器人

前期准备 下载webotswebots基本知识 a. 官方文档:Webots documentation: Track b. B站教程:webots-超详细入门教程(2020)_哔哩哔哩_bilibili搭建流程 搭建履带机器人主要使用到了webots中的track节点,这个节点是专门用来定义履带的相关属性,模拟履带运动的 首先,创建一个…

软考高级:嵌入式-嵌入式实时操作系统调度算法 AI 解读

讲解 嵌入式实时操作系统中的调度算法主要用于管理任务的执行顺序&#xff0c;以确保任务能够在规定时间内完成。针对你提到的几种调度算法&#xff0c;我会逐一进行通俗解释。 生活化例子 假设你在家里举办一个家庭聚会&#xff0c;家里人轮流使用一个游戏机玩游戏。你作为…

实例讲解使用Matlab_Simulink整车模型进行车速控制策略仿真测试验证方法

在进行VCU软件开发过程中&#xff0c;经常要设置一些扭矩控制相关的参数&#xff0c;一般可以通过经验先设置一版参数&#xff0c;然后通过与整车模型的联合仿真及实车标定优化相关参数&#xff0c;最终得到一版综合性能最优的参数作为最终程序定版参数。本文通过蠕行扭矩控制模…

C++八股文之STL篇

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 思维导图链接&#xff1a;STL 持续更新中…… &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64…

[Python]一、Python基础编程

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\1、人工智能开发入门\1、零基础Python编程 1. Python简介 Python优点: 学习成本低开源适应人群广泛应用领域广泛1.1 Python解释器 下载地址:Download Python | Python.org 1.2 Python开发IDE -- Pycharm 2. 基础语法…

数据权限的设计与实现系列9——前端筛选器组件Everright-filter集成框架开发2

功能实现 ‍ 规则转换为 SQL 片段‍ 规则解析 首先我们来构造一个典型的规则&#xff0c;包括两个条件组&#xff0c;每个组由两个条件组成&#xff0c;由且与或两种逻辑关系&#xff0c;如下图&#xff1a; 然后看看生成的规则&#xff0c;如下&#xff1a; {"filt…

合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题

不知不觉间&#xff0c;我们已经发布拉期课程&#xff1a;hello world初体验&#xff0c;点灯、远程控制、定位和扩展功能&#xff0c;你学的怎么样&#xff1f;很多伙伴表示已经有点上瘾啦&#xff01;合宙Air201&#xff0c;如同我们一路升级打怪的得力法器&#xff0c;让开发…

计算机的错误计算(九十六)

摘要 探讨 的计算精度问题。 计算机的错误计算&#xff08;五十五&#xff09;与&#xff08;七十八&#xff09;分别列出了 IEEE 754-2019 中的一些函数与运算。下面再截图给出其另外3个运算。 例1. 已知 x-0.9999999999966 . 计算 不妨在Python下计算&#xff0c;则有&am…

10 - UDP实验

在本章节中&#xff0c;我们将采用 network 与 socket 这两个第三方库来构建UDP网络连接的功能。具体而言&#xff0c;network 库将被应用于WiFi连接的建立&#xff0c;而 socket 库则基于 lwIP 协议栈来实现网络协议的连接。在实验环节&#xff0c;我们将利用 ESP32 开发板与远…

【自动驾驶】决策规划算法(一)决策规划仿真平台搭建 | Matlab + Prescan + Carsim 联合仿真基本操作

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

FL Studio 24.1.1.4285中文完整版新功能介绍及百度网盘下载

‌FL Studio 24‌版本引入了多项新功能和改进&#xff0c;旨在提升用户体验和工作效率&#xff0c;同时保持其强大的功能和灵活性。以下是一些主要的新功能&#xff1a; ‌CLAP插件支持‌&#xff1a;FL Studio 24支持Clever Audio Plug-in (CLAP)插件&#xff0c;这扩展了软件…

认知小文3《打破桎梏,编程与人生的基本法则》

内容摘要&#xff1a; 面对挑战&#xff0c;编程起步艰难但必经磨砺。每周深耕Python&#xff0c;实战项目巩固技能。财务需努力与实战结合&#xff0c;构建坚实基础。规划先行&#xff0c;先进知识助力专家之路。认知升级阅读与多元资源&#xff0c;拓宽视野。价值积累靠专业证…