9.4.1网站编写(Tomcat和servlet基础)

news2024/11/17 5:22:01

一.Tomcat:

1.Tomcat是java写的,运行时需要依赖jre,所以要装jdk.

2.建议配置好环境变量.

3.默认端口号8080(业务端口)可能会被占用,建议改一下(本人改成了9999).

4.另一个默认端口是8005(管理端口).

二Servlet基础(编写一个hello world代码):

整体分为7个步骤,分别是创建项目,引入依赖,

1.创建项目:自动生成的java下的Main和org.example不使用,删除掉.pom.xml很重要.

2.引入依赖:进入maven的中央仓库,搜索servlet,Tomcat8使用3.1.0版本(Maven中央仓库地址).

将以下代码贴到pom.xml中,注意需要创建标签(<dependencies> </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>

60d2d0f408774826a968e38d38cbe0fc.png 

注意:首次使用会自动下载很多依赖,所以会慢一些,之后会很快. 

此处提供一个阿里的镜像源(阿里镜像源)

3.手动创建一些必要的目录(文件):

首先在main目录下创建一个目录(Directory)(和java平级),名字是webapp(规定这个名字,不能用大写).在刚刚创建的目录下,再创建一个目录(Directory),名字是WEB-INF(规定这个名字,不能用小写).接着在上一步创建的目录下,创建一个文件(File),名字是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>

上述代码可能会标红,但不是错误,不影响使用.

4.编写代码:

a.在java路径下创建类,要让它继承(extends)HttpServlet类(这个类如果标红,需要去pom.xml那里手动刷新一下).

b.重写doGet方法(根据需求,还可以重写doPost,doPut......方法)

1e7c1a12c1fc49819046475c10ebd817.png 064cbfd1cb384891b1d8b8dc5bd5c251.png

注意配置路由:写完代码之后,要在类的上面加上代码@WebServlet("/hello").表示当请求路径在含义hello的时候,才会执行到上述代码.主要是因为这里面可以有多个类,上述代码用来区分不同的类.

f7bc272d906e47fc8debee6635db2fa7.png

这里需要重点注意,doGet方法不支持body数据中的读取。

5.通过maven进行打包:

a.在右边点击maven.

f256a8e3b7a5440291fe61493264233d.png

eb6423617c374150ab7ad1eb61f2f1c2.png

 79f64335c0164fc1b9428eac98228a41.png

b.

1)修改成war包:在pom.xml文件中添加标签(<packaging>war</packaging>)(这个标签是<project>标签的子标签).

2)可以选择加上(<build><finalName>???</finalName></build>)给war包加上名字.

a1327ed36b0a4ce1b64d3399cabbe75d.png 

然后重新打包,就是war包 

6.部署:把war包拷贝到tomcat的webapps目录中,tomcat会自动解压缩,并新增两条日志.

7.验证程序,使用浏览器.

afc6b461f00e4282873fb9ab273ea95c.png 

注意:通过第一级路径,确定一个webapp.

        通过第二级路径,确定哪个servlet.

        通过方法,确定执行servlet中的哪个方法.

8.问题说明:

如果出现tomcat cmd窗口正常启动,但是浏览器页面一直加载的情况,需在cmd窗口敲回车键.

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣:104. 二叉树的最大深度(Python3)

题目&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱…

使用FileZilla连接本地和服务器进行文件传输

项目场景&#xff1a; 使用FileZilla连接本地和服务器进行文件传输 问题描述 使用FileZilla连接本地和服务器进行文件传输出现150或425 原因分析&#xff1a; 1.防火墙是否开放端口 2.公共ip或账号密码是否正确 解决方案&#xff1a; 从配置到解决问题的步骤 1.下载安装F…

IC修真院 | 业内首个模拟流片项目重磅上线!

自从不久前IC修真院数字方向65nm流片项目上线&#xff0c;就开启了大家对模拟流片项目的“催更”日常。 这里放个口&#xff1a;了解流片项目实战 众所周知IC行业经验至上&#xff0c;其中模拟IC尤甚。 大多数同学在高校中并没有机会接触流片项目&#xff0c;更别说积累经验了…

D. The Enchanted Forest

Problem - D - Codeforces 思路&#xff1a;一直在正向的考虑&#xff0c;这个题从反向考虑更加容易&#xff0c;首先如果k>n的话&#xff0c;初始的一定都可以拿完&#xff0c;并且我们知道生长的蘑菇的总量是n*k个蘑菇&#xff0c;那么如果我们知道剩下了多少个蘑菇&#…

【Java 基础篇】深入理解 Java 管道(Pipes):从基础到高级

Java 管道&#xff08;Pipes&#xff09;是一种强大的工具&#xff0c;用于实现进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;。在本文中&#xff0c;我们将深入探讨 Java 管道的各个方面&#xff0c;从基础概念到高级用法&#xff0c;旨在帮…

linux-crontab每分钟定时执行/定时任务调度

文章目录 一、前言二、crontab概述2.1、crontab命令简介2.2、linux定时任务分类 三、安装crontab四、crontab使用4.1、crontab语法4.2、定时任务设置4.3、定时任务格式4.4 crontab表达式在线验证 五、实例六、定时任务的日志 一、前言 本文讲解linux上如何调用定时任务&#x…

以太网ARP测试实验

1.1 ARP测试整体框架 当上位机发送ARP请求时&#xff0c;FPGA返回ARP应答数据&#xff1b;当按下FPGA的触摸按键时&#xff0c;FPGA发送ARP请求&#xff0c;上位机返回ARP应答数据。 PLL时钟对eth_rxc的输入时钟进行相位调整&#xff1b;GMII TO RGMI 模块负责将双沿(DDR)数据和…

树莓派安装mariadb

mariadb与mysql十分类似&#xff0c;他们的使用方法类似&#xff0c;默认端口也都是3306 文章参考 树莓派mysql安装配置 – 蒋智昊的博客 目录 1 树莓派系统情况 2 安装mariadb 3 启动数据库 4 设置数据库自启动 5 进入数据库 1 树莓派系统情况 用的是树莓派4&…

Linux性能调优 —— 内存篇

Linux性能调优 —— 内存篇 Linux内存的工作原理 内存映射的概念 虚存空间分布 内存分配与回收 分配 回收 内存查看与分析 查看内存使用情况 命令&#xff1a;free 命令&#xff1a;vmstat 命令&#xff1a;top 分析单个进程 命令&#xff1a;ps -p Linux内存的工作原理…

把api_key 设置成win10系统变量然后python调用

1 设置环境变量存储秘钥 将API密钥存储在环境变量中&#xff0c;而不是直接写在代码中&#xff0c;可以降低泄露密钥的风险。 新建系统变量&#xff1a; 变量名&#xff1a;OPENAI_API_KEY 变量值&#xff1a;OpenAI API秘钥(上一步复制的那个key) 2获取值 import openai i…

torch.cuda.is_available() 在有的项目中返回True有的返回Flase

问题描述&#xff0c;刚下了一个项目&#xff0c;不能用CUDA 同一个环境不同项目中 torch.cuda.is_available() 返回值不同 问题来源&#xff1a; 这里的运行配置有问题 选择编辑配置并修改对应的解释器 查看 和 是否对应。 import torch print(torch.__version__) prin…

iOS蓝牙 Connection Parameters 关键参数说明

1. 先贴苹果文档 《 Accessory Design Guidelines for Apple Devices 》 2. 几个关键词 connection Event Interval 事件间隔&#xff0c;为1.25ms的倍数。可以简单理解为,是两个连接着的蓝牙设备发送“心跳包”的时间间隔&#xff1b; 范围是 6 ~ 3200&#xff0c;即 7.5…

运算符超详细讲解(系统性学习day5)

目录 前言 一、运算符的概念与分类 二、算术运算符 三、关系运算符 四、逻辑运算符 五、赋值运算符 六、运算符的优先级 总结 前言 本篇文章是对运算符的具体讲解。 一、运算符的概念与分类 概念&#xff1a; 运算符就是一种告诉编译器执行特定的数学或逻辑操作的符…

HarmonyOS开发:解决DevEco Studio低版本导入高版本项目运行失败问题

前言 基于DevEco Studio 4.0 Beta2&#xff0c;hvigorVersion为3.0.2&#xff0c;开发了一个项目&#xff0c;上传到了远程仓库&#xff0c;当同事下载后&#xff0c;却始终无法运行&#xff0c;频繁报错&#xff0c;由于API都是使用的9&#xff0c;第一感觉就是开发环境不同&a…

【LeetCode-简单题KMP】232. 用栈实现队列

文章目录 题目方法一&#xff1a;用输入栈和输出栈模拟队列 题目 方法一&#xff1a;用输入栈和输出栈模拟队列 只有输出栈为空的时候才能将输入栈的元素补充到输出栈&#xff0c;否则输出栈不为空&#xff0c;如果再从输入栈往输出栈填充元素&#xff0c;就会弄乱队列的先进先…

Zotero的下载与使用

Zotero的下载与使用 一、Zotero的下载二、Zotero的使用1、导入文献&#xff08;1&#xff09;直接拖入&#xff08;2&#xff09;在线导入 2、wps插入文献参考3、联动sci hub 实现英文文献一键批量下载 一、Zotero的下载 下载官网&#xff1a;https://www.zotero.org/ 下载地址…

关于feign调用之间boolean类型的序列化问题

报错内容是这样的&#xff1a;这是controller层 这是feign调用层&#xff1a; 调试出错1&#xff1a; 调试出错2&#xff1a; 解决办法&#xff1a;

Pytorch史上最全torch全版本离线文件下载地址大全(9月最新)

以下为pytorch官网的全版本torch文件离线下载地址 torch全版本whl文件离线下载大全https://download.pytorch.org/whl/torch/其中的文件版本信息如下所示&#xff08;部分版本信息&#xff0c;根据需要仔细寻找进行下载&#xff09;&#xff1a;

STM32F4X UCOSIII 消息队列

STM32F4X UCOSIII 消息队列 消息队列消息队列的作用消息队列工作机制消息队列创建消息发送消息发送模式FIFO(先进先出)LIFO(后进先出) 消息接收消息队列删除消息队列常用函数消息队列创建函数消息队列发送函数消息队列接收函数消息队列删除函数 UCOSIII 消息队列例程 消息队列 …

Foxit PDF SDK Windows 9.1 Crack

Foxit PDF SDK 变更日志 Windows/Linux/Mac 2023 年 8 月 新功能/增强功能 在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用 Signature::StartSign() 之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角…