第一个servlet程序、配置web.xml以及使用html表单给服务器传输数据

2023-10-27

一、Serlvet简介

serlvet是一个服务器小程序,它可以对用户的请求(request)作出响应(response)。

举个例子,当我们在html页面填写一个表单时,我们点击提交,这就能发送一个请求,服务器可以接收到我们的请求然后执行相应的servlet程序来作出响应。

html表单发送请求:
在这里插入图片描述
响应结果:
在这里插入图片描述
浏览器/服务器模式(B/S)图示:

在这里插入图片描述

二、如何创建第一个servlet程序

要使用servet程序,你需要先确保你已正确配置好服务器(例如Tomcat)。

1.打开eclipse,新建一个动态web项目,我这里将其命名为了test
在这里插入图片描述
2.在创建好的项目下的src文件夹下创建一个Servlet
在这里插入图片描述
3.这时需要指定一个包名(Java package),我们不妨写servlets,还需要一个Class name,我们不妨起名为Test,之后点击Next,再点击Next
在这里插入图片描述
4.勾选所需要的方法,我们这里只需要勾选前两项以及doGet和goPost,之后点击Finish
在这里插入图片描述
5.这样servlet程序就创建好了,接下来我们需要编辑我们的servlet程序,这里我们只要删除这样一句话:

@WebServlet("Test")

这句话的功能是让eclipse帮我们做一些服务器配置,但我们希望自己去做配置,所以应该把这句话删除,不然的话就是eclipse已经帮我们配置好了,我们再去配置的话,如果我们配置的一些东西和eclipse帮我们配置的一些东西不一致的,就可能产生服务器错误。总之,我们先把这句话删除吧。

三、配置web.xml文件

1.找到web.xml文件并双击打开
在这里插入图片描述
2.如果你的web.xml是这样显示的,那请点击左下角的Source
在这里插入图片描述
3.添加如下代码

  <servlet>
  	<servlet-name>Test</servlet-name><!-- 这里写你给servlet程序起的别名,不妨就和servlet程序名一样-->
  	<servlet-class>servlets.Test</servlet-class><!-- 这里写你的servlet程序的所在包名加.servlet程序名-->
  </servlet>
  <servlet-mapping>
 	<servlet-name>Test</servlet-name><!-- 这里写你之前给你的servlet程序起的别名,一般和上面的servlet-name标签下的内容一致-->
 	<url-pattern>/test</url-pattern><!-- 这里是给你的servlet程序配一个访问地址,注意加/ --> 
  </servlet-mapping>

这样的话你的web.xml看上去应该像这样
在这里插入图片描述
这样就配置好了

四、测试servlet程序

我们现在可以编写一个html或者jsp来生成一个表单,当我们点击提交表单时,将请求传给servlet程序,然后希望servlet程序给我们一些响应。这里以html为例。

1.在项目的WebContent文件夹下新建一个html文件
在这里插入图片描述
2.编写html文件为,其中form标签的action属性值为之前在web.xml配置好的访问地址(这里不需要加/),method属性值使用get

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>
	input{
		display: block;
	}
</style>
<body>
	<form action="test" method="get">
		用户名<input type="text" name="UserName">
		Email<input type="text" name="Email">
		通信地址<input type="text" name="address">
		个人简历<input type="text" name="resume">
		<input type="submit" value="提交">
	</form>
</body>
</html>

3.之后将你的项目部署到服务器,启动服务器再访问你的html,不出意外你将看到这样的界面:(如果你不知道如何将你的项目部署到服务器,你可以查看这篇文章的第5点)
在这里插入图片描述
4.输入信息,点击提交之后,将会调用你的serlvet程序。

在这里插入图片描述
出现了这样的信息,这是因为我们还没有重写serlvet程序的doGet方法,我们一般需要重写serlvet程序,让serlvet程序能返回一个有意义的结果,例如让它输出我们输入的用户名。

五、重写serlvet程序的doGet方法

1.找到我们的serlvet程序,双击打开
在这里插入图片描述
2.重写doGet方法为下图所示,这个方法功能仅仅就是将用户输入的用户名输出,你也可以根据自己的需求来重写你自己的doGet方法

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html ; charset = gb2312");//防止中文乱码
		String UserName = request.getParameter("UserName");//获得用户输入的用户名
		
		//将用户名输出至网页上
		PrintWriter out = response.getWriter();
		out.println(UserName);
	}

六、重启服务器,重新访问html,提交表单看效果

运行结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一个servlet程序、配置web.xml以及使用html表单给服务器传输数据 的相关文章

  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • MI设备中即使应用程序被杀死,如何运行后台服务

    您好 我正在使用 alaram 管理器运行后台服务 它工作正常 但对于某些 mi 设备 后台服务无法工作 我使用了服务 但它无法工作 如何在 mi 中运行我的后台服务 MI UI有自己的安全选项 所以你需要的不仅仅是上面提到的粘性服务 你需
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 不兼容的类型:在 java netbeans 中对象无法转换为 String

    我试图在我的项目中使用对象数组 但出现错误 incompatible types Object cannot be converted to String 在这一行 ST1 new String emt1 emt2 emt3 emt4 现在
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public

随机推荐

  • 9.多重循环结构和程序调试

    2022 9 3 记录学习java的第九天 今天主要学习了多种循环的嵌套使用和程序调试 1 多重循环 使用方法 1 相同循环可以互相嵌套使用 2 各循环之间可以互相嵌套使用 3 外循环变量改变一次 内循环变量要从头到尾变化一遍 即 内循环是
  • 单链表算法实现, 查找, 删除, 销毁

    从链表的指定位置读取参数 从链表中查找第i个元素 用e来保存查找元素的数据 指定位置读取参数 list 头节点 i 要读取的位置 e 保存读取的元素 bool Link GetElem LinkList list int i int e i
  • 数组的indexOf 方法

    1 数组的indexOf 方法 String 类型的使用 let str orange str indexOf o 0 字符串中出现字母 o 的位置 str indexOf n 3 字符串中出现字母 n 的位置 str indexOf c
  • vue封装公共组件库并发布到npm库详细教程

    vue组件封装的原理 利用vue框架提供的api Vue use plugin 我们需要把封装好组件的项目打包成vue库 并提供install方法 然后发布到npm中 Vue use plugin 的时候会自动执行插件中的install方法
  • STM32CubeMX驱动ADS1118模块

    文章目录 1 前言 2 ADS1118模块简介 3 移植源码到工程 4 驱动源码中函数介绍 4 1 us延时函数 4 2 写入和读取ADS1118配置寄存器 4 3 初始化ADS1118 4 4 测量电压函数 5 实验 5 1 单通道采样
  • 2022年软件测试面试题大全【含答案】

    一 面试基础题 简述测试流程 1 阅读相关技术文档 如产品PRD UI设计 产品流程图等 2 参加需求评审会议 3 根据最终确定的需求文档编写测试计划 4 编写测试用例 等价类划分法 边界值分析法等 5 用例评审 主要参与人员 开发 测试
  • mysql drivermanager_jdbc详解:2、DriverManager管理多个数据库驱动

    先上代码 static String driverName com mysql jdbc Driver static String url jdbc mysql 127 0 0 1 3306 mysql static String user
  • react+ts+vite

    项目结构初始 1 使用vite构建项目 2 script常见用法 host 显示地址 port 端口号 设置端口号 open 编译后自动打开 3 配置 路径 项目路径别名的配置 ts对 指向src的目录提示是不支持的 所以需要手动配置 符号
  • Anaconda 打开时卡在Initializing(打不开)

    找到的一种说法是anaconda有个广告载入功能 这个功能需要联网 但国内网络环境有时候连不上目标网络 所以打开anaconda navigator的时候会因为网络问题一直卡在Initializing 解决的方法 方法一 把网络断开 没有了
  • 进入虚拟机 networkManager is not running 问题

    运行 systemctl restart NetworkManager命令 重启网络管理
  • java--基础--23--接口组成更新

    java 基础 23 接口组成更新 代码 https gitee com DanShenGuiZu learnDemo tree mysql mybaties DB jdk8 learn 1 接口组成更新 常量 public static
  • 每日学术速递5.3

    CV 计算机视觉 ML 机器学习 RL 强化学习 NLP 自然语言处理 Subjects cs CV 1 Learning Locally Editable Virtual Humans 标题 学习本地可编辑虚拟人 作者 Hsuan I H
  • 详解Seaborn,看这一篇就够了

    转载 Seaborn常见绘图总结 Seaborn是一个比Matplotlib集成度更高的绘图库 在科研和数据分析中我们常常看到一些画的非常高大上的图 这往往就是Seaborn绘制的图形 因此我们就使用短短的半天时间来学习一下Seaborn的
  • lsun数据集下载、转换、使用

    最近复现SAGAN用到了lsun数据集 1 下载地址 http dl yf io lsun scenes 我下载了church outdoor train lmdb zip 中间还安装了lmdb库 2 转换 一般下载的data py 转换代
  • Git 常用命令 --- git push命令

    git push的一般形式为 git push lt 远程主机名 gt lt 本地分支名 gt lt 远程分支名 gt 例如 git push origin master refs for master 即是将本地的master分支推送到远
  • IMP-00003: 遇到 ORACLE 错误 959 ORA-00959: 表空间 '' 不存在

    描述 在使用imp命令将dmp文件导入oracle中时 遇到如下错误 IMP 00003 遇到 ORACLE 错误 959 ORA 00959 表空间 TBS CDUSER 不存在 IMP命令如下 IMP cduser cduser123
  • Java Stream流详解

    本文目录 学习目标 中间操作 Filter 过滤 Map 转换 Sorted 排序 Distinct 去重 Limit 限制 Skip 跳过 Peek 展示 终止操作 forEach 循环 Collect 收集 Count 计数 Reduc
  • 软件测试基础理论知识—用例篇

    什么是测试用例 测试用例 Test Case 是为了实施测试而向被测试的系统提供的一组集合 这组集合包含 测试环境 操作步骤 测试数据 预期结果等要素 需求的概念 满足用户期望或正式规定文档 合同 标准 规范 所具有的条件和权能 包含用户需
  • 【整理】QT .pro文件中的变量说明

    注释 以 开始的行 直到结束 模板变量 告诉qmake生成哪种makefile TEMPLATE app 其中 app 表示该工程建立一个应用程序的makefile 这是默认值 所以如果模板没有被指定 这个将被使用 lib 表示该工程建立一
  • 第一个servlet程序、配置web.xml以及使用html表单给服务器传输数据

    一 Serlvet简介 serlvet是一个服务器小程序 它可以对用户的请求 request 作出响应 response 举个例子 当我们在html页面填写一个表单时 我们点击提交 这就能发送一个请求 服务器可以接收到我们的请求然后执行相应