JavaWeb之tomcarHTTP

news2024/9/22 13:35:58

1 DOM4j Xml解析
1.1 JAXP
 JDK内置,不需要导入第三方jar包,简单工具优先选择。
 支持两种解析方式:DOM、SAX
1.1.1 JAXP—DOM
加载xml 生成一个DOM树。获得整个文档的描述对象Document
解析 api

  1. 获得工厂
    DocumentBuilderFactory –》 .newInstance()
  2. 获得解析器  factory.newDocumentBuilder()
  3. 解析  Document builder.parser(new File(“…xml”))
  4. 遍历
    NodeList document.getElementsByTagName(“”);
    nodeList.getLength() nodeList.item(i)
    document.getDocumentElement() 根元素
    element.getChildNodes()
    1.1.2 JAXP–SAX
    逐行解析,事件触发。每解析一行,将触发一个事件,之后使用完成将释放资源。只能进行读操作。
    核心api操作
  5. 获得工厂 SAXParserFactory.newInstance()
  6. 获得解析器 SAXParser -> factory.newSAXParser()
  7. 解析,指定处理类,提供事件 saxParset.parser(new File(xml), new DefaultHanlder())
    startElement / characters() / endElement
    1.2
    Dom4j 非常流行第三方解析工具包
    核心api
  8. 核心类 SAXReader
  9. 解析获得document , read(new File(xml))
  10. 操作
    根元素 getRootElement()
    获得所有子元素 elements()
    获得指定名称所有子元素 elements(“title”)
    获得指定名称的一个元素 element(…)
    设置属性 addAttribute(name,value)
    添加元素 addElement(“”)
    标签体内容 getText() | setText()
  11. 回写
    XmlWriter(out , OutputFormat)
    writer(document)
    注意:关闭流

2 XML约束方式:Schema
2.1 介绍
Schema与dtd都是约束xml内容,通过约束编写规定xml内容。
XML Schema 是基于 XML 的 DTD 替代者。
基于xml:文档内容为xml,扩展名为其他的。
希望使用xml进行内容描述,但内容有很多,需要特殊的编辑器,扩展名就是用于确定编辑器的。
当约束文档读取到内存之后,就是xml的。
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。
Schem扩展名:*.xsd

2.2 Xml关联schema

3 Web入门
3.1 介绍
WEB采用B/S通信模式,通过超文本传送协议(HTTP, Hypertext transport protocol)进行通信。无状态通信。
通信模式:B/S、C/S
B/S : Browser/Server 浏览器/服务器模式。
常见应用:淘宝、web QQ等
特点:浏览器不需要更新内容,显示效果等更改。效果一般的。
B/S是特殊的C/S –浏览器有内置不需要安装的。
C/S:client/server 客户端/服务器模式
常见应用:QQ、大型游戏 等
特点:客户端必须要更新(下载)。画面、特效很炫。
使用HTTP协议(超文本传输协议),下午主要讲解
浏览器与服务器通信,采用 无状态,及:当服务器关闭时,浏览器不知道的,只有当再次请求时才知晓。
3.2 Web资源
通过浏览器访问服务器端的资源
服务器端资源分类:动态资源、静态资源
静态资源:html、css、javascript、xml等,编写完成之后固定的。
动态资源:程序运行时生成的资源。例如:jsp、php、aspx等
例如:用户登录,每一个人看到登录信息不能,其他内容相同的。
3.3 URL
浏览器 必须通过请求路径 访问服务器端资源。
请求路径一般称为URL
URL:统一资源定位符,用于全球唯一标记一个资源命名方式。
格式:协议://ip地址:端口/资源相对路径?参数
Ip地址
本地ip:127.0.0.1,表示自己的计算机
局域网ip:192.168.17.95 (不用花钱的,需要提供设备)
外网ip:182.48.112.83, 上网使用ip (必须花钱的)
域名:提供一个快速访问名称,别名。
DNS:域名解析服务(服务器),将域名和 ip绑定。
端口:0—65535 之间任何数,但1024之前预留系统,不建议使用。
TCP端口、UDP端口
例如:http://192.168.17.95:8080/day06/a/b/1.html?username=jack&password=1234
对比:URI:统一资源标识符,用于描述一个相对路径。
URL 是URI的子集。
例如: /a/b/1.html – URI

3.4 常见web服务器
WebLogic : Oracle ,支持JavaEE 13核心技术,但收费。
WebSphere :IBM,支持JavaEE 13核心技术,但收费。
tomcat:免费开源,支持JavaEE规范:servlet 和 jsp
其他服务器
在这里插入图片描述

4 Tomcat
4.1 入门
4.1.1 安装
下载:http://archive.apache.org/dist/tomcat/
在这里插入图片描述

将下载好的zip文件解压,到任意位置(建议:路径没有中文和空格)

在这里插入图片描述

注意:  可以运行的tomcat源码
	Tomcat 使用java开发的,将tomcat6.zip 解压导入myeclipse即可。

4.1.2 Tomcat安装目录
在这里插入图片描述

bin 脚本目录,启动和停止脚本。
startup.bat 启动脚本
shutdown.bat 停止脚本

在这里插入图片描述

conf 配置目录
核心配置文件:server.xml
web项目默认配置文件:web.xml
账号配置文件:tomcat-users.xml
环境配置(上下文配置):context.xml  --》 content内容
lib 依赖jar包,tomcat支持servlet和jsp,及oracle提供规范(接口),tomcat编写实现类。

logs 日志目录,如果出错,可以阅读
temp 临时目录
webapps : tomcat用于存放web项目的目录
work:tomcat处理jsp的工作目录。

4.1.3 访问

在浏览器的地址栏输入:http://127.0.0.1:8080/
或:http://localhost:8080/  localhost 本地域名,与 127.0.0.1 之间绑定。
4.1.4 配置JAVA_HOME
注意:必须配置JAVA_HOME
如果没有配置,双击“startup.bat”闪烁之后没有效果,日志中没有记录

在这里插入图片描述
配置错误
在这里插入图片描述

4.2 myeclipse整合tomcat
4.2.1 配置tomcat
在这里插入图片描述

4.2.2 启动tomcat
相当于 执行 %tomcat%/bin/startup.bat
在这里插入图片描述
在这里插入图片描述

4.2.3 发布web项目
4.2.3.1 方式1:一个项目可以选择多个服务器

在这里插入图片描述

4.2.3.2 方式:一个服务器可以有多个项目
在这里插入图片描述

4.3 web项目
项目名称
| – WEB-INF 目录,可以省略。通过浏览器不能直接访问。(tomcat进行过滤)
| – classes 目录,用于存放web项目的class文件。类似与java项目bin目录
| – lib 目录,用于存放web项目依赖第三方jar包
| – web.xml 文件,当前web项目的配置文件
对比:%tomcat%/conf/web.xml tomcat管理的所有web项目的默认目录。如果自己没有配置,将使用默认。
给当前web项目配置欢迎页面

<?xml version="1.0" encoding="ISO-8859-1"?>

<welcome-file-list>
    <welcome-file>1.html</welcome-file>
</welcome-file-list>
![在这里插入图片描述](https://img-blog.csdnimg.cn/672311ab84744910b05429dd06086457.png)

4.4 tomcat 常见配置
4.4.1 配置账号
点击 管理 所有的web项目时,需要输入账号和密码,点击取消tomcat会给出提示
%tomcat%/conf/tomcat-users.xml 添加 角色role 和 用户 user

<?xml version='1.0' encoding='utf-8'?>
访问时,需要使用webapps管理web项目的名称。例如:manager、xxx等
/  表示是  ROOT 目录,必须是大写的。tomcat规定的。

如果使用# http://localhost:8080 浏览器将自动添加/,表示访问ROOT目录。
4.4.2 tomcat端口占用
tomcat默认端口号:8080
异常:
java.net.BindException: Address already in use: JVM_Bind :8080 表示8080端口已经被使用了,及占用了
查询是否已经占用了
方式1:cmd --》 netstat –abo
方式2:使用360

注意:一个程序可以占用多个端口,一个端口只能被一个程序占用。
修改端口号,如果在一台计算机上运行两个tomcat,必须修改3个端口号。
文件位置:%tomcat%/conf/server.xml

 http协议默认端口:80

4.4.3 虚拟路径
在tomcat配置其他位置处的一个项目,访问路径相当于虚拟的
访问路径:http://localhost:8080/webmy/1.html ,访问的是 F盘下的内容
方式1:在%tomcat%/conf/server.xml 配置虚拟路径 – 必须重启tomcat

path相当于项目名称
docBase F盘指定的路径,直接从操作系统复制即可,必须设置到web项目的根,及目录下可以看到WEB-INF
注意:Context 必须是大写
标签必须结束
path就是名称,不需要/
方式2:在%tomcat%/conf/Catalina/localhost/xxx.xml 文件
位置:在%tomcat%/conf/引擎名称/主机名称/xxx.xml 文件
文件名:自定义,xml文件就是需要访问路径
文件内容:

访问路径:http://localhost:8080/abc/1.html  f:\myweb\1.html文件

xml位置通过 %tomcat%\conf\server.xml 配置获得
tomcat处理服务名称:catalina
使用引擎名称,catalina
主机名称:localhost

4.4.4 虚拟主机
思考:F盘有多个项目,其中某一个项目,访问路径如何编写成 www.itheima.com ???
配置虚拟注解

  </Host>

name 为URL访问域名,appBase表示访问所有项目的父目录。
修改hosts文件
本地计算机配置文件,hosts文件

  • 用于配置IP和域名对应关系

  • 位置:C:\Windows\System32\drivers\etc\hosts
    访问路径:http://www.itheima.com:8080/myweb/1.html

    通过学习配置信息修改访问路径

  1. 省略“1.html”,配置欢迎页面。给当前项目的添加web.xml 配置
  2. 省略“/myweb” 修改项目名称:ROOT
  3. 省略“8080”,HTTP协议默认端口80,修改端口号
    4.5 tomcat版本
    在这里插入图片描述

4.6 默认主机
 配置虚拟注解,http://www.itheima.com:8080 / http://localhost:8080 通过操作系统hosts文件关联到127.0.0.1
 如果此时使用 http://127.0.0.1:8080 进行访问,使用localhost还是itheima ??

5 HTTP协议
5.1 安装软件

解压所有内容,点击下一步进行安装。(建议:将IE浏览器设置默认)
httpwatch IE浏览器插件,用于查看HTTP协议详情。

5.2 HTTP协议介绍
基于TCP传输协议。TCP协议采用三次握手建立连接。
浏览器 –》 服务器 ,服务器在吗?
服务器 –》 浏览器,浏览器我在,你呢?
浏览器—》 服务器 ,服务器我也在。
默认端口:80
基于请求—响应模式协议
浏览器发送请求,服务器接收
服务器响应给浏览器,浏览器获得服务器传回来的数据,
一次请求结束
请求/响应成对,必须先有请求,再有响应
协议版本:1.0 、1.1
1.0 一次连接一次请求
1.1 一次连接,可以多次 请求
注意:浏览器与服务器之间的连接,有浏览器自己维护。
window 操作系统 提供给 telnet命令,模拟浏览器建立连接,发送请求过程。
之后使用很少。
在这里插入图片描述

5.3 HTTP协议请求
http请求包括三部分:请求行、请求头、请求体
浏览器将自动生成3部分内容发送给服务器。
在这里插入图片描述

5.3.1 请求行
请求的第一行
例如:GET /demo/1.html HTTP/1.1
格式:请求方式 请求路径 协议/版本
请求方式:7种
常用2种:GET、POST
7中:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
请求路径:为URL之后相对路径
协议/版本:http 1.0和1.1 版本
5.3.2 GET和POST请求对比
GET请求现象:将请求内容,追加到URL之后。
例如:http://localhost:8080/demo/1.html?username=jack&password=1234
请求路径URL长度有限的,GET请求追加的内容有限的。一般:1024字节(1k)
GET请求将‘请求内容’追加在‘请求行’的‘请求路径’上
例如:GET /demo/1.html?username=jack&password=1234 HTTP/1.1

POST请求,将请求内容存在请求体
存在请求体,请求体没有限制,POST可以给服务器发送任意多的数据。

5.3.3 请求头
Accept: text/html,image/* --支持数据类型
Accept-Charset: ISO-8859-1 --字符集
Accept-Encoding: gzip --支持压缩格式
Accept-Language:zh-cn --语言环境
Host: www.itheima.com:80 --访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --缓存时间
Referer: http://www.itcast.com/index.jsp --来自哪个页面、防盗链 – 如果没有通过超链接访问2.html返回null
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 用户数据
Cookie 表示cookie技术
Connection: close/Keep-Alive --链接状态
Date: Tue, 11 Jul 2000 18:23:51 GMT --时间
MIME类型:(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
格式:大类型/小类型;参数
大类型:分7类,表示互联网所有资源。
Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;
Application:用于传输应用程序数据或者二进制数据;
Message:用于包装一个E-mail消息;
Image:用于传输静态图片数据;
Audio:用于传输音频或者音声数据;
Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。
例如:
text/css css文件
text/html html文件
text/javascript js文件
image/* 所有图片
image/jpeg jpg图片
5.3.4 请求体
注意:请求体 与 最后一个请求头之间 存在一个空行
浏览器发送给服务器内容,存放在请求体中
内容格式: k=v&k=v&……
例如:username=jack&password=1234

5.4 HTTP协议响应
3部分:响应行、响应头、响应体
5.4.1 响应行
服务器 响应 浏览器 状态信息描述
例如:HTTP/1.1 200 OK
格式:协议/版本 状态码 状态码对应描述信息
5.4.2 状态码
1xx: 服务器响应浏览器,数据正在发送中。一般使用很少。
2xx: 服务器响应浏览器已经正常结束。常用:200 表示正常。
3xx: 服务器响应浏览器,请求还没有完成,需要浏览器进一步操作,来完成整个请求。
常用状态码:
302 (307):与响应头location 结合完成页面重新跳转。
304:页面读取缓存
4xx: 服务器响应浏览器,浏览器操作有误。
常见:404 页面找不到。(一般请求页面找不到表示用户URL写错)
5xx: 服务器响应浏览器,服务器异常

5.4.3 响应头
Location: http://www.it315.org/index.jsp --跳转方向
Server:apache tomcat --服务器型号
Content-Encoding: gzip --数据压缩
Content-Length: 80 --数据长度
Content-Language: zh-cn --语言环境
Content-Type: text/html; charset=GB2312 --数据类型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --最后修改时间
Refresh: 1;url=http://www.it315.org --定时刷新
Content-Disposition: attachment; filename=aaa.zip --下载
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
Expires: -1 --缓存
Cache-Control: no-cache --缓存
Pragma: no-cache --缓存
Connection: close/Keep-Alive --连接
Date: Tue, 11 Jul 2000 18:23:51 GMT --时间

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

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

相关文章

【MySql】MySql的事务基础篇

文章目录 CURD加控制什么是事物为什么会出现事务事务的版本支持事务的提交方式 CURD加控制 模拟一个买票系统的场景如下所示&#xff1a; MySQL注定会被多个客户端进行访问的&#xff0c;这个是肯定的&#xff0c;存储的都是数据&#xff0c;数据在上层可能有一个线程在用&…

C++17

目录 基本语言特性结构化绑定if和switch初始化器 std::string_view属性[[nodiscard]][[maybe_unused]][[fallthrough]] 模板特性新的标准库组件std::optional<>std::variant<>std::anystd::bytestd::as_const 文件系统库零星新特性 基本语言特性 结构化绑定 概念…

ubuntu安装WPS2019以及解决缺少字体问题

环境&#xff1a;ubuntu22.04.2 LTS 步骤&#xff1a; 1.去官网下载最新的WPS&#xff0c;官网地址如下&#xff1a;WPS Office 2019 for Linux-支持多版本下载_WPS官方网站 2.sudo dpkg -i 安装包.deb 3.安装完成&#xff0c;首次用WPS打开某个文档&#xff0c;会出现如下报…

硬件入门之什么是三极管

硬件入门之什么是三极管 文章目录 硬件入门之什么是三极管一、三极管是什么&#xff1f;&#xff08;百度百科&#xff09;三极管的3种工作状态分别是截止状态、放大状态、饱和状态 二、实际应用场景1.放大电路 &#xff08;放大状态&#xff09;2、开关电路&#xff08;截至状…

【聚类算法】谱聚类spectral clustering

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 说明&#xff1a; 后续增补 1. 正文 1.1 整体理解 谱聚类&#xff08;Spectral Clustering&#xff09;是一种基于图论的聚类方法&#xff0c;将带权无…

基于java,springboot的校园闲置物品租售系统设计与实现

背景 校园闲置物品租售系统应有的主要功能模块&#xff0c;本系统有管理员、卖家和用户&#xff0c;管理员&#xff1b;首页、个人中心、用户管理、卖家管理、商品种类管理、商品信息管理、商品租借管理、商品购买管理、闲置鱼塘、系统管理&#xff0c;用户&#xff1b;首页、…

Java并发中的原子性、可见性和有序性

基于JMM的内存模型&#xff0c;Java并发编程的核心问题&#xff1a;原子性、可见性、有序性 那么在此之前&#xff0c;我们有必要先说一下Java的JMM内存模型&#xff1a;java内存模型&#xff0c;是java虚拟机规范的一种工作模式&#xff0c;它将内存分为主内存和工作内存。线…

【机器学习】十大算法之一 “PCA”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

高性能计算的意义是什么

高性能计算&#xff08;High-Performance Computing&#xff0c;HPC&#xff09;在现代科学、工程和商业领域中具有重要意义。以下是一些高性能计算的重要意义&#xff1a; 加速科学研究和创新&#xff1a;高性能计算可以提供大规模的计算能力和存储资源&#xff0c;使得科学家…

stm32数据对齐、PRESERVE8、freertos堆栈

为什么需要数据对齐&#xff1f; 避免数据在内存中跨边界存储&#xff0c;减少读取数据次数&#xff0c;提高效率&#xff0c;本质上是以空间换时间的做法 下图中属于同一水平位置的为同一边界 变量在同一边界里的一次存储周期就可以读取 一旦跨了上下两个边界来存储就需要至少…

干爆源码系列之Step by step lldb/gdb调试多线程

Step by step lldb/gdb调试多线程 0.叙谈1.断点分析2.多线程切换 2.1 并发队列 2.1.1 两次入队 2.2 线程调度 2.2.1 执行build端子MetaPipeline 2.2.1.1 Thread6调度第一个PipelineInitializeTask 2.2.1.2 Thread7调度第二个Pipelin…

TypeScript 数据联合类型的解读

概念&#xff1a; 联合类型&#xff08;Union Types&#xff09;表示取值可以为多种类型中的一种&#xff0c;或者也可以理解将多个类型合并为一个类型对变量进行注解。 语法结构&#xff1a; 联合类型使用 | 分隔每个类型。 let 变量&#xff1a;类型1 | 类型2 | 类型3… 案列…

基于Java校园代购服务订单系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

你的前端技术是否能通过这些高频面试题?

文章目录 1.储存了某个数据到 localStorage&#xff0c;立即进行 localStorage.getItem&#xff0c;能否取到值&#xff1f;2.实现异步的方式有几种3.异步不阻塞4.选择 div 的第二个子元素5.display: none 和 visibility: hidden 的区别6.如果想要让一个元素的宽高包含元素的 b…

【初识C语言】选择语句+循环语句+函数+数组

文章目录 前言1. 选择语句2. 循环语句3. 函数4. 数组 前言 C语言是一门结构化的程序设计语言 顺序结构&#xff1b; 选择结构&#xff1b; 循环结构。 1. 选择语句 生活中处处面临着选择&#xff0c;如果你好好学习&#xff0c;校招时拿一个好offer&#xff0c;走上人生巅峰。…

关于程序员的工作总结

程序员工作总结篇1 从我x月x日进入公司到现在已经过去一年了&#xff0c;从一名刚刚结束实习的学生到一名独立的开发人员&#xff0c;角色改变了&#xff0c;职责也改变了。虽然已经预计了工作之中会有很多困难&#xff0c;可是在实际的项目开发中&#xff0c;自己所遇到远远不…

(超级详细)如何在Mac OS上的VScode中配置OpenGL环境并编译

文章目录 安装环境下载GLAD与GLFW一、下载GLAD二、下载GLFW 项目结构配置测试程序与项目的编译测试可执行文件HelloGL 安装环境 机器&#xff1a;macbook air 芯片&#xff1a; M1芯片&#xff08;arm64&#xff09; macOS&#xff1a;macOS Ventura 13.4 VScode version&#…

Pytorch数据类型Tensor张量操作(操作比较全)

文章目录 Pytorch数据类型Tensor张量操作一.创建张量的方式1.创建无初始化张量2.创建随机张量3.创建初值为指定数值的张量4.从数据创建张量5.生成等差数列张量 二.改变张量形状三.索引四.维度变换1.维度增加unsqueeze2.维度扩展expand3.维度减少squeeze4.维度扩展repeat 五.维度…

SpringCloud Alibaba入门5之使用OpenFegin调用服务

我们继续在上一章的基础上进行开发 SpringCloud Alibaba入门4之nacos注册中心管理_qinxun2008081的博客-CSDN博客 Feign是一种声明式、模板化的HTTP客户端。使用Feign&#xff0c;可以做到声明式调用。Feign是在RestTemplate和Ribbon的基础上进一步封装&#xff0c;使用RestT…

SAP从入门到放弃系列之BOM行项目-虚拟装配-Part4

文章目录 虚拟组件&#xff08;Phantom assemblies&#xff09;&#xff1a;作用&#xff1a;BOM中虚拟件维护的方式&#xff1a; 物料主数据维度BOM组件维度&#xff08;数据优先级最高&#xff09; BOM组件的展开类型&#xff1a;BOM组件的特殊采购类数据测试示例&#xff1…