JavaWeb 第一个Servlet程序

2023-10-29

1.Servlet

Servlet是Java编写的用于Web应用程序的服务器端程序。

它可以接收来自Web浏览器的HTTP请求并生成响应。

Servlet通常用于创建动态Web内容,例如网页、表单处理、登录和数据库访问等。

Servlet是Java EE(Enterprise Edition)规范的一部分,它提供了一种标准的API,以便开发人员可以编写可移植的Web应用程序。

Servlet可以在任何支持Java的Web服务器上运行,例如Tomcat、Jetty和WebSphere等。

狭义的Servlet是SUN公司提供的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。

2.如何开发一个Servlet程序

  • 编写一个类,实现Servlet接口
  • 将该类部署到web服务器中

3. 第一个Servlet程序

1)IDEA中新建一个Maven项目:

配置依赖的jar包:

pom.xml中加入:

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

2)新建一个类 

这个类的目标是实现Servlet接口。因为Servlet接口有两个默认的实现类:

GenericServlet实现了Servlet接口,但没有实现service()方法

HttpServlet继承了GenericServlet类,且实现了service()方法,service()会涉及调用doPost(), doGet()等方法。

 

 

 所以我们新建的类可以直接继承HttpServlet类,然后重写doPost(), doGet()这些方法:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.study.servlet;

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

public class HelloServlet extends HttpServlet {
    public HelloServlet() {
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.print("----Hello Servlet---");
        System.out.println("This is  HelloServlet extends HttpServlet");
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

 上述代码就是我们的第一个Servlet程序

3)编写Servlet映射

我们要通过浏览器访问我们上面写的Servlet程序,浏览器与web服务器连接,所以可以在web服务器里注册我们上面写的Servlet。

找到web.xml:

加入以下映射:

    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.study.servlet.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

 

4)配置Tomcat

点击运行按钮左边的编辑配置,点击弹窗左上角的加号,选择Tomcat,然后配置Tomcat的名字,路径,端口号:

 如果找不到Tomcat,可以按照以下步骤手动添加:

  1. 打开 IDEA,点击菜单栏上的“File” -> “Settings”。
  2. 在弹出的“Settings”窗口中,选择“Plugins”选项卡,搜索框中输入“Tomcat”,然后点击“Install”按钮安装 Tomcat 插件。
  3. 安装完成后,重启 IDEA。
  4. 点击菜单栏上的“Run” -> “Edit Configurations...”。
  5. 在弹出的“Run/Debug Configurations”窗口中,点击左上角的“+”号,选择“Tomcat Server” -> “Local”。
  6. 在弹出的“Tomcat Server”对话框中,填写服务器名称、Tomcat 安装路径和 JRE 路径等信息,然后点击“OK”按钮。
  7. 在“Edit Configurations”窗口中,点击“Deployment”选项卡,然后点击“+”号,选择“Artifact”或“External Source”,并将你的 Web 应用程序添加到 Tomcat 服务器上。
  8. 点击“OK”按钮保存配置。

5)运行项目

在网址后加上刚才映射时配置的名字:/hello,可以得到servlet程序的结果。 

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

JavaWeb 第一个Servlet程序 的相关文章

  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 我可以使用子接口重新编译公共 API 并保持二进制兼容性吗?

    我有一个公共 API 在多个项目中多次使用 public interface Process
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • libcurl教程

    这个文档是小编在curl官网上使用谷歌翻译翻译的 详细信息看官网 curl 基本描述 本文档试图描述使用 libcurl 编程时要考虑的一般原则和一些基本方法 本文将主要关注 C 接口 但可能会很好地适用于其他接口 也会讲解一些个C接口相似
  • mongodb设置账号密码授权案例

    1 给admin授权管理员权限 gt use admin gt db createUser user admin pwd 123456 roles role root db admin 如果需要修改admin密码 gt db changeU
  • 链表有环(引申题:环在哪里)

    public class Test private static class ListNode int value ListNode next public static boolean hasCycle ListNode head if
  • 采集校园卡消费信息可视化(安徽工商职业学院)

    闲的没事干 分析下我自己的一卡通消费信息 使用了以下技术进行数据分析并且环境已经搭建好 Hadoop hive mysql sqoop centos7 python zeppelin 思路 python爬自己的消费记录 存入到mysql s
  • pthread函数总结

    概括 https www cnblogs com tianzeng p 8934060 html
  • linux 运行scrapy,linux下部署scrapy

    1 如何部署scrapy 下载scrapy client 下载地址 https github com scrapy scrapyd client 并进行安装 安装命令 python setup install 进入项目目录 执行scrapy
  • 【Unity3D日常BUG】Unity3D中出现“动画片段必须标记为Legacy的警告”消除方法

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好 我是佛系工程师 恬静的小魔龙 不定时更新Unity开发技巧 觉得有用记得一键三连哦 一 前言 在开发中可能会遇到下面的警告 The Ani
  • 关于interface(接口继承)extends(接口)interface的问题

    前序 一直以来 我们学习java就被灌输了一个观点 类和抽象类 class 只能被继承 extends 接口 interface 只能被实现 implements 有个概念我们一直没有弄懂的是 类 class 可以实现接口 interfac
  • 刘积仁资本阳谋:东软熙康通过上市聆讯,三年亏损8亿元

    大数据产业创新服务媒体 聚焦数据 改变商业 9月中旬 第四次递表的东软熙康通过港交所上市聆讯 预计在9月30日之前完成IPO 作为国内首家以城市为入口的云医院平台厂商 东软熙康的互联网医疗服务包括互联网医院 远程医疗 智慧家庭医生 互联网居
  • 计算机科学和Python编程导论(二 ) Python简介

    基本概念 1 编程语言的分类 低级编程与高级编程 二者之间的区别是 编写程序时 我们是使用机器层次的指令和数据对象 底层操作 还是使用语言设计者提供的更为抽象的操作 图形用户界面 UI 通用性与专注于某一应用领域 指编程语言中的基本操作是广
  • 【yolo】makesense操作

    https www makesense ai 成功
  • 集团税务共享化、数字化系统如何选型(一)

    随着国家对于企业税务营改增的全面开启 再到国地税合并 金税三期全面建成 同时国家逐级推出发票电子化到专票电子化 标志着国家对发票全面升级为电子化 数字化 伴随着金税四期的开始并逐步落地 国家对企业的税收管理也原有的稽查转变为数字化 智能化的
  • 【100天精通Python】Day45:Python网络爬虫开发_ Scrapy 爬虫框架

    目录 1 Scrapy 的简介 2 Scrapy选择器 3 快速创建Scrapy 爬虫 4 下载器与爬虫中间件 5 使用管道Pielines lt
  • Java语言基础

    文章目录 1 开发环境 1 1 认识开发环境JDK 1 2 JDK JRE JVM关系 1 3 JDK1 8本地安装目录 1 3 1 bin 1 3 2 include 1 3 3 lib 1 3 4 conf 1 3 5 src 1 4
  • 32为什么还有 kill 不掉的语句?

    文章目录 32 为什么还有 kill 不掉的语句 收到 kill 以后 线程做什么 另外两个关于客户端的误解 小结 上期问题时间 32 为什么还有 kill 不掉的语句 在 MySQL 中有两个 kill 命令 一个是 kill query
  • 两个应用程序之间的通信

    应用程序之间的数据交换 互相通讯 一直是困扰广大程序员的难题 尽管已经出现了各式各样的解决方案 但迄今为止没有哪一种方案是完美无缺的 因此 只有学习并了解了它们的优缺点后 才能在特定的情况下选择最佳方案 以满足最终的要求 1 共享 在硬盘上
  • 【Redis】使用Redis实现消息队列

    一 两个消息模型 队列模型 队列模型如图所示 它具有以下几个特点 就像我们用微信和好友 群聊除外 聊天一样 微信就是这个队列 我们可以和很多个好友聊天 但是每条消息只能发给一个好友 只有一个消费者将获得消息 生产者不需要在接收者消费该消息期
  • MobaXterm通过SSH隧道配置RDP端口转发

    MobaXterm通过SSH隧道配置RDP端口转发 2019年9月29日星期日 版本1 0 目的 解决校园网跨网段 不能远程访问 微软RDP协议 客户端mstsc 默认端口 3389 服务器的问题 1 首先在服务器 Ubuntu 16 04
  • Flask入门教程(1)-定义Flask

    本系列文章仅为入门教程 入门举例 01 6 第一个Flask程序 1 导入flask扩展 from flask import Flask escape url for 2 创建flask 应用程序实例 需要传入 name 作用是为了确定资源
  • JavaWeb 第一个Servlet程序

    1 Servlet Servlet是Java编写的用于Web应用程序的服务器端程序 它可以接收来自Web浏览器的HTTP请求并生成响应 Servlet通常用于创建动态Web内容 例如网页 表单处理 登录和数据库访问等 Servlet是Jav