当前位置: 首页 > news >正文

第5章第6章 Servlet技术

《Java Web程序设计》-T5&T6(Servlet技术)

一、Servlet概述

1、Servlet概念

  • Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术,是以Java为基础的、运行于服务器端的应用程序组件。

  • Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet。

    image-20221203231425066

2、使用Servlet的意义

在进行JavaWeb开发时,如果将前端代码和后端代码均写在jsp文件中,不方便维护,所以就需要进行前后端分离:

  • 前端页面设计:HTML + CSS + JavaScript 【写在jsp文件中】
  • 后端逻辑判断:Java

要实现最终效果,需要将后端开发的数据在前端页面进行呈现,所以需要一门技术可以将后端数据传到前端页面,这门技术就可以使用:Servlet(中间商)

3、Servlet快速入门

  • 定义一个类,实现Servlet接口,并重写接口中的方法
  • 使用注解@WebServlet配置访问路径
  • 启动Tomcat服务器,输入地址进行访问
package com.ynnz.servlet;import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;@WebServlet("/test1")
public class Test1 implements Servlet {@Overridepublic void destroy() {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic String getServletInfo() {return null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {System.out.println("Hello Servlet");}}

访问地址:http://localhost:8080/ServletTest/test1,在控制台输出:Hello Servlet

二、Servlet执行流程

问题思考:在快速入门的案例中,我们并没有调用service()方法,为什么可以执行service()中的内容?

Web服务器会自动创建Servlet对象,并通过Servlet对象调用Servlet类中的方法。

Servlet执行流程如下:

  • 根据localhost:8080可以找到要访问的Tomcat Web服务器
  • 根据ServletTest可以找到部署在Tomcat服务器上的ServletTest项目
  • 根据test1可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配
  • 找到Test1这个类后,Tomcat服务器就会为Test1这个Servlet类创建一个对象,然后调用对象中的方法

image-20221204015422267

三、Servlet生命周期

问题思考:通过Servlet执行流程我们知道Servlet对象是由Tomcat服务器创建的,那是什么时候被创建的呢?

如果要回答这个问题,就需要学习Servlet的生命周期(即Servlet对象从创建到销毁的整个过程)

Servlet运行在Tomcat Web服务器中,其生命周期由Tomcat来管理,分为如下4个阶段:

  • 加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象

    默认情况,Servlet会在第一次访问被容器创建,但是如果创建Servlet比较耗时的话,那么第一个访问的人等待的时间就比较长,用户的体验就比较差。因此我们可以在服务器启动的时候创建Servlet对象:

    loadOnstartup的取值有两类情况:
    (1)负整数:第一次访问时创建Servlet对象
    (2)0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高


http://www.mrgr.cn/news/63509.html

相关文章:

  • Raspberry Pi OS 树莓派的新版本
  • GaussDB Ustore存储引擎解读
  • 聊一聊Elasticsearch的基本原理与形成机制
  • 操作系统-第五章I/O设备-(5.3设备独立性软件)
  • 设计模式最佳实践代码总结 - 结构型设计模式篇 - 代理模式最佳实践
  • 【elkb】索引生命周期管理
  • 【果实种子识别】Python+深度学习+人工智能+CNN卷积神经网络算法+TensorFlow+算法模型训练
  • 【升华】机器学习鸢尾花分类完整代码示例
  • 助力抑郁症初筛!上海交大团队构建Agent心理诊所,论文一作在线展示demo,分享技术亮点
  • Games101笔记-三维Transform变换(三)
  • python--函数详解二
  • ngnix.conf文件配置前后端联调地址
  • 8.FreeRTOS之软件定时器
  • Linux云计算 |【第五阶段】CLOUD-DAY7
  • MYSQL插入或修改,基于唯一联合索引,批量操作
  • CentOS上安装Redis 6.x
  • 还在寻找影像切片方案?免费GIS工具箱满足你的需求
  • 外发出去的文件怎么加密?2024年6款外发文件加密软件app盘点,赶紧收藏!
  • AutoGLM:智谱AI的创新,让手机成为你的生活全能助手
  • Allegro: 开源的高级视频生成模型
  • Apache Dubbo (RPC框架)
  • 与外部公司做数据交互时,需要注意哪些事情?
  • Nginx安装配置详解
  • 使用wordcloud与jieba库制作词云图
  • MyBatis3(动态SQL 常用的动态SQL 元素 映射器注解 基本注解 结果映射注解)
  • 算法练习——双指针