JavaWeb之tomcarHTTP

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 --时间

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android adb shell命令捕获systemtrace

Android adb shell命令捕获systemtrace (1)抓取trace文件&#xff1a; adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory -t 时长&#xff0c;20s&a…

通过使用Mybatis插件来实现数据的分页功能

目录 背景一、SpringBoot的后端1、手动拼接SQL来实现2、使用Mybatis插件来实现 二、Vue-cli的前端:请求响应跟踪 三、在使用Mybatis插件进行多表查询(表数大于2)出现的问题1. SQL解决2.后端查询方式改变成嵌套查询 四、 分页总结 背景 分页: 如果一次性的查询全部数据, 响应时…

高级数据结构——平衡二叉树(AVL树)

目录 1. 底层结构 2. AVL数的概念 3. AVL树节点的定义 4. 基本框架 5. AVL树的插入 6. AVL树的旋转 6.1 左单旋 6.2 右单旋 6.3 左右双旋 6.4 右左双旋 7. AVL树的验证 8. AVL树的查找 9. AVL树的删除 10. AVL树的性能 11. 总代码 11.1 AVLTree 11.2 Test.c…

SuperMap GIS基础产品移动GIS FAQ集锦(3)

SuperMap GIS基础产品移动GIS FAQ集锦&#xff08;3&#xff09; 【iMobile】网络分析中设置权值字段&#xff0c;如何添加多个权值字段&#xff1f; 【解决办法】通过权值字段集合类&#xff08;WeightFieldInfos&#xff09;设置&#xff0c;该类是权值字段信息对象&#x…

【AI】Stable-Diffusion-WebUI使用指南

注&#xff1a;csdn对图片有审核&#xff0c;审核还很奇葩&#xff0c;线稿都能违规&#xff0c;为保证完整的阅读体验建议移步至个人博客阅读 最近AI绘画实现了真人照片级绘画水准&#xff0c;导致AI绘画大火&#xff0c;公司也让我研究研究&#xff0c;借此机会正好了解一下…

django旅游推荐系统-计算机毕设 附源码82884

django旅游推荐系统 摘 要 随着社会的快速发展和人们生活水平的不断提高&#xff0c;旅游已逐渐成为人们生活的重要组成部分&#xff0c;用户能够获取旅游信息的渠道也随信息技术的广泛应用而增加。大量未经过滤的信息在展示给用户的同时&#xff0c;也淹没了用户真正感兴趣的信…

配置NIS服务器及客户端

在服务端安装所需软件包 设置主机名和NIS域名 编辑 NIS服务器主配置文件 最下面编辑访问控制 建立测试用户 配置NFS&#xff0c;否则客户端切换用户时&#xff0c;用户没有家目录 安装NFS所需软件包 Nfs-utils 给两个共享目录权限&#xff0c;编辑NFS配制文件 共享两个目录 重…

【从零开始学习C++ | 第二十一篇】C++新增特性 (上)

目录 前言&#xff1a; 委托构造函数&#xff1a; 类内初始化&#xff1a; 空指针&#xff1a; 枚举类&#xff1a; 总结&#xff1a; 前言&#xff1a; C的学习难度大&#xff0c;内容繁多。因此我们要及时掌握C的各种特性&#xff0c;因此我们更新本篇文章&#xff0c;向…

【数据管理架构】什么是 OLTP?

OLTP&#xff08;在线事务处理&#xff09;支持在 ATM 和在线银行、收银机和电子商务以及我们每天与之交互的许多其他服务背后进行快速、准确的数据处理。 什么是 OLTP&#xff1f; OLTP 或在线事务处理允许大量人员&#xff08;通常通过 Internet&#xff09;实时执行大量数据…

【SpringCloud-5】gateway网关

网关是干啥用的就不用再说了。 sringcloud中的网关&#xff0c;第一代是zuul&#xff0c;但是性能比较差&#xff08;1.x是阻塞式的&#xff0c;2.x是基于Netty的&#xff09;&#xff0c;然后有了第二代GateWay&#xff0c;基于Reactor模型 异步非阻塞。 springcloud网关就是一…

C++智能指针

RAII RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种利用对象生命周期来控制程序资源的技术 不需要显示的释放资源对象的资源在其生命周期类保持有效 通常控制的资源&#xff1a;动态申请的内存、文件描述符、互斥量、网络连接等 在对象构造时…

多线程/std::thread线程退出方式详解

文章目录 概述不 join 也不 detach执行了detach并不能万事大吉建议使用 join 函数 概述 这里默认你已经了解 std::thread 类的基本使用&#xff0c;和WinAPI多线程编程中 “如何优雅的退出线程” 等相关知识。阅读该文前&#xff0c;建议先看看《多线程 /C 11 std::thread 类深…

python、pyqt5实现人脸检测、性别和年龄预测

摘要&#xff1a;这篇博文介绍基于opencv&#xff1a;DNN模块自带的残差网络的人脸、性别、年龄识别系统&#xff0c;系统程序由OpenCv, PyQt5的库实现。如图系统可通过摄像头获取实时画面并识别其中的人脸表情&#xff0c;也可以通过读取图片识别&#xff0c;本文提供完整的程…

【IIS建站教程】windows本地搭建web服务,内网穿透发布公网访问

✨个人主页&#xff1a;bit me&#x1f447; 目 录 &#x1f43e;1.前言&#x1f490;2.Windows网页设置&#x1f338;2.1 Windows IIS功能设置&#x1f337;2.2 IIS网页访问测试 &#x1f340;3. Cpolar内网穿透&#x1f339;3.1 下载安装Cpolar&#x1f33b;3.2 Cpolar云端设…

【Leetcode60天带刷】day36——56. 合并区间,738.单调递增的数字

​ 题目&#xff1a; 56. 合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a;…

菜鸡shader:L4三色环境光原理妙用并在ue4中实现

三色环境光的拓展运用 我的上一篇博客写了关于三色环境光的原理&#xff0c;这次就来简单拓展一下。最重要的核心思想其实就是取法线向量的第二个分量&#xff0c;因为它控制方法是指向xz平面的上或者下。 所以这次要用这个原来来单独摘出上层环境光&#xff0c;乘上菲涅尔&a…

ASP.NET Core Web API之Token验证

在实际开发中&#xff0c;我们经常需要对外提供接口以便客户获取数据&#xff0c;由于数据属于私密信息&#xff0c;并不能随意供其他人访问&#xff0c;所以就需要验证客户身份。那么如何才能验证客户的身份呢&#xff1f;今天以一个简单的小例子&#xff0c;简述ASP.NET Core…

交叉熵、Focal Loss以及其Pytorch实现

交叉熵、Focal Loss以及其Pytorch实现 本文参考链接&#xff1a;https://towardsdatascience.com/focal-loss-a-better-alternative-for-cross-entropy-1d073d92d075 文章目录 交叉熵、Focal Loss以及其Pytorch实现一、交叉熵二、Focal loss三、Pytorch1.[交叉熵](https://pyto…

Python 动态生成系统数据库设计到word文档

背景 经常需要交付一些系统文档而且基本都是word的&#xff0c;其中又有系统数据库介绍模块&#xff0c; 看着数据库里的几百张表于是我开始怀疑人生, 所以咱手写一个 涉及知识 pymysql 操作数据库 -tkinter GUI图形库threading 线程queue 阻塞队列pandas python数据计算…

layui(5)——内置模块分页模块

模块加载名称&#xff1a;laypage laypage 的使用非常简单&#xff0c;指向一个用于存放分页的容器&#xff0c;通过服务端得到一些初始值&#xff0c;即可完成分页渲染&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset&quo…