Tomcat

JSON数据交换

当前后端交互时,客户端往往需要把参数传给服务器。根据参数复杂度不同,常见方式可以分为两类:

简单参数:如果请求中只需要携带少量、结构简单的参数,最常见的做法是把它们以键值对形式拼接在 URL 后面。

scheme://host:port/path?参数1名称=参数1值&参数2名称=参数2值

复杂参数:放在请求体中,以 JSON 格式传递

请求和响应:复杂数据最常见的交换格式都是 JSON

Web服务器概念

服务器有两层含义:

层面说明例子
软件层面能将本地资源发布到网络的软件程序Tomcat、Nginx、Apache
硬件层面性能较高的计算机主机云服务器、机房服务器

静态资源 vs 动态资源:

类型特点例子
静态资源内容固定不变HTML页面、图片、CSS、小说
动态资源根据请求动态生成用户中心、订单列表、搜索页面

JavaEE规范:由于不同服务器API不统一,所以javaee统一接口,由不同厂商实现

Tomecat 配置运行

tomecat目录结构解析:

apache-tomcat-9.0.80/
├── bin/           # 启动/停止脚本
│   ├── startup.bat    # Windows启动
│   ├── startup.sh     # Linux启动
│   ├── shutdown.bat   # Windows停止
│   └── shutdown.sh    # Linux停止
├── conf/          # 配置文件
│   ├── server.xml     # 服务器核心配置
│   ├── web.xml        # 默认Web应用配置
│   └── logging.properties  # 日志配置
├── lib/           # 依赖库(jar包)
├── logs/          # 日志文件
├── temp/          # 临时文件
├── webapps/       # 默认部署目录(重要!)
└── work/          # 运行时生成的文件

配置环境变量:

# 必须配置JAVA_HOME!
JAVA_HOME=C:\Program Files\Java\jdk-1.8

# 可选:配置CATALINA_HOME
CATALINA_HOME=D:\apache-tomcat-9.0.80

启动tomecat:

双击 bin/startup.bat
# Windows
cd D:\apache-tomcat-9.0.80\bin
startup.bat
# Linux/Mac
cd /usr/local/tomcat/bin
./startup.sh
访问:http://localhost:8080

停止tomecat:

方式1:双击 `shutdown.bat`         标准停止
方式2:命令行执行 `shutdown`       脚本控制
方式3:启动窗口按 `Ctrl+C`         快速停止
方式4:关闭CMD窗口                 不推荐

部署Web应用

方式优点缺点适用场景
直接部署简单直观必须放在webapps开发测试
虚拟映射灵活,位置不限需要配置生产环境
WAR包部署方便分发需要打包生产发布

直接部署

1. 在 webapps 目录下新建文件夹(建议英文)
2. 将资源文件放入该文件夹
3. 访问:http://localhost:8080/文件夹名/资源路径
例子
webapps/
└── myapp/              # 应用目录
    ├── index.html      # 首页
    ├── css/
    │   └── style.css
    ├── js/
    │   └── app.js
    └── images/
        └── logo.png
http://localhost:8080/myapp/index.html
http://localhost:8080/myapp/images/logo.png

虚拟映射

1. 在 conf/Catalina/localhost/ 下创建 XML 文件
2. 文件名 = 访问路径名
3. XML内容配置 docBase 指向实际路径
例子:
<!-- 文件:conf/Catalina/localhost/user1.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\my-projects\app1" />
实际目录结构:
D:\my-projects\app1\
├── index.html
└── images\
    └── banner.jpg​

http://localhost:8080/user1/index.html
http://localhost:8080/user1/images/banner.jpg

直接部署 和 虚拟映射 冲突时:虚拟映射优先级 > 直接部署

WAR包部署

WAR(Web Application Archive)是Web应用的标准打包格式,本质就是ZIP压缩包。打包后把它放进 webapps/,Tomcat 会自动解压并部署。

# 1. 将应用目录打包为WAR
cd D:\my-projects\app1
jar -cvf myapp.war .

# 2. 将WAR放入webapps目录
# Tomcat会自动解压部署

jar -cvf myapp.war .

webapps/
├── myapp.war      # 放入WAR包
└── myapp/         # Tomcat自动解压
    └── ...

部署本质:URL 到本地路径的映射

用户访问的 URL —> Tomcat 如何解析路径 —> 最终找到本地哪个资源

4. Tomcat的常见配置

1,修改端口

默认端口是 8080,配置位置在 conf/server.xml,如果改成 80,访问时就可以省略端口:

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
http://localhost/

2,配置ROOT应用

配置root应用后访问http://localhost:8080/会直接进入应用

方式1:
webapps/ROOT/
方式2:
conf/Catalina/localhost/ROOT.xml

3,配置欢迎页

欢迎页用于控制“访问目录时默认打开哪个文件”。配置位置通常在 conf/web.xml

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

访问逻辑可以理解为:

访问 /myapp/
 -> 先找 index.html
 -> 再找 index.htm
 -> 再找 index.jsp
 -> 都没有则 404

访问不到的常见原因有三个:

  • 本机防火墙未放行
  • 云服务器安全组未开放端口
  • 服务只绑定到本机回环地址

遇到“自己能访问,别人不能访问”时,优先从这三项排查。

总结

核心知识点

1. Tomcat 是 Java Web 应用的运行容器
2. webapps 是默认部署目录
3. bin 负责启停,conf 负责配置,logs 负责日志
4. 直接部署最简单,虚拟映射最灵活,WAR 包更接近发布流程
5. URL 访问背后,本质是 Tomcat 做路径映射
6. ROOT、欢迎页、端口配置是最常见的三个基础操作

部署方式选择决策

资源放在哪里?

├─ 在 webapps 下 -> 直接部署

├─ 不在 webapps 下 -> 虚拟映射

└─ 需要分发或上线 -> WAR 包部署

多线程,网络编程

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇