wordpress云建站教程视频/北京做网站公司哪家好

wordpress云建站教程视频,北京做网站公司哪家好,wordpress速度快不快,平台推广计划书模板范文目录 一、Servlet概述 演示 创建JavaWeb项目(2017版本为例) 1. 打开 IntelliJ IDEA 2. 选择项目类型 3. 配置框架 二、Servlet初识(熟练) 1.servlet说明 2.Servlet 接口方法 3.创建Servlet 4.JavaWeb请求响应流程 ​编辑 ​编辑 5.servlet…

目录

一、Servlet概述

演示

创建JavaWeb项目(2017版本为例)

1. 打开 IntelliJ IDEA

2. 选择项目类型

3. 配置框架

二、Servlet初识(熟练)

1.servlet说明

2.Servlet 接口方法

3.创建Servlet

4.JavaWeb请求响应流程

​编辑

​编辑

5.servlet生命周期

Servlet 基础

Servlet 接口方法

Servlet 生命周期

Servlet 实例管理

Tomcat 的角色

总结

三、HttpServlet(精通)

1.HttpServlet介绍

2.Http请求方法

 3.​​​​​​​创建HttpServlet

第一种:创建一个类继承HttpServlet

第二种:IDEA直接创建servlet

4.servlet创建顺序

总结


一、Servlet概述

JavaWeb 三大组件Servlet、Filter(过滤器)、Listener(监听器)。

其中Servlet是JavaWeb三大组件之一,它是我们学习JavaWeb最为基本的组件,必须100%掌握。

Servlet 作用:处理用户请求。客户端请求由 Tomcat 找到对应的 Servlet 来处理,例如登录请求由登录 Servlet 处理。

 【基本流程:JavaWeb项目部署在Tomcat,Tomcat启动就会立即加载web.xml,每写一个Servlet,就会在web.xml里面配置一个servlet】

接下来用idea创建JavaWeb项目来演示一下:

演示

创建JavaWeb项目(2017版本为例)

1. 打开 IntelliJ IDEA

启动 IntelliJ IDEA 2017,并选择 “Create New Project” 来创建一个新的项目。

2. 选择项目类型

在创建项目时,选择 “Java Enterprise” 模板。这是用于创建 Java Web 项目的模板。

在左侧栏中选择 “Java Enterprise”

在右侧的选项中,确保选中 “Web Application” 功能模块(即勾选 “Web Application”)。

3. 配置框架

普通JavaWeb项目架构:

MyJavaWebProject/
├── src/                # Java 源代码
├── web/                # Web 资源
│   ├── WEB-INF/        # Web 应用配置
│   │   └── web.xml     # 部署描述符
│   └── index.jsp       # 默认页面
└── lib/                # 依赖的 JAR 文件

所以是需要我们手动去配置WEB-INF目录和web.xml文件:
 

这里web.xml里面的约束也需要我们手动添加(由于web.xml里面的约束都是一样的,所以我们可以去直接复制任意其他项目里web.xml里的约束来用)

 在这里提供了3.1版本的约束:

<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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1">
</web-app>

部署tomcat:

 

如果以前没有设置过的话请参见这篇博客中的步骤:部署JavaWeb项目(Ⅱ)-CSDN博客

运行项目:

项目会先加载web.xml文件,然后显示的下面结果是默认存在的index.jsp(由于没做任何编写处理,所以这里显示的是初始的界面内容。)

题外话 :

因为2017版本的idea版本较低,所以像maven这种架构的项目里面的基础目录并不会自动生成,需要手动添加。

如下是maven的架构:

MyJavaWebProject/
├── src/
│   ├── main/
│   │   ├── java/          # 存放 Java 源代码
│   │   ├── resources/     # 存放资源文件(如配置文件)
│   │   └── webapp/        # 存放 Web 资源(如 JSP、HTML、CSS)
│   │       ├── WEB-INF/   # Web 应用配置
│   │       │   └── web.xml
│   │       └── index.jsp
└── lib/                 # 存放依赖的 JAR 文件

配置项目结构

在 IntelliJ IDEA 中,需要手动配置这些目录的用途:

打开项目结构设置

  1. 点击 “File” > “Project Structure”(快捷键:Ctrl + Alt + Shift + S)。

  2. “Project Settings” 中,选择 “Modules”

配置目录用途

“Sources” 标签页中:

  • src/main/java 标记为 “Sources”(蓝色)。

  • src/main/resources 标记为 “Resources”

  • src/main/webapp 标记为 “Resources”

如果没有 src/main/webapp 目录,可以手动创建:

  • 右键点击 src/main,选择 “New” > “Directory/Package”,并命名为 webapp

  • 然后在 “Project Structure” 中将其标记为 “Resources”

当然,上面是maven架构的手动配置情况,而我们在此演示的JavaWeb用不到这么多。

二、Servlet初识(熟练)

1.servlet说明

定义:Servlet 是运行在 Web 服务器(如 Tomcat)中的小型 Java 程序,用于处理通过 HTTP 协议接收到的客户端请求。

实现:Servlet 需要实现 javax.servlet.Servlet 接口,并在 web.xml 文件中进行部署,以便 Web 服务器能够识别和调用。

2.Servlet 接口方法

javax.servlet.Servlet 接口定义了以下五个方法,用于控制 Servlet 的生命周期和请求处理:

方法签名描述调用时机
void init(ServletConfig config)初始化 Servlet 实例。用于执行 Servlet 的初始化工作。Servlet 实例被创建后立即调用一次。
void service(ServletRequest req, ServletResponse res)处理客户端请求。负责接收请求和返回响应。每次处理请求时调用。
void destroy()销毁 Servlet 实例。用于释放资源和执行清理工作。Servlet 实例被销毁前调用一次。
ServletConfig getServletConfig()获取 Servlet 配置信息。返回一个 ServletConfig 对象。需要时调用,通常在 init() 方法中保存。
String getServletInfo()获取 Servlet 信息。返回一个描述 Servlet 的字符串。需要时调用,通常用于获取 Servlet 描述。

引申问题:什么是初始化?

一个“一开始就要干的事”,e.g 进游戏前的登录 e.g 去自习室时开灯(不管是谁都要先完成的动作),那么就将这个方法编写进初始化里面,即一调用这个类,初始化里的方法就会完成。

3.创建Servlet

第一步:常见HelloServlet实现Servlet的接口,实现接口中的方法;

package cn.tx.servlet;import javax.servlet.*;
import java.io.IOException;public class Servlet1 implements Servlet { //实现servlet接口@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

第二步:配置servlet的访问路径;

在约束里面编写:

<?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_3_1.xsd"version="3.1"><servlet><servlet-name>hello</servlet-name><servlet-class>cn.tx.servlet.Servlet1</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>
</web-app>

4.JavaWeb请求响应流程

 接着:

当 Tomcat 接收到请求(如 http://localhost:8080/servlet_pro/logon),它会查找项目中的 web.xml 文件,通过请求路径(如 /logon)匹配 <url-pattern> 来定位相应的 Servlet。

Tomcat 找到匹配的 <servlet-mapping>,确定 <servlet-name>(如 login)。

根据 <servlet-name>,在 <servlet> 配置中找到对应的 <servlet-class>(如 com.rl.servlet.LoginServlet)。

接下来:

如果 Servlet 实例已存在,Tomcat 直接使用它处理请求。

如果不存在,Tomcat 通过反射创建实例,并将其存入 Servlet 池中,然后调用 service() 方法处理请求。

5.servlet生命周期

Servlet 基础

  • 定义:Servlet是服务器端的Java程序,用于处理HTTP请求和生成响应。

  • 接口:必须实现javax.servlet.Servlet接口。

  • 部署:需要在web.xml文件中配置,以便Tomcat等服务器识别和调用。

Servlet 接口方法

Servlet接口包含以下三个核心方法,定义了Servlet的生命周期:

  1. init(ServletConfig config)

    • 作用:初始化Servlet。

    • 生命周期:在Servlet实例创建后调用一次。

  2. service(ServletRequest request, ServletResponse response)

    • 作用:处理客户端请求。

    • 生命周期:每次请求时调用。

  3. destroy()

    • 作用:销毁Servlet实例。

    • 生命周期:在Servlet实例销毁前调用一次。

Servlet 生命周期

Servlet的生命周期由以下三个阶段组成:

  1. 初始化阶段:调用init()方法进行初始化。

  2. 请求处理阶段:调用service()方法处理客户端请求。

  3. 销毁阶段:调用destroy()方法进行销毁。

Servlet 实例管理

  • 实例创建:默认情况下,Servlet实例在第一次被请求时由Tomcat创建。

  • 实例销毁:当Tomcat决定不再需要Servlet实例时(如服务器关闭或重新部署应用),会销毁实例。

Tomcat 的角色

Tomcat作为Servlet容器,负责以下任务:

  • 创建、调用和销毁Servlet实例。

  • 调用Servlet的生命周期方法(init()service()destroy())。

  • 管理Servlet的生命周期和请求处理。

总结

Servlet的生命周期由Tomcat管理,开发者通过实现javax.servlet.Servlet接口中的方法来控制Servlet的行为。开发者需要关注的主要方法是init()service()destroy(),这些方法在Servlet的生命周期中由Tomcat自动调用。开发者需要在web.xml中配置Servlet,以便Tomcat能够识别和调用。

三、HttpServlet(精通)

1.HttpServlet介绍

因为现在我们的请求都是基于HTTP协议的,所以我们应该专门为HTTP请求写一个Servlet做为通用父类。

 由上图我们可以看出,以后再写Servlet 可以直接继承HttpServlet

  • Servlet   一个标准
  • GenericServlet  是Servlet接口子类
  • HttpServlet  是GenericServlet子类,一个专门处理Http请求的Servlet

2.​​​​​​​Http请求方法

方法描述
GET通过请求的 URI 获取资源。
POST向服务器提交新内容,通常用于创建新资源。
PUT修改指定的资源。
DELETE删除指定的资源。
CONNECT用于代理服务器进行 SSL 传输(如建立 SSL 隧道)。
OPTIONS询问服务器关于目标资源的通信选项。
PATCH对资源进行部分修改。
TRACE回显服务器收到的请求,主要用于测试或诊断。
HEAD类似于 GET 请求,但不返回响应主体内容,用于获取元数据。

 3.​​​​​​​创建HttpServlet

第一种:创建一个类继承HttpServlet

package cn.tx.servlet;import javax.servlet.http.HttpServlet;public class Servlet2 extends HttpServlet{}

配置Servlet映射路径:

<servlet><servlet-name>hello2</servlet-name><servlet-class>cn.tx.servlet.Servlet2</servlet-class>
</servlet><servlet-mapping><servlet-name>hello2</servlet-name><url-pattern>/hello2</url-pattern>
</servlet-mapping>

第二种:IDEA直接创建servlet

填写servlet名称:

 

创建完成,自己填写映射路径

4.servlet创建顺序

有些Servlet需要在Tomcat启动时就被创建,而不是第一次访问时被创建,那么可以在web.xml文件中配置<servlet>元素。

在<servlet>元素中添加子元素<load-on-startup>元素!

<servlet><servlet-name>hello</servlet-name><servlet-class>cn.tx.servlet.Servlet1</servlet-class><load-on-startup>1</load-on-startup>
</servlet>

总结

  • 加载顺序:Servlet 的加载顺序由 <load-on-startup> 元素的值决定,值越小,越早加载。

  • 应用启动加载:所有指定了 <load-on-startup> 的 Servlet 将在 Web 应用启动时被加载,而不是在第一次请求时。

  • 日志验证:可以通过在 init() 方法中添加日志输出来验证 Servlet 的加载顺序。

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

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

相关文章

Linux基础开发工具的使用(apt、vim、gcc、g++、gdb、make、makefile)

Linux软件包管理器–apt Linux安装软件的方式 在Linux下安装软件的方法有以下三种&#xff1a; 下载到程序的源代码&#xff0c;自己编译出可执行程序获取deb安装包、然后使用dpkg命令安装。&#xff08;不解决依赖关系&#xff09;通过apt进行安装软件。 小知识点&#xf…

C/C++ | 每日一练 (2)

&#x1f4a2;欢迎来到张胤尘的技术站 &#x1f4a5;技术如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 C/C | 每日一练 (2)题目参考答案封装继承多态虚函数底…

【前端框架】vue2和vue3的区别详细介绍

Vue 3 作为 Vue 2 的迭代版本&#xff0c;在性能、语法、架构设计等多个维度均有显著的变革与优化。以下详细剖析二者的区别&#xff1a; 响应式系统 Vue 2 实现原理&#xff1a;基于 Object.defineProperty() 方法实现响应式。当一个 Vue 实例创建时&#xff0c;Vue 会遍历…

基于Spring Boot的农事管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!

2025年2月19日 知名博主Dwarkesh Patel对话微软CEO萨蒂亚纳德拉 在最新访谈释放重磅信号&#xff1a;AI将掀起工业革命级增长&#xff0c;量子计算突破引爆材料科学革命&#xff0c;游戏引擎进化为世界模拟器。 整个视频梳理出几大核心观点&#xff0c;揭示科技巨头的未来十年…

HBase Shell

目录 1. HBase常用命令1.1 create命令1.2 list命令1.3 describe命令1.4 put命令1.5 get命令1.6 scan命令1.7 count命令1.8 exists命令1.9 修改表结构1.10 delete命令1.11 deleteall命令1.12 truncate命令1.13 disable、drop命令1.14 status命令1.15 version命令 2. HBase Shell…

MATLAB基础学习相关知识

MATLAB安装参考&#xff1a;抖音-记录美好生活 MATLAB基础知识学习参考&#xff1a;【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分&#xff1a;变量定义和基本运算 生成矩阵&#xff1a; % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…

基于ffmpeg+openGL ES实现的视频编辑工具-opengl相关逻辑(五)

在我们的项目中,OpenGL ES 扮演着至关重要的角色,其主要功能是获取图像数据,经过一系列修饰后将处理结果展示到屏幕上,以此实现各种丰富多样的视觉效果。为了让大家更好地理解后续知识,本文将详细介绍 OpenGL 相关代码。需要注意的是,当前方案将对 OpenGL 的所有操作都集…

dify安装

官网教程 https://github.com/langgenius/dify/blob/main/README_CN.md 1、下载源码 git clone https://github.com/langgenius/dify.git 2、进入docker目录 cd dify cd docker cp .env.example .env修改nginx对外端口配置 修改为9000 最后执行&#xff1a;docker compo…

前端导出word文件,并包含导出Echarts图表等

基础导出模板 const html <html><head><style>body {font-family: Times New Roman;}h1 {text-align: center;}table {border-collapse: collapse;width: 100%;color: #1118FF;font-weight: 600;}th,td {border: 1px solid black;padding: 8px;text-align: …

若依Flowable工作流版本监听器使用方法

1.前言 本文详细介绍如何在若依Flowable工作流版本&#xff08;RuoYi-Vue-Flowable&#xff09;中配置执行监听器和任务监听器。是以我二次开发的代码为基础&#xff0c;介绍如何配置监听器&#xff0c;已解决源码在新增或删除监听器出现的问题&#xff0c;如果需要二次开发的…

VSCode自定义快捷键和添加自定义快捷键按键到状态栏

VSCode自定义快捷键和添加自定义快捷键按键到状态栏 &#x1f4c4;在VSCode中想实现快捷键方式执行某些指令操作&#xff0c;可以通过配置组合式的键盘按键映射来实现&#xff0c;另外一种方式就是将执行某些特定的指令嵌入在面板菜单上&#xff0c;在想要执行的时候&#xff0…

【C语言】指针(5)

前言&#xff1a;上篇文章的末尾我们使用了转移表来解决代码冗余的问题&#xff0c;那我们还有没有什么办法解决代码冗余呢&#xff1f;有的这就是接下来要说的回调函数。 往期文章: 指针1 指针2 指针3 指针4 文章目录 一&#xff0c;回调函数二&#xff0c;qsort实现快速排序1…

【python】网页批量转PDF

安装wkhtmltopdf 网站&#xff1a;wkhtmltopdf wkhtmltopdf http://www.baidu.com/ D:website1.pdf 安装pdfkit库 pip install pdfkit 批量转换代码 import os import pdfkit path_wkthmltopdf rE:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe config pdfkit.configu…

游戏引擎学习第113天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板&#xff1a;优化的基本过程 在游戏编程中&#xff0c;优化是一个非常重要的学习内容&#xff0c;尤其是想要成为专业开发者时。优化的核心是理解代码的执行速度&#xff0c;以及如何提升其性能。在这个阶段&#xff0c;已经…

通义灵码AI程序员

通义灵码是阿里云与通义实验室联合打造的智能编码辅助工具&#xff0c;基于通义大模型技术&#xff0c;为开发者提供多种编程辅助功能。它支持多种编程语言&#xff0c;包括 Java、Python、Go、TypeScript、JavaScript、C/C、PHP、C#、Ruby 等 200 多种编码语言。 通义灵码 AI…

SeaTunnel社区「Demo方舟计划」首期活动上线—— MySQL CDC实时同步至PostgreSQL实战

引言 凌晨2点&#xff0c;某电商公司的数据工程师小李正对着屏幕抓狂——业务部门临时要求将MySQL的订单表实时同步到PostgreSQL进行分析&#xff0c;众所周知&#xff0c;在数据驱动的业务场景中&#xff0c;异构数据源同步是高频刚需。 以MySQL到PostgreSQL的CDC同步为例&a…

利用websocket检测网络连接稳定性

浏览器中打开F12&#xff0c;控制台中输入以下内容 > 回车 > 等待结果 连接关闭 表示断网 let reconnectDelay 1000; // 初始重连间隔 let pingInterval null; let socketManuallyClosed false; // 标志是否手动关闭function createWebSocket() {if (socketManuallyCl…

Unity shader glsl着色器特效之 模拟海面海浪效果

一个简单的海浪效果&#xff0c;通过波的叠加实现水面起伏的动效&#xff0c;根据波峰斜率来为浪花着色&#xff0c;再根据法线贴图和水花贴图来和调整uv的平滑移动来增强海浪移动的细节。如果需要更逼真的效果可以考虑在满足浪花触发的地方添加粒子系统 前置效果图 因为是很久…