如何使用Servlet写一个简单的网站

在这里插入图片描述

文章目录

  • 前言
  • 1. 创建项目
  • 2. 引入依赖
  • 3. 创建目录
  • 4. 编写代码
  • 5. 打包程序
  • 6. 部署
  • 7.验证程序
  • 将 tomcat 集成到 idea 中

前言

前面我们学习了Java中常用的 HTTP 服务器 tomcat 的安装和使用,那么今天我们将使用这个 HTTP 服务器为大家写一个简单的网站,这个网站虽然简单,就是一句简单的话,没有很复杂的逻辑,但是要想把这句话体现在网站上也不是很简单的事情。

1. 创建项目

这里我们创建的项目跟平时使用 idea 的时候有些许的不同,在这里我们要创建的是 maven 项目。

什么是 maven 呢?

Maven是一个项目构建和管理工具,它使用项目对象模型(POM)来描述项目,包括项目的结构、依赖关系、构建配置等信息。Maven提供了一组标准集合,包括构建、文档、报告、依赖管理等,可以方便地编译代码、进行依赖管理、管理二进制库等。Maven还提供了一个项目生命周期(Project Lifecycle),定义了项目的构建、测试、发布等阶段,每个阶段都有相应的插件(plugin)可以运行。

Maven的依赖管理系统可以自动下载所需的jar包,并且能够防止版本冲突。它还提供了一个仓库管理器,可以为企业组织提供可部署组织内部生成的构件的地方。此外,Maven可以与主流的IDE集成,如Eclipse、IDEA等,可以很方便地实现自动化构建和部署。

使用Maven可以将项目的版本控制在同一个地方,避免版本混乱。它还可以生成文档,并可以方便地管理文档。此外,Maven还可以方便地管理测试用例和测试报告,并与持续集成工具配合使用,实现自动化构建和部署。

Maven是一个强大的项目构建和管理工具,可以提高开发效率,简化项目管理过程,并使得项目更加可维护、可重用。

maven 优势:

  1. 项目理解:Maven能够方便地解析项目的结构,它使用标准的项目布局,可以很容易地理解项目的目录结构,对于已有的项目,Maven能够自动地抽取项目信息,这样用户不再需要花费大量的时间去理解项目的结构。
  2. 依赖管理:Maven能够管理项目的依赖,可以自动下载所需的jar包,并且能够防止版本冲突。
  3. 项目管理:Maven基于项目对象模型,可以通过一小段描述信息来管理项目的构建、报告和文档,能够很方便地管理项目报告,生成站点,管理jar文件等。
    统一的构建环境:使用Maven管理的Java项目有着相同的项目结构,所有的java代码都放在src/main/java,所有的测试代码都放在src/test/java。
  4. 插件机制:Maven的plugin比较多,可以有更多功能,现有体系比较开放,采用的技术相对比较通用和成熟,plugin的机制也可以便于我们扩展更多功能。
    仓库管理器:Maven的仓库管理器能够为组织提供可部署组织内部生成的构件的地方。
  5. 与IDE集成:Maven可以很方便地与Eclipse、IDEA这样的主流的IDE集成。
  6. 版本控制:使用Maven可以将项目的版本控制在同一个地方,避免版本混乱。
  7. 持续集成:Maven可以与持续集成工具配合使用,实现自动化构建和部署。
  8. 文档管理:Maven可以生成文档,并可以方便地管理文档。
  9. 测试管理:Maven可以方便地管理测试用例和测试报告。
  10. 发布管理:Maven可以方便地发布项目到仓库或者私有仓库。
  11. 权限管理:Maven可以与权限管理工具配合使用,实现权限控制。
  12. 日志管理:Maven可以方便地记录日志,并可以方便地查看日志。
  13. 配置管理:Maven可以方便地管理配置文件。

简单来说就是咱们写网站,文件和文件之间的依赖关系可能会很复杂,所以为了解决文件和文件之间复杂的依赖关系,我们就选择使用 maven 来为我们维护好文件之间复杂的依赖关系。

可以放心的是因为 idea 知道 maven 的这些优势,所以我们在下载 idea 的时候就自动集成了 maven,我们在创建项目的时候选择 maven 就可以了。

在这里插入图片描述

在这里插入图片描述

创建之后会形成下面这样的目录形式,并且当你第一次创建 maven 项目的时候,需要保证有一个好的网络,因为他会自动下载相关的依赖组件。

在这里插入图片描述
在这里插入图片描述

2. 引入依赖

因为 servlet 是第三方库,所以要想使用 servlet 就需要手动安装引入,这里我们可以手动下载,也可以选择让 maven 帮我们下载,我们只需要将 servlet 所在的 jar 包在哪就可以了。在 maven 中央仓库中也是有这个 servlet。

进入 maven 中央仓库,https://mvnrepository.com/

在这里插入图片描述

在上面导航栏中搜索 servlet。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
tomcat 和 servlet 的对应版本关系。
在这里插入图片描述

在找到对应的 tomcat 和 servlet 的对应关系之后,我们就将下面的这个 servlet 坐标给复制到 idea 中。

在这里插入图片描述
这里在 pom.xml 文件下创建一个 <dependencies> </dependencies>标签 然后将我们刚复制的坐标粘贴到这个标签中。

在这里插入图片描述

3. 创建目录

这里为什么还需要创建目录呢?前面我们创建 maven 项目的时候,不是自动帮我们创建目录了吗?其实前面创建的目录只是 maven 需要的目录,而 maven 项目不仅仅只是适用于 tomcat ,还适用于其他的项目,而其他有些项目在 maven 目录的基础上还需要额外的创建一些额外的目录,这里的 tomcat 就是,在 maven 目录的基础上,tomcat 对目录结构这件事上还做了其他的要求。

在 main 中创建一个 webapp 目录。
在这里插入图片描述
在这里插入图片描述

在 webapp package 下创建 WEB-INF 目录。

在这里插入图片描述
在这里插入图片描述

然后在 WEB-INF 目录下创建一个 web.xml 文件。

在这里插入图片描述

在这里插入图片描述

然后在 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. 编写代码

当完成前面的准备工作了之后,就可以编写我们的业务代码了,我们在 java 文件下创建 .class 文件。

在这里插入图片描述

在这个文件中继承 HttpServlet 父类,并且重写 doGet 方法。这个不是都是重写 doGet 方法,而是你的请求是 GET 请求就重写 doGet 方法,如果是 POST 请求,就重写 doPost 请求。

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello java");
        resp.getWriter().write("hello java");
    }
}

这里 System.out.println("hello java"); 是将结果打印在 tomcat 的控制台中,而 resp.getWriter().write("hello java"); 则是将结果显示在网页中。

当写完这些代码之后,还要注意在类的开头加上注解 @WebServlet("/hello") 这个参数必须以 / 开头,表示 HTTP 的路由配置路径,也就是我们 HTTP 请求中 URL 部分。

5. 打包程序

当写完代码之后,我们就需要将这个项目打包成 war 包,以便 tomcat 能够启动它。在打包之前,我们还需要在 pom.xml 中添加一些代码才能完成打包操作。

<packaging>war</packaging>
    <build>
        <finalName>java</finalName>
    </build>

在这里插入图片描述
双击 package 。
在这里插入图片描述

当出现 build success 说明打包成功。

在这里插入图片描述

6. 部署

打包成功会会生成一个 target 目录,我们在这个 target 目录中找到刚刚打包好的 war 包,然后进入到这个文件路径,将这个文件复制到 tomcat 的 webapps 目录下。

在这里插入图片描述
在这里插入图片描述

7.验证程序

当部署完成之后,就可以启动 tomcat 验证我们这个程序了。需要先启动 tomcat ,然后在浏览器搜索栏中输入 URL 127.0.0.1:8080/java/hello 这里,java就是我们的 war 包名,而 hello 则是我们这里的路由路径。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将 tomcat 集成到 idea 中

通过以上操作我们就可以实现一个简单的网页。但是如果我们想要更改我们的代码的话,就需要重新打包,并且重新部署,这个过程是比较麻烦的,所以是否有方法可以简化这个过程呢?答案是有的,我们可以通过 idea 插件,将 tomcat 继承到 idea 中,这样就能通过 idea 一键重新打包和部署了。

在这里插入图片描述
在这里插入图片描述
如果在 idea 中下载不了 tomcat 插件的话,我们可以直接在浏览器上下载,然后将下载的 jar 包拖入 idea,idea 会自动下载。

进入这个网站 https://plugins.jetbrains.com/idea搜索tomcat,下载就可以了。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成上面的操作之后我们就可以运行这个程序了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI技术如何融合应用于工业物联网

人工智能技术在近年来得到飞跃性地发展&#xff0c;在自主识别、分析、判断、规划等功能方面都进步显著&#xff0c;也已经应用于越来越多的行业产业。 在工业物联网领域&#xff0c;人工智能也将成为一大助力&#xff0c;通过与工业物联网系统集成融合&#xff0c;能够为工业…

Word多出一页空白页删不掉?这5个方法要记好!

“我在用Word编写文档时经常会遇到一个问题&#xff0c;文档排版都完成了&#xff0c;但是总会有一个空白页是无法删掉的&#xff0c;怎么解决这个问题呢&#xff1f;请大家帮帮我&#xff01;” 在使用Word编辑文档时&#xff0c;可能很多用户有时都会遇到一个常见问题&#x…

小型洗衣机哪个牌子质量好?性价比高的迷你洗衣机推荐

这两年内衣洗衣机可以称得上较火的小电器&#xff0c;小小的身躯却有大大的能力&#xff0c;一键可以同时启动洗、漂、脱三种全自动为一体化功能&#xff0c;在多功能和性能的提升上&#xff0c;还可以解放我们双手的同时将衣物给清洗干净&#xff0c;让越来越多小伙伴选择一款…

vue中bus的详细使用

vue中关于兄弟组件bus的使用方法 首先&#xff0c;bus可以用在任何组件之间的传值 废话不多说&#xff0c;请看下面代码解说 首先&#xff0c;先创建bus.js文件&#xff0c;然后在引用&#xff0c;这里有两种引用方法&#xff1a;局部引用和全局引用。 // bus.js文件内容 imp…

客服易中招的3大常见职业病及缓解方法分享

1️⃣无论和谁聊天都可以“亲”~“亲亲”我也很无奈&#xff0c;但真的习惯了&#xff08;其实也不是什么病啦&#xff0c;还能让朋友觉得我性格变好了呢哈哈哈&#xff09; 2️⃣鼠标手&#xff08;腕管综合征&#xff09;其实很多上班族都有这个职业病。但由于我们客服工作属…

OpenHarmony 开发者论坛正式上线,盖楼赢惊喜好礼~

你&#xff0c;是否曾遇到 OpenHarmony 开发难题&#xff0c;却不知找谁解答&#xff1f; 你&#xff0c;是否曾想分享 OpenHarmony 技术&#xff0c;但没有一个官方投稿平台&#xff1f; 你&#xff0c;是否想加入火热的 OpenHarmony 开源项目&#xff0c;却不知如何参与和贡…

Spring 只用一招,就摆脱被垃圾回收的命运,拯救了自己

SpringBoot ApplicationContext 会被 JVM 当成垃圾对象&#xff0c;然后回收掉吗&#xff1f; 最近五阳哥在复习JVM 垃圾回收的知识&#xff0c;被别人问到这个问题&#xff0c;我心里感到一惊&#xff0c;如果Spring 被回收掉&#xff0c;Spring管理的bean全部会被回收&#…

【Proteus仿真】【Arduino单片机】HC-SR04超声波测距

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、HC-SR04超声波传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示超声波检测距离。 二、软件设计 …

vcenter server (部署较大服务器)

作用 VMware vCenter是集中管理控制台&#xff0c;管理所有安装了VMware ESXI的主机 使用vCenter Server可以对虚拟机进行实时的监控&#xff0c;包括服务器硬件、网络和共享的存储&#xff0c;并可以进行故障诊断。 可以查看实时的统计和图表&#xff0c;监控虚拟主机和资源…

盘点49个Python网站项目Python爱好者不容错过

盘点49个Python网站项目Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1aFYJtNZjgst1l5KFBckP2A?pwd8888 提取码&#xff1a;8888 项目名称 A simpleshorturl…

使用vscode的ssh进行远程主机连接

1. 首先安装好“远程资源管理器”&#xff08;这一步建议谷歌下&#xff09;&#xff0c;如下图所示 2. 按F1&#xff0c;设置远程主机信息的SSH Configuration config file, 注意这里可以添加多个远程主机信息&#xff0c;通过注释掉无关远程主机信息来选择想连接的那个主机&a…

国产双核DSP与 TI 的TMS320F28377 大PK

国产DSP&#xff0c;QX320F28377与 TI的 TMS320F28377 孰强孰弱

计算机毕业设计项目选题推荐(免费领源码)PHP+MySQL在线网络教育平台66984

目 录 摘要 1 绪论 1.1 课题背景 1.2意义 1.3HTML介绍 1.4JavaScript 运行模式 1.5css3工作原理 1.6论文结构与章节安排 2 在线网络教育平台分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 3 2.2.2数据修改流程 4 2.2.3数据删除流程 4 2.3 系统功能分析 …

新生儿吐奶:原因、科普和注意事项

引言&#xff1a; 新生儿吐奶是许多新父母常见的经历&#xff0c;尽管大多数情况下是正常的&#xff0c;但对于父母来说&#xff0c;了解吐奶的原因以及如何处理是至关重要的。本文将科普新生儿吐奶的原因&#xff0c;提供相关信息&#xff0c;并为父母和监护人提供注意事项&a…

第二篇 《随机点名答题系统》——题库管理详解(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)

目录 1.功能需求 2.数据库设计 3.流程设计 4.关键代码 4.1.题库维护 4.1.1数据请求示意图 4.1.2添加题库&#xff08;login.php&#xff09;数据请求代码 4.1.3删除题库&#xff08;login.php&#xff09;数据请求代码 4.1.4 业务处理Service&#xff08;tiKuService…

Redis最新2023年面试题高级面试题及附答案解析(1)【Redis最新2023年面试题高级面试题及附答案解析-第三十八刊】

文章目录 Redis最新2023年面试题高级面试题及附答案解析(1)01、为什么 Redis 需要把所有数据放到内存中&#xff1f;02、查看 Redis 使用情况及状态信息用什么命令&#xff1f;03、MySQL里有2000w数据&#xff0c;Redis 中只存20w的数据&#xff0c;如何保证 Redis 中的数据都是…

Spring Boot MyBatis Plus 配置数据源详解

文章目录 1. 引入 MyBatis Plus 依赖2. 数据源配置3. MyBatis Plus 配置4. 动态数据源配置&#xff08;多数据源&#xff09;5. 小结 &#x1f389;欢迎来到架构设计专栏~Spring Boot MyBatis Plus 配置数据源详解 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&…

Linux电脑投屏到电视的简洁操作

Linux电脑投屏到安卓电视有多种好处。 首先&#xff0c;通过将Linux电脑与安卓电视连接&#xff0c;用户可以轻松地将电脑屏传输到电视上&#xff0c;从而获得更加舒适和清晰的视觉体验。 其次&#xff0c;投屏功能可以帮助用户在电视上展示电脑中的图片、视频和其他多媒体文件…

GitHub Universe 2023:AI 技术引领软件开发创新浪潮

GitHub 是全球领先的软件开发和协作平台&#xff0c;数百万开发者和企业在此分享、学习和创建卓越的软件。同时 GitHub 处在 AI 技术前沿&#xff0c;通过其先进的 AI 技术增强开发者体验并赋能未来软件开发的使命。在今天的文章中&#xff0c;我们将一起看看在 GitHub 年度大会…

InputStream和OutputStream

文章目录 &#x1f4a1;FileInputStream 构造方法&#x1f4a1;InputStream 常用方法&#x1f4a1;OutputStream 概述&#x1f4a1;OutputStream 常用方法&#x1f4a1;PrintWriter&#x1f4a1;小程序练习 使用字节流进行读/写操作时&#xff0c;是以字节为单位的&#xff1b;…