Salmon的全栈知识 Salmon的全栈知识
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • SpringCloud Gateway
  • Apollo
  • Eureka
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • SpringCloud Gateway
  • Apollo
  • Eureka
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
npm

(进入注册为作者充电)

  • JUnit单元测试
  • JDBC
  • JDBC连接池&JDBCTemplate
  • XML
  • Tomcat&Servlet
    • 一、Web 相关概念回顾
      • 1. 软件架构
      • 2. 资源分类
      • 3. 网络通信三要素
    • 二、Web 服务器软件
      • 1. 基本概念
      • 2. 常见 Java Web 服务器软件
    • 三、Tomcat 使用指南
      • 1. 下载与安装
      • 2. 启动与访问
      • 3. 常见问题
      • 启动黑窗口一闪而过
      • 启动端口冲突报错
      • 4. 停止 Tomcat
      • 5. 项目部署方式
      • 方法一:直接放入 webapps目录**
      • 方法二:修改server.xml
      • 方法三:在conf/Catalina/localhost下创建 XML 文件
    • 四、Java Web 项目目录结构
    • 五、Servlet 入门
      • 1. 概念
      • 2. 快速入门步骤
      • 3. Servlet 执行原理
      • 4. Servlet 生命周期方法
      • 创建时机
    • 六、Servlet 3.0 注解配置
      • 示例:
      • 注解说明(@WebServlet)
    • 七、IDEA 与 Tomcat 配置
  • Servlet&HTTP&Request
  • Response
  • Cookie&Session
  • EL&JSTL
  • Filter&Listener
  • 《JavaWeb》笔记
Salmon
2025-07-21
目录

Tomcat&Servlet

# 一、Web 相关概念回顾

# 1. 软件架构

  • C/S:客户端 / 服务器端
  • B/S:浏览器 / 服务器端

# 2. 资源分类

  • 静态资源:所有用户访问后,得到的结果一致。
    • 如:HTML、CSS、JavaScript
  • 动态资源:每个用户访问相同资源后,结果可能不同。访问后需转为静态资源再返回浏览器。
    • 如:Servlet/JSP、PHP、ASP 等

# 3. 网络通信三要素

  1. IP:计算机在网络中的唯一标识。

  2. 端口号:应用程序在计算机中的唯一标识(0~65536)。

  3. 传输协议:

    • TCP:安全、三次握手、速度较慢。
    • UDP:不安全、速度快。

# 二、Web 服务器软件

# 1. 基本概念

  • 服务器:安装了服务器软件的计算机
  • 服务器软件:接收、处理请求并响应
  • Web 服务器软件:能部署 Web 项目供用户访问
  • Web 容器:可运行 Java Web 应用的环境

# 2. 常见 Java Web 服务器软件

名称 公司/组织 特点 费用
WebLogic Oracle 支持 JavaEE 全规范 商业收费
WebSphere IBM 支持 JavaEE 全规范 商业收费
JBOSS JBOSS 支持 JavaEE 全规范 商业收费
Tomcat Apache 基金 支持 Servlet/JSP,开源免费 免费
  • JavaEE:Java 在企业级开发中的规范集合(共 13 项规范)

# 三、Tomcat 使用指南

# 1. 下载与安装

  • 官网:http://tomcat.apache.org/ (opens new window)
  • 安装:解压即可(路径中避免中文或空格)
  • 卸载:直接删除目录

# 2. 启动与访问

  • 启动:
bin/startup.bat
  • 访问:
    • 本地:http://localhost:8080 (opens new window)
    • 远程:http://<IP地址>:8080

# 3. 常见问题

# 启动黑窗口一闪而过

  • 原因:JAVA_HOME 未配置
  • 解决:正确配置 JAVA_HOME 环境变量

# 启动端口冲突报错

  • 方法一(暴力):杀掉端口占用进程
netstat -ano
  • 方法二(温柔):修改端口号

    修改 conf/server.xml:

<Connector port="8888" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8445" />
  • 常用端口:80(HTTP 默认端口)

# 4. 停止 Tomcat

  • 正常关闭:

    • bin/shutdown.bat
    • 控制台 Ctrl + C
  • 强制关闭:

    • 点击关闭按钮 ×

# 5. 项目部署方式

# 方法一:直接放入 webapps目录**

  • 项目访问路径:/项目名
  • 简化部署方式:将项目打包为 .war 包放入 webapps,自动解压

# 方法二:修改server.xml

<Host>
  <Context docBase="D:\hello" path="/hehe" />
</Host>
  • docBase:项目实际路径
  • path:虚拟路径

# 方法三:在conf/Catalina/localhost下创建 XML 文件

<Context docBase="D:\hello" />
  • 虚拟路径为 XML 文件名

# 四、Java Web 项目目录结构

项目根目录
├── WEB-INF/
│   ├── web.xml              # 核心配置文件
│   ├── classes/             # 编译后的字节码
│   └── lib/                 # 项目依赖的 jar 包

WEB-INF 目录下内容浏览器无法直接访问

# 五、Servlet 入门

# 1. 概念

  • Servlet:运行在服务器上的小程序
  • 是一个接口,用于定义类被 Web 容器调用的规则

# 2. 快速入门步骤

  1. 创建 JavaEE 项目
  2. 创建类实现 Servlet 接口
public class ServletDemo1 implements Servlet { ... }
  1. 实现接口方法

  2. 配置 web.xml 文件:

<servlet>
  <servlet-name>demo1</servlet-name>
  <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>demo1</servlet-name>
  <url-pattern>/demo1</url-pattern>
</servlet-mapping>

# 3. Servlet 执行原理

  1. 浏览器请求到达服务器
  2. Tomcat 解析 URL → 查找 <url-pattern>
  3. 找到对应 <servlet-class> → 加载类并创建对象
  4. 调用 Servlet 方法处理请求

# 4. Servlet 生命周期方法

生命周期方法 说明
init() 初始化方法,只执行一次
service() 提供服务,每次请求都会执行
destroy() 销毁方法,服务器关闭时调用一次

# 创建时机

  • <load-on-startup> 配置:
    • 负数:第一次访问时创建(默认)
    • 0 或正整数:服务器启动时创建

Servlet 是单例的,多线程访问可能造成线程安全问题。避免使用成员变量或避免修改其值。

# 六、Servlet 3.0 注解配置

无需配置 web.xml,使用注解即可:

# 示例:

@WebServlet("/demo1")
public class MyServlet implements Servlet {
    ...
}

# 注解说明(@WebServlet)

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
    String name() default "";                  // 相当于 <servlet-name>
    String[] value() default {};               // urlPatterns 的简写
    String[] urlPatterns() default {};         // 相当于 <url-pattern>
    int loadOnStartup() default -1;
    WebInitParam[] initParams() default {};
    boolean asyncSupported() default false;
    String smallIcon() default "";
    String largeIcon() default "";
    String description() default "";
    String displayName() default "";
}

# 七、IDEA 与 Tomcat 配置

  1. IDEA 为每个 Tomcat 项目生成独立配置
    • 日志中可见:
Using CATALINA_BASE: "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"
  1. Tomcat 部署项目 vs 工作空间项目
    • 实际运行的是 Tomcat 部署的 Web 项目目录
    • WEB-INF 中内容无法被浏览器直接访问
  2. 调试方式
    • 使用小虫子图标启动 Debug 模式进行断点调试
上次更新: 2025/07/23, 01:37:33
XML
Servlet&HTTP&Request

← XML Servlet&HTTP&Request→

Theme by Vdoing | Copyright © 2022-2025 Salmon's Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式