你好,Jerry,我是 Tomcat

Tomcat

  • Tomcat 是开源的服务器,是Java世界最知名的服务器,Tomcat本身是基于Java实现的,需要搭配JDK运行的
  • Tomcat 既可以处理静态页面,也可以处理动态页面
  • Tomcat搭配云服务器,可以让别人通过访问我的页面
  • 当服务器重启时,服务器内存中的数据就没有了,包括webapp的登录信息

安装Tomcat

  1. 进入tomcat官网,下载zip压缩包
    在这里插入图片描述

  2. 解压缩得到一个文件夹 apache-tomcat-8.5.72
    在这里插入图片描述

  3. bin目录下的 startup.bat 启动 Tomcat 服务器,如果是Linux系统 就使用 startup.sh;startup.bat是Windows的批处理脚本,startup.sh是Linux的批处理脚本
    在这里插入图片描述

  4. 启动成功
    在这里插入图片描述

常见问题

http://127.0.0.1:8080/ Tomcat服务器启动后,此路径可以访问自己电脑上的Tomcat服务器的欢迎界面
127.0.0.1是环回IP,表示本机;8080是Tomcat的默认端口号,可以在conf中修改 Tomcat 的端口号

  • 由于 Tomcat 默认编码是 utf8,windows默认编码是 GBK,所以服务器程序显示的是乱码
  • Tomcat 中的 webapps 文件夹中存放的是 web应用(一个具有完整功能的网站叫做webapp),里面的每一个文件夹都对应一个webapp,可以在浏览器上访问每一个webapp
  • Tomcat 服务器出现闪退情况,可以打开cmd,在cmd上运行Tomcat服务器(拖动startup.bat到cmd),会显示异常信息,继而找到错误;也可以在 服务器文件夹中的logs中阅读最新的日志,日志记录了程序运行的情况

如何访问别人的Tomcat服务器

  • 首先了解下NAT机制(多个主机共用一个外网IP)
  • 外网IP不能重复,不同设备使用同一个路由器进行上网,其外网IP地址是一样的
  • 同一个局域网(一个路由器)下,内网IP是唯一的;不同的局域网下,内网IP可以重复;
  • 如果两个主机在同一个局域网下,可以访问别人的服务器;如果不在同一个局域网下,被访问的主机必须要有外网IP才可以被访问;当把Tomcat部署到云服务器的时候,有了云服务器的外网IP,就可以访问到了

静态页面:页面的内容是固定不变的
将 一个页面的HTML+ CSS + JavaScript 打包,放到webapps目录下
在这里插入图片描述

部署动态页面

动态页面:根据用户输入不同内容,得到不同的结果
Servlet 是Tomcat 提供的一组API,用于计算用户的请求,返回不同的结果

servlet程序

  • 创建项目
    maven项目,maven是“构建工具”,用于编译打包代码
  1. 编译------仅仅靠javac编译程序是不够的,一个程序可能需要依赖多个第三方库,所以需要maven来管理这些第三方库(需要哪个,就下载哪个)
  2. 打包------程序部署到服务器上,可以运行在别人的电脑上
  3. 项目名称要写作英文
  • 引入依赖
  1. 在 pom.xml (Maven的核心配置文件)引入第三方库
  1. 在中央仓库maven中央仓库
    中搜索servlet,选择tomcat服务器对应的版本的servlet,将其复制到pom.xml
    中)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  1. 通过tomcat官网,找到对应版本的servlet
    在这里插入图片描述
  1. 会自动下载,标红表示下载未完成,可以刷新maven

在这里插入图片描述

  1. 每次引入一个第三方库(<dependency>标签包裹),都要放到<dependencies>标签中
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>giao</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependencies>
    <!-- 这是servlet的第三方库-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <packaging>war</packaging>
    <build>
        <finalName>LoveQust</finalName>
    </build>
</project>
  • 构建目录结构
    在web.xml中插入固定内容
    在这里插入图片描述
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
     <display-name>Archetype Created Web Application</display-name>
</web-app>
  • 编写代码
  • 继承 HttpServlet,HttpServlet来自Servlet的第三方库
  • 重写 doXXX方法,doXXX方法是HttpServlet的方法,doGet处理 方法为GET的请求;doPost处理 方法为POST的请求
  • 设置 Servlet Path,@WebServlet(“/qust”) 表示请求的URL中 servlet path 是 “/qust” 的时候,调用这个类来处理请求
  • 构造响应内容,resp.getWriter().write(“科大 rubbish!!”)构造 响应的body中的内容
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/qust")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf8");
        resp.getWriter().write("qust rubbish!!");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf8");
        resp.getWriter().write("qust nice!!");
    }
}
  • 打包程序
    启动程序的main方法在Tomcat中,要把servlet程序打包部署到Tomcat服务器上,才可以运行(servlet车斗 挂在 有着main发动机 的 Tomcat车头上,才可以跑起来)
  • 修改 pom.xml
    <packaging>war</packaging>   <!-- 设置包的类型 .war -->
     <!-- 设置包的名称 -->
    <build>
        <finalName>LoveQust</finalName>
    </build>

在这里插入图片描述
结果会 新增一个 target 文件夹,此目录下会有 相对应的war包

  • 部署到 Tomcat 上
    将包拷贝到 webapps目录下,Tomcat(启动中)会自动解压缩成一个文件夹,无需重启服务器
    在这里插入图片描述
    如果识别不出来war包的话,重启服务器即可
  • 访问界面

http://127.0.0.1:8080/LoveQust/qust
LoveQust被称为 Context Path 代表一个网站
qust 被称为 Servlet Path 代表网站中的一个界面

使用 Smart Tomcat

  • 使用 Smart Tomcat 简化打包、部署程序这两个步骤
    借助IDEA的Smart Tomcat 调用Tomcat
  • Smart Tomcat 运行原理
    Smart Tomcat 并不是真的把程序打包部署到webapp目录下,而是相当于把 Tomcat的核心目录给拷贝了一份临时的(不包括欢迎界面),然后把写的代码所在的目录映射到拷贝的临时Tomcat中
  • 专业版的IDEA 可以使用内置Tomcat插件打包部署
    社区版的IDEA 可以使用第三方插件Smart Tomcat 打包部署
  • 一般Smart Tomcat 目录的路径是 C:\Users\86188\.SmartTomcat(这是我的)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Tomcat的运行

  • Tomcat接收HTTP请求,解析成一个HttpServletRequest对象
    创建一个HttpServletResponse对象
  • 根据请求中的 Context Path确定一个webapp,根据Servlet Path确定一个具体的类,再根据请求的方法调用doXXX方法
  • 执行我们的代码,doXXX方法得到计算结果
  • 将HttpServletResponse转成一个HTTP响应,返回给浏览器
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威少总冠军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值