JavaWeb_HTTP+Tomcat+Servlet

news2024/11/16 21:33:20

一、JavaWeb技术栈

B/S 架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可
好处:易于维护升级:服务器端升级后,客户端无需任何部署就可以使用到新的版本
 

静态资源:HTML、CSS、JavaScript、图片等。负责页面展现
动态资源:Servlet、JSP 等。负责逻辑处理
数据库:负责存储数据
HTTP协议:定义通信规则
Web服务器:负责解析 HTTP 协议,解析请求数据,并发送响应数据

二、HTTP 

1.概述

概念:HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则

HTTP 协议特点:
1.基于TCP协议:面向连接,安全
2.基于请求-响应模型的:一次请求对应一次响应
3.HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
        ·缺点:多次请求间不能共享数据。(cookie和session能解决这个问题)
        ·优点:速度快

2.HTTP请求数据格式

请求行:请求数据的第一行。其中GET表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本
请求头:第二行开始,格式为key:value形式。
请求体: POST请求的最后一部分,存放请求参数

GET / HTTP/1.1 
Host: www.itcast.cn 
Connection: keep-alive 
User-Agent: Mozilla/5.0 Chrome/91.0.4472.106
…


POST / HTTP/1.1 
Host: www.itcast.cn 
Connection: keep-alive 
Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 Chrome/91.0.4472.106

username=superbaby&password=123456

GET请求和 POST请求区别:
GET请求请求参数在请求行中,没有请求体。POST请求请求参数在请求体中
GET请求请求参数大小有限制,POST没有

常见的HTTP 请求头:
Host: 表示请求的主机名
User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...) like Gecko;
Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

3.HTTP响应数据格式

响应数据分为3部分:
响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述
响应头:第二行开始,格式为key:value形式
响应体: 最后一部分。存放响应数据
 

HTTP/1.1 200 OK
Server: Tengine
Content-Type: text/html
Transfer-Encoding: chunked…

<html>
<head>
     <title></title>
</head>
<body></body>
</html>

常见的HTTP 响应头:
Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
Content-Length:表示该响应内容的长度(字节数);
Content-Encoding:表示该响应压缩算法,例如gzip;
Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒

三、Tomcat

1.Web服务器

Web服务器是一个应用程序(软件),对 HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”

 2.Tomcat

官网:https://tomcat.apache.org/

作用:

封装HTTP协议操作,简化开发

可以将web项目部署到服务器中,对外提供网上浏览服务

Tomcat是一个轻量级的Web服务器,支持Servlet/JSP少量JavaEE规范,也称为Web容器,Servlet容器

使用等方法后期自行学习吧

四、Servlet

1.概述

Servlet 是 Java提供的一门动态web资源开发技术

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

2.快速入门

①创建web项目,导入Servlet依赖

②定义一个类实现Servlet接口,并重写接口中所有方法,需要在service方法中定义实现方法

③在类上使用@WebServlet注解,配置Servlet的访问路径

④启动Tomcat,浏览器输入URL+访问路径,访问该Servlet

3.Servlet执行流程

http://localhost:8080 + /项目名 + /Servlet访问路径

Servlet由Web服务器创建,Servlet方法由Web服务器调用

服务器调用Servlet中的service方法

4.Servlet生命周期

Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
4.服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收

5.Servlet方法

初始化方法,在Servlet被创建时执行,只执行一次

void init(ServletConfig config) 

提供服务方法, 每次Servlet被访问,都会调用该方法

void service(ServletRequest req, ServletResponse res) 

销毁方法,当Servlet被销毁时,调用该方法。在内存释放或服务器关闭时销毁Servlet

void destroy() 

获取ServletConfig对象

ServletConfig getServletConfig() 

获取Servlet信息

String getServletInfo() 

6.Servlet体系结构

我们开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet,会继承HttpServlet

HttpServlet中要根据请求方式的不同,调用不同方法

HttpServlet 原理

HTTP 协议中,GET 和 POST 请求方式的数据格式不一样,将来要想在Servlet中处理请求参数,得在service方法中判断请求方式,并且根据请求方式的不同,分别进行处理:

//获取请求方式
String method = req.getMethod();
//判断请求参数,不同请求方式,进行不一样的处理逻辑
if("GET".equals(method)){
    //执行GET请求方式的处理逻辑
    doGet(req, resp);
}else if("POST".equals(method)){
    //执行POST请求方式的处理逻辑
    doPost(req, resp);
}

HttpServlet使用步骤:

①继承HttpServlet

②重写doGet和doPost方法

7.Servlet urlParrten配置

Servlet 要想被访问,必须配置其访问路径(urlPattern)

一个Servlet,可以配置多个 urlPattern

//例如:
@WebServlet(urlPattern = {"/demo1","/demo2"})

urlPattern匹配规则:

①精确匹配:配置路径和访问路径完全相同

 

②目录匹配:配置路径最后以' /* '结尾

 

③扩展名匹配

 

④任意匹配

 

优先级:        精确路径 > 目录路径 > 扩展名路径 > /* > /

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

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

相关文章

第三章.逻辑回归—正确率/召回率/F1指标,非线性逻辑回归代码

第三章.逻辑回归 3.2 正确率/召回率/F1指标 正确率(Precision)和召回率(Recall)广泛应用于信息检索和统计学分类领域的两个度量值&#xff0c;用来评价结果的质量。 1.概念&#xff1a; 1).正确率&#xff1a; 检索出来的条目有多少是正确的 2).召回率&#xff1a; 所有正…

Notepad++ 编写html代码快捷键切换到浏览器查看

一、设置Notepad 快速启动浏览器并且运行html1.找到Notepad的安装路径&#xff0c;找到Notepad 的shortcuts.xml文件。2.如图所示&#xff0c;用记事本打开【千万不要用Notepad打开】。打开之后可以看到里面的代码。以启动连接 chrome浏览器为例&#xff0c;选择对应的chrome 代…

【金融学】Financial Markets

Financial MarketsClass1 Financial Markets IntroductionWhat is Financial MarketsFinancial Topics课程目标Class1 Financial Markets Introduction What is Financial Markets “金融不仅仅是关于赚钱&#xff0c;金融应该是关于使某事发生” ----Robert Shiller. Financi…

TCP的3次握手细节

一、什么是TCP的三次握手在网络数据传输中&#xff0c;传输层协议TCP是要建立连接的可靠传输&#xff0c;TCP建立连接的过程&#xff0c;我们称为三次握手。三次握手的具体细节1. 第一次握手&#xff1a;Client将SYN置1&#xff0c;随机产生一个初始序列号seq发送给Server&…

虹科方案|使用 Thunderbolt™ 实现 VMware vSAN™ 连接

一、引言ATTO的Thunderbolt支持VMware ESXi 和ThunderLink产品线&#xff0c;使我们能够创建基于Mac的vSphere设置&#xff0c;从而能够为我们的macOS服务器提供虚拟化服务。 将虚拟硬件、快照和Veeam备份与macOS服务器的简单性相结合&#xff0c;将改变SMB市场的游戏规则。二、…

SVPWM控制技术+Matlab/Simulink仿真详解

文章目录前言一、SVPWM的控制原理二、空间矢量的概念三、电压与磁链空间矢量的关系四、三相逆变器的基本电压空间矢量五、SVPWM 算法的合成原理六、SVPWM 算法推导6.1.七段式SVPWM6.2.五段式SVPWM&#xff08;又称DPWM&#xff09;七、SVPWM 算法实现7.1.合成矢量Uref所处扇区的…

【手写 Promise 源码】第十篇 - Promise.prototype.catch 和 Promise.prototype.finally 的实现

theme: fancy 一&#xff0c;前言 上篇&#xff0c;主要实现了 Promise 的两个静态 API&#xff08;类方法&#xff09;&#xff1a;Promise.resolve 和 Promise.reject&#xff0c;主要涉及以下几个点&#xff1a; Promise.resolve 创建并返回一个成功的 promise&#xff1…

WebDAV之葫芦儿·派盘+纯纯写作

纯纯写作 支持WebDAV方式连接葫芦儿派盘。 推荐一款简单的纯文本编辑软件,纯粹、有安全感、随时、绝对不丢失内容、具备良好的写作体验。界面非常简洁,且功能齐全,旨在给用户们提供贴心、舒适的写作服务。纯纯写作可以实现在Windows桌面PC, Android设备上同步的移动办公软件…

梦熊杯-十二月月赛-钻石组-B.卷王

B. Problem B.卷王(study.cpp) 内存限制&#xff1a;256 MiB 时间限制&#xff1a;1000 ms 标准输入输出 题目类型&#xff1a;传统 评测方式&#xff1a;文本比较 题目描述&#xff1a; 在某个群里&#xff0c;有一个卷王&#xff0c;他很关心群友的学习成绩。 他扬言…

Web API请求查询字符串超长问题

调用Web API时返回“HTTP Error 404.15 - Not Found”的错误提示&#xff0c;如下截图&#xff1a; 经检查&#xff0c;传递的查询参数字符长度超过IIS默认最大查询字符串长度的设置&#xff0c;IIS服务器的 maxQueryString&#xff08;单位&#xff1a;字节&#xff09; 设置&…

一杯白酒搅动的资本江湖

王家卫的电影《东邪西毒》中有句经典台词&#xff1a;酒越喝越暖&#xff0c;水越喝越寒。江湖刀光剑影&#xff0c;唯有酒让武林人士在奔波途中心中一暖。然而&#xff0c;在白酒搅动的资本江湖中&#xff0c;酒企已经很久没有感受到上市的“暖意”了。自2016年金徽酒挂牌上交…

网络基础2--HTTP协议详解

目录 一、自定制协议 二、TCP粘包问题 2.1. 定长结构体和非定长结构体在发送时的区别 2.2. 那么为什么内存不连续的结构体不能直接使用send发送呢&#xff1f; 2.2. 那我们怎样去接收不定长的数据呢&#xff1f; 2.3. 我们怎样去接收不连续的内存呢&#xff1f; 2.4序列化和…

shiro权限框架介绍以及springboot整合shiro

What is Apache Shiro? Apache Shiro is a powerful and flexible open-source security framework that cleanly handles authentication, authorization, enterprise session management and cryptography. Apache Shiro’s first and foremost goal is to be easy to use…

LDO的dropout voltage

目录从一个设计错误谈起Dropout压降从芯片内部电路结构理解dropout压降MOS管 > 低dropout压降的LDO进一步降低dropout压降的方法在系统设计中&#xff0c;电源管理是不可或缺的&#xff0c;而LDO&#xff08;线性稳压器&#xff09;是电源管理器件中及其重要的一类器件。其应…

【JUC系列】线程变量ThreadLocal详解

ThreadLocal简介 ThreadLocal叫做线程变量&#xff0c;意思是ThreadLocal中填充的变量属于当前线程&#xff0c;该变量对其他线程而言是隔离的&#xff0c;也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本&#xff0c;那么每个线程可以访…

Java-基础-2.常用类

一&#xff1a;object 他是java中最基础&#xff0c;最核心的类。在java类中&#xff0c;为申明extends&#xff0c;默认 extends Object。方法。 3.1 toString方法 public String toString()方法&#xff0c;其返回值是 String 类型&#xff0c;描 述当前对象的有关信息。 3.…

Java中的多态及应用示例

Java中的多态及实现示例简介实现示例instance of&#xff08;待补&#xff09;补入Java多态 简介 【预留&#xff08;业务逻辑&#xff09;接口的抽象类】对象 new 【实现了该 预留&#xff08;业务逻辑&#xff09;接口】的【预留业务逻辑接口的抽象类的子类】的 对象&…

Java_Git:5. 在IntelliJ IDEA中使用git

目录 1 在Idea中配置git 2 将工程添加至git 2.1 创建工程 2.2 创建本地仓库 2.3 将工程添加至本地仓库 2.4 推送到远程 3 从远程仓库克隆 4 从服务端拉取代码 1 在Idea中配置git 安装好IntelliJ IDEA后&#xff0c;如果Git安装在默认路径下&#xff0c;那么idea会自动找…

C语言学习笔记-数据类型

在 C 语言中&#xff0c;数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间&#xff0c;以及如何解释存储的位模式。 C数据可以从两方面宽泛的看&#xff1a;一、变量和常量&#xff1b;二、数据类型 从定义出发&#xff0c;变…

打造数字时代的“诺亚方舟”

玛雅人关于2012世界末日的预言除了提供给好莱坞灵感&#xff0c;拍摄了令人震撼的灾难片《2012》之外&#xff0c;似乎没有留下什么&#xff0c;人们已经渐渐淡忘了世界末日的说法。 但现实世界中却接二连三地在发生着重大灾难&#xff1a;2018年巴西国家博物馆大火&#xff0c…