首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

Java Web 入门基石:从静态资源到 Tomcat 部署全景图

     編輯:關於JSP

一、 核心概念辨析

概念 本质 典型代表
静态资源内容固定,服务器不做任何处理直接返回HTML、CSS、JS、图片、字体
动态资源服务器执行代码生成内容(最终输出仍是静态资源)JSP、Servlet、Controller 返回 JSON/HTML
Java EE / Jakarta EE13+ 项企业级开发规范集合Servlet、JSP、JPA、CDI、JAX-RS、WebSocket...
Web 容器实现 Servlet/JSP 规范的服务器程序Tomcat、Jetty、Undertow、Resin
应用服务器实现全量 Java EE 规范WildFly、GlassFish、WebLogic、WebSphere

包名识别技巧:java.* → Java SE 核心库;javax.* / jakarta.* → Java EE/Jakarta EE 规范 API。

二、 Tomcat 安装与常见启动故障

  1. 解压即用:下载二进制包(tar.gz/zip),解压至**无中文、无空格**路径。
  2. 启动:bin/startup.sh (Linux/Mac) 或 bin/startup.bat (Windows)。
  3. 验证:浏览器访问 https://localhost:8080 出现 Tomcat 猫页即成功。

高频故障 & 解决

现象 原因 解决
黑框一闪而过JAVA_HOME 未配置或指向 JRE 而非 JDK配置系统环境变量 JAVA_HOME=C:\jdk1.8.0_xxx,Path 追加 %JAVA_HOME%\bin
端口 8080 被占用其他程序占用、或 Tomcat 重复启动netstat -ano | findstr 8080 找 PID 杀进程,或改 server.xml Connector port
中文乱码Tomcat 默认 ISO-8859-1 解码 GET 参数server.xml Connector 加 URIEncoding="UTF-8"

三、 Tomcat 目录结构速查

apache-tomcat-x.x.x/
├── bin/          # 启动/关闭脚本、Tomcat 自带工具
├── conf/         # 核心配置:server.xml, web.xml, context.xml, tomcat-users.xml
├── lib/          # 容器级共享 JAR(servlet-api.jar, jsp-api.jar 等)
├── logs/         # 运行日志(catalina.out, localhost.xxx.log, access_log)
├── temp/         # 临时文件(文件上传缓存、JSP 编译中间文件)
├── webapps/      # 应用部署目录(每个子目录或 WAR 包 = 一个 Web 应用)
└── work/         # 工作目录:JSP 编译生成的 Servlet 源码/Class 文件

四、 Java Web 标准目录结构(Servlet 规范强制)

MyApp/                    ← 应用根目录(Context Root)
├── index.html            ← 静态资源直接放根或子目录
├── css/, js/, images/
└── WEB-INF/              ← 安全目录,客户端**无法直接访问**
    ├── web.xml           ← 部署描述符(Servlet 3.0+ 可选,注解替代)
    ├── classes/          ← 编译后的 Java 类(包结构对应目录)
    │   └── com/example/MyServlet.class
    └── lib/              ← 应用私有 JAR(仅本应用可见)

类加载优先级:WEB-INF/classes → WEB-INF/lib/*.jar → Tomcat/lib/*.jar → 父加载器。避免版本冲突核心原则:**应用私有库优先,不依赖容器共享库**。

五、 应用部署三种方式

  1. 目录部署(开发调试):直接拷贝 MyApp 目录到 webapps/。
  2. WAR 包部署(生产标准):jar -cvf MyApp.war *(在应用根目录执行),拷贝 MyApp.war 到 webapps/,Tomcat 自动解压。
  3. Context 配置部署(外置应用、多实例):在 conf/Catalina/localhost/MyApp.xml 写 <Context docBase="/data/apps/MyApp" />,应用可置于任意路径,不污染 webapps。

六、 Tomcat 核心组件架构

1. 连接器 —— 协议适配

  • HTTP/1.1 (Coyote):Connector port="8080" protocol="HTTP/1.1"
  • AJP/1.3:Connector port="8009" protocol="AJP/1.3"(Nginx 反代常用)
  • HTTPS:配置 keystoreFile、keystorePass、SSLEnabled="true"

2. 容器层级 —— Engine → Host → Context

<Engine name="Catalina" defaultHost="localhost">
    <Host name="www.example.com" appBase="/data/apps/www">
        <Context path="/api" docBase="api-app" />
    </Host>
    <Host name="admin.example.com" appBase="/data/apps/admin">
        <Context path="" docBase="admin-app" />
    </Host>
</Engine>
  • Engine:顶层容器,处理所有 Connector 请求。
  • Host:虚拟主机,绑定域名,隔离应用基目录。
  • Context:单个 Web 应用,定义虚拟路径 path 与物理路径 docBase 映射。

3. 虚拟目录映射

将磁盘任意目录映射为 Web 访问路径:

  • server.xml 中 <Context path="/static" docBase="D:/cdn/resources" />(需重启)
  • conf/Catalina/localhost/static.xml:<Context docBase="D:/cdn/resources" />(热生效,推荐)

七、 默认端口、默认应用、默认首页配置

  1. 默认端口 80:server.xml Connector port="80"(生产建议 Nginx 反代)。
  2. 默认应用:conf/Catalina/localhost/ROOT.xml → <Context docBase="/data/apps/main" />。
  3. 默认首页:应用 WEB-INF/web.xml 配置 <welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list>。

八、 SSL/HTTPS 实战要点

  • 协议:HTTPS = HTTP + TLS(SSL 已弃用)。默认端口 443,Tomcat 默认 8443。
  • 核心:非对称加密传输对称密钥 + 数字证书身份认证。
  • 证书:生产必用 CA 签发(Let's Encrypt 免费、DigiCert 等),测试可用 keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks 自签名。
  • 配置:Connector 加 SSLEnabled="true" scheme="https" secure="true" keystoreFile="..." keystorePass="..."。

结语

Java Web 基础看似琐碎,实则是构建高性能、可维护系统的地基。搞清静态/动态边界、容器与规范关系、标准目录约定、部署方式优劣、核心组件分层,配合 Tomcat 实战调优,便能从“能跑通”进阶到“懂原理、会调优、敢上生产”。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved