动态网站开发讲课笔记04:Servlet基础

news2024/11/15 15:51:03

文章目录

  • 零、本节学习目标
  • 一、Servlet基础
    • (一)Servlet概述
      • 1、Servlet是什么
      • 2、Servlet容器
      • 3、Servlet应用程序的体系结构
    • (二)Servlet的特点
      • 1、功能强大
      • 2、可移植
      • 3、性能高效
      • 4、安全性高
      • 5、可扩展
    • (三)Servlet接口
      • 1、Servlet接口
      • 2、Servlet接口的方法
      • 3、Servlet接口中生命周期的方法
      • 4、Servlet接口的实现类
      • 5、HttpServlet类的常用方法及功能
  • 二、Servlet开发入门
    • (一)实现第一个Servlet程序
      • 1、使用IDEA完成Servlet的开发
        • (1)新建Web项目
  • 三、ServletConfig和ServletContext
  • 四、HttpServletResponse对象
  • 五、HttpServletResponse应用
  • 六、HttpServletRequest对象-

零、本节学习目标

  1. 掌握Servlet的基本概念
  2. 掌握Servlet的特点及其接口
  3. 熟悉使用IDEA工具开发Servlet
  4. 掌握Servlet的配置以及Servlet的生命周期
  5. 掌握ServletConfig和ServletContext接口的使用
  6. 掌握HttpServletRequest对象的使用
  7. 掌握HttpServletResponse对象的使用

随着Web应用业务需求的增多,动态Web资源的开发变得越来越重要。目前,很多公司都提供了开发动态Web资源的相关技术,其中比较常见的有ASP、PHP、JSP和Servlet等。基于Java的动态Web资源开发,SUN公司提供了Servlet和JSP两种技术。本节将针对Servlet技术的相关知识进行详细讲解。

一、Servlet基础

  • 目标:掌握Servlet的概念、特点和接口

(一)Servlet概述

1、Servlet是什么

  • Servlet是运行在Web服务器端的Java应用程序,它使用Java语言编写。与Java程序的区别是,Servlet 对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持。在Java Web应用方面,Servlet 的应用占有十分重要的地位,它在Web请求的处理功能方面也非常强大。

2、Servlet容器

  • Servlet由Servlet容器提供,Servlet容器是指提供了Servlet 功能的服务器(本讲稿指Tomcat)。Servlet容器将Servlet动态地加载到服务器上。与HTTP 协议相关的Servlet使用HTTP请求和HTTP响应与客户端进行交互。因此,Servlet容器支持所有HTTP协议的请求和响应

3、Servlet应用程序的体系结构

  • Servlet的请求首先会被HTTP服务器(如Apache)接收,HTTP服务器只负责静态HTML页面的解析,对于Servlet的请求转交给Servlet容器,Servlet容器会根据web.xml文件中的映射关系,调用相应的Servlet,Servlet将处理的结果返回给Servlet容器,并通过HTTP服务器将响应传输给客户端。
    在这里插入图片描述

(二)Servlet的特点

  • Servlet使用Java语言编写,它不仅具有Java 语言的优点,而且还对Web的相关应用进行了封装,同时Servlet容器还提供了对应用的相关扩展,无论是在功能、性能、安全等方面都十分优秀。

1、功能强大

  • Servlet采用Java语言编写,它可以调用Java API中的对象及方法,此外,Servlet对象对Web应用进行了封装,提供了Servlet对Web应用的编程接口,还可以对HTTP请求进行相应的处理,如处理提交数据、会话跟踪、读取和设置HTTP头信息等。由于Servlet既拥有Java 提供的API,而且还可以调用Servlet封装的Servlet API编程接口,所以,它在业务功能方面十分强大。

2、可移植

  • Java语言是跨越平台的,所谓跨越平台是指程序的运行不依赖于操作系统平台,它可以运行到多个系统平台中,如目前常用的操作系统Windows、Linux和UNIX等。

3、性能高效

  • Servlet对象在Servlet容器启动时被初始化,当Servlet对象第一次被请求时,Servlet 容器将Servlet对象实例化,此时Servlet对象驻存于内存中。如果存在多个请求,Servlet 不会再被实例化,仍然由第一次被实例化的Servlet对象处理其他请求。每一个请求是一个线程,而不是一个进程。

4、安全性高

  • Servlet使用了Java的安全框架,同时Servlet容器还可以为Servlet提供额外的安全功能,它的安全性是非常高的。

5、可扩展

  • Java语言是面向对象的编程语言, Servlet由Java语言编写,所以它具有面向对象的优点。在业务逻辑处理中,可以通过封装、继承等特性扩展实际的业务需要。

(三)Servlet接口

1、Servlet接口

  • 针对Servlet技术的开发,SUN公司提供了一系列接口和类,其中最重要的是javax.servlet.Servlet接口。Servlet就是一种实现了Servlet接口的类,它由Web容器负责创建并调用,用于接收和响应用户的请求。

2、Servlet接口的方法

方法声明功能描述
void init(ServletConfig config)Servlet实例化后,Servlet容器调用该方法完成初始化工作
ServletConfig getServletConfig()用于获取Servlet对象的配置信息,返回Servlet的ServletConfig对象
String getServletInfo()返回一个字符串,其中包含关于Servlet的信息,例如,作者、版本和版权等信息
void service(ServletRequest request,ServletResponse response)负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时,就会调用此方法。容器会构造一个表示客户端请求信息的ServletRequest对象和一个用于响应客户端的ServletResponse对象作为参数传递给service()方法。在service()方法中,可以通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息
void destroy()负责释放Servlet对象占用的资源。当服务器关闭或者Servlet对象被移除时,Servlet对象会被销毁,容器会调用此方法

3、Servlet接口中生命周期的方法

  • 在Servlet接口中的5个方法中,其中init()service()destroy()这三个方法可以表现Servlet的生命周期,它们会在某个特定的时刻被调用。需要注意的是,Servlet容器指的就是Web服务器。

4、Servlet接口的实现类

  • 针对Servlet接口,SUN公司提供了两个默认的接口实现类:GenericServletHttpServletGenericServlet是一个抽象类,该类为Servlet接口提供了部分实现,它并没有实现HTTP请求处理。HttpServletGenericServlet的子类,它继承了GenericServlet的所有方法,并且为HTTP请求中的POSTGET等类型提供了具体的操作方法。

5、HttpServlet类的常用方法及功能

方法声明功能描述
protected void doGet(HttpServletRequest req, HttpServletResponse resp)用于处理GET类型的Http请求的方法
protected void doPost(HttpServletRequest req, HttpServletResponse resp)用于处理POST类型的Http请求的方法
protected void doPut(HttpServletRequest req, HttpServletResponse resp)用于处理PUT类型的Http请求的方法

二、Servlet开发入门

(一)实现第一个Servlet程序

  • 目标:掌握如何使用IDEA工具开发Servlet程序

1、使用IDEA完成Servlet的开发

  • 在实际开发中,通常都会使用IDEA(或Eclipse等)工具完成Servlet的开发,本书中是使用IDEA完成Servlet的开发,因为IDEA不仅会自动编译Servlet,还会自动创建web.xml文件信息,完成Servlet虚拟路径的映射。

(1)新建Web项目

  • 选择IDEA主页的“Create New Project”选项,进入新建项目的界面。
    在这里插入图片描述

三、ServletConfig和ServletContext

四、HttpServletResponse对象

五、HttpServletResponse应用

六、HttpServletRequest对象-

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

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

相关文章

数据结构刷新知识总结,为了与题目分开,特地在这里开一篇博客

文章目录二叉树、树、森林的转换二叉树的五个特性常用算法总结常用算法详解图的概念堆排序哈希查找二叉树、树、森林的转换 树转二叉树 二叉树转树 森林转二叉树 二叉树转森林 二叉树的五个特性 性质1:在二叉树的第i层上至多有2i-1个结点性质2:深度为…

Android动态获取权限(详细教程附代码)

Android动态获取权限概述动态获取权限具体实现layout布局代码回调函数onRequestPermissionsResult权限判断工具类清单文件方式一:懒汉式方式二:饿汉式概述 如果是android6.0以下的版本,只需要在manifest声明对应的权限即可。但是这样会大大降…

美颜sdk动态贴纸的实现流程

随着移动互联网时代的到来,各式各样的 APP层出不穷,从最初的微信、 QQ到如今的抖音、快手等等,再到如今的微博、小红书等等,各式各样的 APP不断涌现。从最开始简单的图片展示到视频聊天,再到现如今丰富多样的各种动态贴…

rip题解

1.查看文件保护机制 使用的是新版本的checksec 2.拖入IDA分析 查壳 是一个64文件,拖入64位IDA 这个文件就是我们要攻击的服务器中的一个进程的代码,进程就是一个正在运行的程序 分析敏感函数 打开字符串窗口 跟进,光标点在command&#x…

Linux: ARM GIC只中断CPU 0问题分析

文章目录1. 前言2. 分析背景3. 问题4. 分析4.1 ARM GIC 中断芯片简介4.1.1 中断类型和分布4.1.2 拓扑结构4.2 问题根因4.2.1 设置GIC SPI 中断CPU亲和性4.2.2 GIC初始化:缺省的CPU亲和性4.2.2.1 boot CPU亲和性初始化流程4.2.2.1 其它非 boot CPU亲和性初始化流程5.…

【微信小程序】-- 全局配置 -- window - 下拉刷新 上拉触底(十六)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

模型实战(6)之Alex实现图像分类:模型原理+训练+预测(详细教程!)

Alex实现图像分类:模型原理+训练+预测 图像分类或者检索任务在浏览器中的搜索操作、爬虫搜图中应用较广,本文主要通过Alex模型实现猫狗分类,并且将可以复用的开源模型在文章中给出!!!数据集可以由此下载:Data本文将从以下内容做出讲述: 1.模型简介及环境搭建2.数据集准…

微纳制造期末复习

章节分为六个模块: 1. 微纳制造中的材料 2.光刻技术 3.微纳制造中使用的技术 4.刻蚀 5.沉积 7.微纳刻蚀 根据导电性区分材料:导体,半导体,绝缘体 晶体:长程有序 多晶:短程有序 非晶:无序…

八 SpringMVC【拦截器】登录验证

目录🚩一 SpringMVC拦截器✅ 1.配置文件✅2.登录验证代码(HandlerInterceptor)✅3.继承HandlerInterceptorAdapter(不建议使用)✅4.登录页面jsp✅5.主页面(操作页面)✅6.crud用户在访问页面时 只…

【算法】PatchMatch立体匹配算法_原理解析

目录 前言 原理解析 1.倾斜支持窗口(Slanted Support Windows) 什么是视差平面? 为什么视差和像素坐标点之间的关系可以解释为平面方程? 视差平面的通用参数方程和点加法向量方程 什么是倾斜支持窗口? 2.基于倾…

宏基因组鉴定病毒流程中需要的生物信息工具

谷禾健康 许多流行病的爆发都是病毒引起的,面对新的传染性基因组出现的最佳策略是及时识别,以便于在感染开始时立即实施相应措施。 目前可用的诊断测试仅限于检测新的病理因子。适用于同时检测存在的任何病原体的高通量方法可能比使用基于当前方法的大量…

Mel Spectrogram

参考链接: Short-time Fourier transform - MATLAB stft- MathWorks 中国 https://medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53 a spectrogram as a bunch of FFTs stacked on top of each other. 给出hop length后&#xff0…

TMP耗时较高的优化问题

1)TMP耗时较高的优化问题 ​2)Unity重载Object后,如何判定物体是否为空 3)SRP Batch在添加unity_SpecCube后的问题 4)堆内存会持续上升,如何用UWA报告来分析 这是第326篇UWA技术知识分享的推送,…

大话数据结构-栈

1 概述 栈(Stack)是限定仅在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈,栈又称为后进…

界面控件DevExpress WinForm——轻松构建类Visual Studio UI(三)

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

MyBatisPlus Study Notes

文章目录1 MyBatisPlus概述1.1 MyBatis介绍1.2 MyBatisPlus特性2 标准数据层开发2.1 MyBatisPlus的CRUD操作API2.2 分页功能接口实现2.2.1 config(配置层)拦截器实现2.2.2 Dao(Mapper)数据访问层(CRUD)操作2.2.3 Junit单元测试进行…

新版本GPU加速的tensorflow库的配置方法

本文介绍在Anaconda环境中,配置可以用GPU运行的Python新版tensorflow库的方法。 在上一篇文章Anaconda配置Python新版本tensorflow库(CPU、GPU通用)的方法(https://blog.csdn.net/zhebushibiaoshifu/article/details/129285815&am…

【分布式】10张图带你彻底搞懂限流、熔断、服务降级

文章目录1 限流1.1 限流指标1.1.1 TPS1.1.2 HPS1.1.3 QPS1.2 限流方法1.2.1 流量计数器1.2.2 滑动时间窗口1.2.3 漏桶算法1.2.4 令牌桶算法1.2.5 分布式限流1.2.6 hystrix限流1.2.6.1 信号量限流1.2.6.2 线程池限流2 熔断2.1 断路器的状态2.2 需要考虑的问题2.3 使用场景3 服务…

游戏开发是个“坑”,而且是个“天坑”

本文首发于CSDN公众号 作者 | 开发游戏的老王 责编 | 梦依丹 出品 | CSDN(ID:CSDNnews) 各位游戏开发者大家好,我是开发游戏的老王,一名游戏开发者同时也是一名高校游戏方向的主讲教师,从事游戏开发及相关教…

HTTP缓存从入门到踹门

1 与缓存相关的字段Expires:缓存的绝对过期时间Cache-Control:缓存的相对过期时间Last-Modified:缓存上一次修改的时间(服务端保存)If-Modified-Since:缓存上一次修改的时间(客户端保存&#xf…