前言
因为小学期需要使用实现PC端数据的交互,因此学习JavaWeb的相关知识,希望借助Tomcat以实现需要的功能。
1. JavaWeb
1.1. 基本概念
1.1.1. web开发
- 静态web
- html,css
- 提供给所有人看的数据始终不会发生变化!
- 动态web
- 几乎是所有的网站
- 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!
- 技术栈:Servlet / JSP,ASP,PHP
- 在Java中,动态web资源开发的技术统称为JavaWeb
1.1.2. web应用程序
web应用程序:可以提供浏览器访问的程序
- a.html、b.html…多个web资源,这些web资源可以被外界访问,对外界提供服务
- 你们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上
- URL(统一资源定位符)
- 这个统一的web资源会被放在同一个文件夹下
- 一个web应用由多部分组成 (静态web,动态web)
- html,css,js
- jsp,servlet
- Java程序
- jar包
- 配置文件 (Properties)
web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理
1.2. Web
1.2.1. 静态web
*.html & *.html,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取
静态web存在的缺点
- Web页面无法动态更新,所有用户看到都是同一个页面
- 轮播图,点击特效:伪动态
- JavaScript [实际开发中,它用的最多]
- VBScript
- 它无法和数据库交互(数据无法持久化,用户无法交互)
1.2.2. 动态web
页面会动态展示: “Web的页面展示的效果因人而异”
- 缺点:
加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布- 停机维护
- 优点:
- Web页面可以动态更新,所有用户看到都不是同一个页面
- 它可以与数据库交互(数据持久化:注册,商品信息,用户信息…)
1.3. Web服务器
1.3.1. 技术讲解
- ASP
- 微软:国内最早流行的就是ASP
- 在HTML中嵌入了VB的脚本,ASP + COM
- 在ASP开发中,基本一个页面都有几千行的业务代码,页面极其换乱
- 维护成本高
- C#
- IIS
- php
- PHP开发速度很快,功能很强大,跨平台,代码很简单 (70%,WP)
- 无法承载大访问量的情况(局限性)
- JSP / Servlet
- B/S:浏览和服务器
- C/S:客户端和服务器
- sun公司主推的B/S架构
- 基于Java语言的 (所有的大公司,或者一些开源的组件,都是用Java写的)
- 可以承载三高(高并发、高可用、高性能)问题带来的影响
- 语法像ASP,ASP --> JSP,加强市场强度
1.3.2. web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息
- IIS
- 微软的
- ASP,Windows中自带
- Tomcat
- Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
- Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个Java初学web的人 来说,它是最佳的选择
- Tomcat 实际上运行JSP页面和Servlet
2. Tomcat启动和配置
2.1. 文件夹作用
- bin:启动、关闭的脚本文件
- conf:配置文件
- lib:依赖的jar包
- log:日志
- webapps:存放动态网站
- work:工作目录
2.2. 启动Tomcat
- 定位到bin文件夹
博主使用brew安装的tomcat,所以路径与网上大多数博客的路径不一致。如果没有brew也可以直接从官网上下载对应的tar.gz文件后,将文件移入Library。
cd /usr/local/Cellar/tomcat/10.0.22/libexec/bin
./startup.sh
- 使用catalina
catalina -h
catalina start
-h:查看可以使用的指令
start:运行Tomcat
等终端出现 Tomcat started. 的消息时,打开空白网页,输入localhost:8080
即可进行访问测试。
2.3. 退出Tomcat
- 定位到bin文件夹
cd /usr/local/Cellar/tomcat/10.0.22/libexec/bin
./shutdown.sh
- 使用catalina
catalina -h
catalina stop
2.4. 配置
找到config路径下的 server.xml ,即服务器的核心配置文件。
2.4.1. 配置启动的端口号
找到对应的 ** Connector** 标签,修改port的值,即可修改端口。
如果修改port的值为8086,此时,需要输入的地址为:localhost:8086
。
- 常见的默认端口号
- tomcat: 8080
- mysql: 3306
- http: 80
- https: 443
2.4.2. 配置主机的名称
找到引擎下面对应的 ** Host** 标签,修改name的值,即可修改主机。
如果修改name的值为 www.tomcat.com ,此时,需要输入的地址为:www.tomcat.com:8086
。
注意:
- 需要修改的是 Engine 标签下的 Host 标签,而不是直接对Engine的defaultHost进行修改
- 此时若输入修改后的域名,仍无法显示正确的网页,是因为此时还需要修改对应的系统驱动,添加ip地址到此主机名的映射才可以成功。
尽量不要尝试,否则可能导致系统崩溃
2.5. 发布一个web网站
将自己写的网站,放到服务器Tomcat
中指定的web应用的文件夹webapps
下,就可以访问了
-- webapps:Tomcat服务器的web目录
- ROOT
- localhost:网站的目录名
- WEB-INF
- classes:java程序
- lib:web应用所依赖的jar包
- web.xml:网站配置文件
- index.html 默认的首页
- static
- css
- style.css
- js
- img
3. HTTP
3.1. 概念
HTTP(超文本传输协议)是一个简单的 请求-响应
协议,它通常运行在TCP之上。
- 文本:html,字符串……
- 超文本:图片,音乐,视频,定位,地图…
- 80:默认端口
Https:安全的HTTP
- 443:默认端口
3.2. 两个时代
- http1.0
HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接 - http2.0
HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源
3.3. Http请求
客户端 --- 发请求(Request) --- 服务器
3.3.1. 示例:百度
Request URL:https://www.baidu.com/ 请求地址
Request Method:GET get方法/post方法
Status Code:200 OK 状态码:200
Remote(远程) Address:14.215.177.39:443
Accept:text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9 语言
Cache-Control:max-age=0
Connection:keep-alive
3.3.2. 请求行
请求行中的请求方式:GET
请求方式:Get,Post,HEAD,DELETE,PUT,TRACT…
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
- post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
3.3.3. 消息头
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
3.4. Http响应
服务器---响应(Response) -----客户端
3.4.1. 示例:百度
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
3.4.2. 响应体
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
Refresh:告诉客户端,多久刷新一次;
Location:让网页重新定位;
3.4.3. 响应状态码
- 200:请求响应成功
- 3xx:请求重定向
- 重定向:重新到我指定的新位置
- 4xx:找不到资源
- 404:资源不存在
- 5xx:服务器代码错误
- 502:网关错误
4. Maven
学习原因:
- 在Javaweb开发中,需要使用大量的jar包,我们手动去导入
- 如何能够让一个东西自动帮我导入和配置这个jar包
由此,Maven诞生了!
4.1. Maven项目架构管理工具
Maven的核心思想:约定大于配置
Maven会规定好你该如何去编写我们的Java代码,必须要按照这个规范来
4.2. 配置Maven
可参考Mybatis学习笔记
错误记录
1. 500
当使用Tomcat10的时候,需要更改maven依赖
将javax.servlet
都改为jakarta.servlet
导入对应的依赖:
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
总结
本文主要记载关于JavaWeb的预备知识,并记录通过IDEA实现JavaWeb的有关配置。