用Servlet 编写hello world

news2024/11/23 1:42:09

     第一次接触 Servlet,使用 Servlet 编写代码并配合 Tomcat 在浏览器中展示代码效果,也算是自己这么长时间学习java的一次飞升吧。

     本文总结了六步使用 Servlet 编写 helloworld步骤,希望给初学Servlet的同学一些帮助。

0、准备工作

       1)了解并安装 Tomcat

在编写代码之前,大家需要安装 Tomcat !!

如果没有安装的haute,可以参考该文章进行安装:Tomcat 安装和简单介绍

       2)maven 介绍

     maven 是一个构建工具,也就是 build (编译、打包、部署...)。

     我们在编写Servlet项目时,会遇到一些复杂的程序,编译和打包起来特别麻烦。比如 A 依赖 B,B 依赖 C,此时如果想要编译运行A,就必须先编译运行 B,要想编译运行 B,就必须先编译运行 C。

     而 maven 就是为了解决这个问题的,使我们在开发比较复杂的项目的时候,也可以比较方便的进行一些列操作(编译、打包、管理依赖...)。 

1、创建项目

       首先创建一个maven项目

 此处我的 idea 版本是 2022版的

 项目创建好之后的目录结构如下

src : 用来存放源代码

  • main :业务代码  
    • resources : 存放代码中需要依赖的资源
  • text: 测试代码
  • pom.xml : 项目中的全局配置文件(写了很多与项目相关的配置属性)

2、引入Servlet依赖

Servlet 并不是 Java 标准库自带的,要想使用,我们就需要额外的下载安装,并引入项目中!

此时就要借助 maven ,把我们使用的库里依赖的东西,自动从中央仓库上,下载下来

     ①在中央仓库 https://mvnrepository.com/ 中,搜索 Servlet,结果中第一个就是我们需要下载的

      ② 根据 Tomcat 选择相对应的版本,这里我选择的是 3.1-0版本

 

 Servlet 3.1.0 和 Tomcat 8.5 和 jdk 8 是配套的

     ③ 选择 maven,把maven里的xml 复制到 pom.xml 中

 注意:复制之前,要先创建<dependencies>标签,然后把上述xml 复制进去

<dependencies> 标签内部放置项目依赖的 jar . maven 会自动下载依赖到本地
此处如果大家网络不好,复制进去的代码就可能报红,大家可以点击右侧maven,然后点击刷新等待即可 

3、创建目录结构

   虽然 maven 已经给我们创建出一些目录了,但是还不够,我们需要再创建一个符合 Tomcat 要求的目录结果。

     ① 在 main 目录下,创建 webapp 目录

     ② 在新建的 webapp 目录下,创建WEB-INF 目录

 

     ③ 在新建的 WEB-INF 目录下,创建 web.xml 文件

 注意:这一串目录结构、位置、名字、层次,都得严格一致!!!

     ④ 编写 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 目录,比如创建一个类 HelloServlet

      第一步:把创建的 HelloServlet 类继承 HttpServlet

      第二步:实现父类 doGet方法,并把super方法删除!!

      第三步:打印 helloword

@WebServlet("/helloworld")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 在Tomcat日志中打印helloworld
        System.out.println("helloword");
        // 给客户端返回helloworld 也就是在客户端页面打印helloworld
        resp.getWriter().write("helloworld");
    }
}

@WebServlet("/helloworld"):

  • 此处写下的 "/helloworld" 意思是 GET请求并且 URL 里面路径是 /helloworld 的请求,才会生效,才会调用这个 doGet 方法。
  •  也就是说给不同的路径,关联上不同的类!!!
  • "/helloworld" 是一个虚拟的资源,硬盘上并没有这个 "/helloworld" 文件

doGet: 表示当前 Tomcat 在收到某些 GET 请求的时候,会调用该方法

  • 作用:根据请求,计算响应        
  • 参数:
    • req : 请求(浏览器给Tomcat发的数据)
    • resp : 响应(Tomcat给浏览器发回的数据)

5、打包程序

   当前写的 Servlet 代码,是没有main方法的,也就是所运行不起来。所以我们要在该 Servlet 代码打包方法 Tomcat 程序中,才能运行。

    使用 maven 打包,默认会生成一个jar 包,而我们需要的 war 包,所以我们就要修改配置文件,在pom.xml 中project 标签中下加下面一段代码即可。

    <packaging>war</packaging>
    <build>
        <finalName>Servlet</finalName>
    </build>

 finalName标签中的是war包的名字,可以自定义

        然后使用 maven 进行打包。打开 maven 窗口 (一般在 IDEA 右侧就可以看到 Maven 窗口, 如果看不到的话,可以通过 菜单 -> View -> Tool Window -> Maven 打开)

        最后展开 Lifecycle , 双击 package 即可进行打包。

 打包成功的话,底部会出现一个success 文字 。

此时就可以在右侧target目录中看见我们打包的war包了

6、部署程序

     我们把 war 包拷贝到 Tomcat 的 webapps 目录下。

     启动 Tomcat,Tomcat 就会自动把 war 包解压缩。 

7、验证程序

此时通过浏览器访问   http://127.0.0.1:8080/Servlet/helloworld    就能在浏览器中看到结果啦

 终端中,Tomcat 也会打印日志 helloworld

 注意:URL 中的PATH分成两个部分,其中 Servlet 为 Context Path,helloworld 为 Servlet Path

在浏览器中输入URL求取转换步骤如下:

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

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

相关文章

Python 随机函数random详解

介绍这7个随机数的方法应用&#xff1a; 1、random.random&#xff08;&#xff09;查看源码 说明&#xff1a;用于生成一个0到1的随机符点数: 0 < x < 1.0 import random for i in range(10):print(random.random()) 2、random.uniform&#xff08;&#xff09;查看源码…

深度学习(14)—— 关于Tensorboard

深度学习&#xff08;14&#xff09;—— 关于Tensorboard 文章目录深度学习&#xff08;14&#xff09;—— 关于Tensorboard前言1. “一参数一图”2.“多参数一图”3. “一栏一图”4. “一栏多图”在模型训练过程中loss和acc都会发生变化&#xff0c;常常需要记录这些值&…

Spring Security(2)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 前面已经把需要的环境准备好了&#xff0c;包括数据库和SQL语句&#xff0c;现在再来写代码。至于安装MySQL什么的就跳过去了&#xff0c;娘度子里面一大把。 先…

保护Excel表格的4种常用方法

今天来说说&#xff0c;根据不同需求&#xff0c;我们可以给Excel表格设置保护的4种常用方法&#xff0c;记得保存收藏&#xff0c;总有一个适合你。 方法一&#xff1a; 如果不想Excel表格被他人随意打开&#xff0c;可以设置“打开密码”&#xff0c;这样只有输入设置的密码…

OpenSergo 流量路由:从场景到标准化的探索

流量路由&#xff0c;顾名思义就是将具有某些属性特征的流量&#xff0c;路由到指定的目标。流量路由是流量治理中重要的一环&#xff0c;多个路由如同流水线一样&#xff0c;形成一条路由链&#xff0c;从所有的地址表中筛选出最终目的地址集合&#xff0c;再通过负载均衡策略…

git ssh permission denied解决办法

git ssh permission denied解决办法 1. SSH配置 参考链接 SSH配置文档 2. ssh报错(permission denied) 解决方式&#xff1a; 找到git安装目录 进入etc/ssh文件夹内&#xff0c;找到ssh_config文件&#xff0c;在# Added by git-extra后面添加t替换代码具体参考下面图片 H…

2022强网拟态pwn-store

2022强网拟态pwn-store 这是一个综合题&#xff0c;io链接的构造&#xff0c;orw的系统位数的限制 首先是这个沙箱&#xff0c;64位只有r和w&#xff0c;一开始看的时候很纳闷多了32位的限制&#xff0c;64位还没有o&#xff0c;查了一下才知道这样的seccomp-tools是以64位的…

Design Compiler工具学习笔记(4)

目录 引言 知识储备 实际操作 设计源码 Vivado2018.3仿真 VCS2016仿真 Tcl脚本 约束脚本 MY_TOP.tcl 运行脚本 RUN.tcl 引言 本篇继续学习 DC的基本使用。本篇主要学习 DC 需要的环境约束。 前文链接&#xff1a; Design Compiler工具学习笔记&#xff08;1&#x…

【苹果推iMessage位置推相册共享推送】软件安装上传到appstore都是需要的Activity

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

maxcompute优化慢执行语句思路

maxcompute慢执行任务优化如何锁定慢执行任务&#xff1f;判断是何种类型的慢任务如何锁定慢执行任务&#xff1f; 第一步&#xff1a;如果是周期任务可以通过任务执行日志中的LogView 链接查看 &#xff0c;如果是临时任务则通过maxcompute命令行 执行wait instanceId instanc…

现代密码学导论-2-古典密码及其密码分析

目录 1.3 古典密码和密码分析 1.3.1 凯撒密码 Caesar’s cipher 1.3.2 移位密码 shift cipher 1.3.3 充分密钥空间原则 1.3.4 单表代换密码 mono-alphabetic substitution cipher 1.3.5 利用字母频率对移位密码的一种改进攻击 1.3.6 维吉尼亚密码(多表代换密码)Vigenere…

Ansys Zemax | 使用 OpticStudio 进行闪光激光雷达系统建模(上)

前言 在消费类电子产品领域&#xff0c;工程师可利用激光雷达实现众多功能&#xff0c;如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同&#xff0c;但是 “闪光激光雷达” 解决方案通常都适用于在使用固态光学元件的目标场景中生成可检测的点阵列。凭借具…

教育行业数据可视化应用方案与实践

教育行业背景介绍 随着信息技术发展&#xff0c;教育领域中的学习方式、教学模式、教学内容均已发生重大变革&#xff0c;以云计算、人工智能、物联网、大数据等技术的结合&#xff0c;“智慧教育”的需求也变的紧迫&#xff0c;需要围绕“智慧教育”而产生的产品和解决方案也…

课程思政案例----简道云零代码应用开发实训平台

为了更好推动零代码开发课程的思政建设&#xff0c;在传递大数据相关知识和技能的同时帮助学生塑造正确的世界观、人生观和价值观。我们整理了与简道云平台结合的应用案例&#xff0c;开放给全国各大高校使用。 1、杨卫红&#xff1a;一位55岁不懂代码的农经员&#xff0c;为家…

Windows下将文件夹映射为磁盘

Windows下将文件夹映射为磁盘背景描述方法一&#xff1a;使用命令方法二&#xff1a;映射网络驱动器背景描述 公司发的新电脑&#xff0c;只有普通用户权限&#xff0c;所以可想而知磁盘只有一个C盘&#xff0c;但是以前习惯性的将一些软件啥的放在D盘中&#xff0c;所以把C盘…

打好“三场仗”,数据库新晋厂商石原子胜券在握

纵观数字经济时代&#xff0c;数据规模呈爆发式增长&#xff0c;国产化替代加速发展。据中国信通院《数据库发展研究报告(2021年)》预测&#xff0c;预计到2025年&#xff0c;全球数据库市场规模将达到798亿美元&#xff0c;其中&#xff0c;中国数据库市场总规模将达到688亿元…

js文件模块化引用问题(JavaScript modules)

有个前端项目&#xff0c;需要用到配置文件。这个配置文件实在是太大了&#xff0c;就想拆成多个小的&#xff0c;然后一一引入&#xff0c;组合成一个完整的配置文件。 如果是vue代码&#xff0c;这种情况根本是手到擒来&#xff0c;不费吹灰之力&#xff0c;而该前端项目是个…

(WRF-UCM)高精度城市化气象动力模拟技术

气候变化及应对是政府、科学界及商业界关注的焦点。气候是多个领域&#xff08;生态、水资源、风资源及碳中和等问题&#xff09;的主要驱动因素&#xff0c;合理认知气候变化有利于解释生态环境变化机理及过程&#xff0c;而了解现在、未来气候变化则是进行生态、环境及能源评…

vs2022 编译遇见编译器堆空间不足,解决办法(针对CMAKE工程)

1、原因&#xff1a; 就是编译工程文件太大&#xff0c;导致堆栈溢出。原始vs默认的编译器是32位&#xff0c;我们设置为64位就可解决部分问题。 具体可能造成的原因可以参考&#xff1a; 错误 C1060 |微软学习 (microsoft.com) 2、解决&#xff1a; 1、需要提前安装cmake…

iOS关于搜索不规则瀑布流布局的实现小结

最近在项目开发中遇到了不规则搜索布局的问题。 之前常用的解决方案是用一个tableview用一个循环动态的加载&#xff0c;唯一的缺点是需要动态的移除&#xff0c;其实也已经足够。ios搜索历史记录不规则布局-IOS代码类资源-CSDN下载&#xff0c;需要的话可以下载使用。请教了一…