Tomcat和Servlet

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Tomcat是什么?
    • 1.1下载:
    • 1.2 tomcat是什么
    • 1.3启动服务器:
  • 二.部署
  • 三、Servlet
    • 3.1创建项目
    • 3.2引入依赖
    • pom.xml的所有代码 3.3创建目录
  • 四编写代码
  • 五、打包
    • 5.1war和jar包的区别
  • 六.部署
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:
因为现在都用spring框架了,所以本文就简单介绍一下Tomcat和Servlet


提示:以下是本篇文章正文内容,下面案例可供参考

一、Tomcat是什么?

1.1下载:

官网地址
在这里插入图片描述

我下载的时8版本,其实应用商店也可以下载,但是10版本,慎重下

1.2 tomcat是什么

Tomcat 是一个 HTTP 服务器.
HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式,同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端.
HTTP 服务器我们也同样可以通过 Java Socket 来实现.

而 Tomcat 就是基于 Java 实现的一个开源免费,也是被广泛使用的 HTTP 服务器。

1.3启动服务器:

在bin目录下面的点击startup.bat就可以启动了
在这里插入图片描述
启动后也是一堆乱码看不懂
但是没有关系,我们在浏览器输入localhost:8080就可以一个tocmcat的欢迎界面了
在这里插入图片描述

如果启动失败:
cmd中在命令行中使用 netstat -ano | findstr 8080 确定看 8080 是否被其他进程绑定, 把对方进程干掉,再重新启动 Tomcat 一般就可以解决问题。

二.部署

把带有css的前端文件放入webapps里,
在这里插入图片描述

http://localhost:8080/blog_system/login.html

在URL里这样子输入
在这里插入图片描述

他就出来了

三、Servlet

3.1创建项目

在这里插入图片描述
在这里插入图片描述
然后把这个nme命名好

3.2引入依赖

Maven 项目创建完毕后, 会自动生成一个 pom.xml 文件.
我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包
中央仓库
在这里插入图片描述
选择第一个然后选择3.1.0这个版本
查询版本对应关系
在这里插入图片描述
把这个拷贝到pom.xml里

<?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>ServletHelloWorld</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency></dependencies></project>

pom.xml的所有代码 3.3创建目录

在这里插入图片描述
创建的目录要这样子,这个webapp要和Java同等级
在这里插入图片描述
然后再在下面创建一个web.xml
在这里插入图片描述
其实也可以类比springboot中的这个properties,只不过servlet中的那个叫做xml
在这里插入图片描述接着在web里拷贝这个代码

<!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>

webapp 目录就是未来部署到 Tomcat 中的一个重要的目录. 当前我们可以往 webapp 中放一些静态资源, 比如 html , css 等.
在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源

四编写代码

在这里插入图片描述

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("/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("hello");resp.getWriter().write("hello");}
}

创建一个类 HelloServlet , 继承自 HttpServlet
在这个类上方加上 @WebServlet(“/hello”) 注解, 表示 Tomcat 收到的请求中, 路径为 /hello
的请求才会调用 HelloServlet 这个类的代码. (这个路径未包含 Context Path)
重写 doGet 方法. doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个
方法会在 Tomcat 收到 GET 请求时触发
HttpServletRequest 表示 HTTP 请求. Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成
了一个 HttpServletRequest 对象. 后续想获取请求中的信息(方法, url, header, body 等) 都是通
过这个对象来获取.
HttpServletResponse 表示 HTTP 响应. 代码中把响应对象构造好(构造响应的状态码, header,
body 等)
resp.getWriter() 会获取到一个流对象, 通过这个流对象就可以写入一些数据, 写入的数据会被
构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览

五、打包

现在依然是不能运行的,这个只是逻辑的一部分。
我们的代码不是通过 main 方法作为入口了. main 方法已经被包含在 Tomcat 里, 我们写的代码会被 Tomcat 在合适的时机调用起来
在这里插入图片描述
点击这里就可以打包了
在这里插入图片描述
这样子打包成功了,这个jar包在target下面
在这里插入图片描述
这样的 jar 包并不是我们需要的, Tomcat 需要识别的是另外一种 war 包格式.
另外这个 jar 包的名字太复杂了, 我们也希望这个名字能更简单一点。

5.1war和jar包的区别

jar 包是普通的 java 程序打包的结果. 里面会包含一些 .class 文件.
war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图
片, 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别,springboot里也可以按照我下面的打包方式

在pom.xml新增一个

<packaging>war</packaging>

再在package内置增加一个build标签,表示war打出的包的名字

<build>
<finalName>ServletHelloWorld</finalName>
</build>

重新打包一下
在这里插入图片描述

六.部署

把上面的war包放到tomcat的webapp目录下,解压缩一下
在这里插入图片描述

在这里插入图片描述
然后这样子就可以了,但是别忘记打开tomcat的start.bat,不然无法部署成功的

总结

其实servlet和springboot真的差不多,springboot就是servlet的升级版本,学会一个上手另一个就很快了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310861.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【neo4j】简单使用

【neo4j】简单使用 创建节点 需要建立一个symmap中医数据集的节点&#xff0c;从csv中读取数据 下面是herb的数据 将该文件放在import中 将xlsx文件转换为csv LOAD CSV WITH HEADERS FROM "file:///herb.csv" AS line CREATE (:herb {name:line.Chinese_name,p…

Vue2【插槽】

目录 1&#xff1a;插槽-默认插槽&#xff1a; 2&#xff1a;插槽-具名插槽 &#xff1a; 3&#xff1a;插槽-作用域插槽&#xff1a; 总结&#xff1a;2023再见&#xff0c;2024再见&#xff01;&#xff01;&#xff01; 1&#xff1a;插槽-默认插槽&#xff1a; 作用&a…

工务园IPO上市具有高度投机性质,涉及高风险

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;工务园在其提交给美国证券交易委员会(SEC)的IPO招股书中披露其在纳斯达克IPO上市的股票发行属于【高度投机性质&#xff0c;涉及高风险】&#xff08;这是工务园在其IPO招股书中的原话&#xff09…

Seata AT TM->RC->RM一次完整的交互过程

原理 TM两阶段&#xff1a; 阶段1&#xff1a;TM向TC申请全局事务&#xff0c;netty客户端发起了一次记录xid的请求 阶段2&#xff1a;TC协调之后&#xff0c;决定执行RM是否提交或者回滚。 spring公共组件部分 1、SeataAutoConfiguration类 利用springboot自动装配机制从…

HTML---利用CSS3制作网页动画

文章目录 目录 文章目录 本章目标 一.CSS3概述 CSS函数概述 二.CSS3变形 transform属性 translate()&#xff1a;平移函数 scale()&#xff1a;缩放函数 rotate()&#xff1a;旋转函数 skew()&#xff1a;倾斜函数 三.CSS3过渡 四.CSS动画 练习 旋转按钮 本章目标 会使用…

Spark作业的调度与执行流程

Apache Spark是一个分布式计算框架&#xff0c;用于处理大规模数据。了解Spark作业的调度与执行流程是构建高效分布式应用程序的关键。本文将深入探讨Spark作业的组成部分、调度过程以及执行流程&#xff0c;并提供丰富的示例代码来帮助大家更好地理解这些概念。 Spark作业的组…

utf8mb4_0900_ai_ci、utf8mb4_0900_as_ci、utf8mb4_0900_as_cs 这三者有什么区别

utf8mb4_0900_ai_ci, utf8mb4_0900_as_ci, 和 utf8mb4_0900_as_cs 是 MySQL 数据库中使用的字符集和校对规则。这些校对规则决定了如何比较和排序字符数据。它们属于 utf8mb4 字符集&#xff0c;这是 UTF-8 编码的超集&#xff0c;支持最多 4 个字节的字符&#xff0c;能够存储…

MySQL多表查询的方法(含例子)

我们查两张及以上表的时候&#xff0c;普通的查询语法(select * from 表名&#xff09;不能发挥作用。下面我演示两张表和三张表的查询方法。 前提&#xff1a; 如图存在三张表a&#xff0c;b&#xff0c;c&#xff1a;a表是学生基础信息&#xff0c;b表是教师学科信息&#…

校园外卖趋势洞察与未来预测系统

校园外卖趋势洞察与未来预测系统 项目概述数据集技术栈功能特点创新点实施步骤 项目概述 本项目旨在打造一套基于Flask和Echarts的校园外卖趋势洞察与未来预测系统。通过深度分析模拟校园外卖数据集&#xff0c;结合机器学习算法&#xff0c;我们致力于提供对学生外卖点餐规律…

【基础】【Python网络爬虫】【3.chrome 开发者工具】(详细笔记)

Python网络爬虫基础 chrome 开发者工具元素面板&#xff08;Elements)控制台面板&#xff08;Console&#xff09;资源面板&#xff08;Source&#xff09;网络面板&#xff08;Network&#xff09;工具栏Requests Table详情 chrome 开发者工具 ​ 当我们爬取不同的网站是&…

Android studio 多界面的跳转和返回

一、新建一个Empty Activity项目&#xff1a; 二、修改activity_main.xml布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/a…

unity控制摄像机几种视角实现方式

目录 1、按下鼠标右键可以实现摄像机上下左右旋转 2、自由视角 3、摄像头跟随视角 4、跟随自由视角 5、第一人称跟随视角 python学习汇总连接&#xff1a; 1、按下鼠标右键可以实现摄像机上下左右旋转 这段代码定义了一个名为CameraRotate的脚本&#xff0c;用于控制摄像…