IDEA使用两种方式实现第一个Servlet程序

2023-11-08

第一种方式:实现Servlet接口

1、新建一个普通的maven工程

首先新建一个普通的maven工程。记得不要勾选下面的webapp
BRwTmX-2020-11-12-09-49-47
这是新建好的目录结构
w5vcP0-2020-11-12-09-50-26
然后右键项目选择 Add Framework support 最后点击web Application即可
LwABK6-2020-11-12-09-52-36
05f6er-2020-11-12-09-54-32

2、编码

首先在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>

        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

然后新建一个类去实现Servlet接口,为了方便在service方法中直接打印一句话表示成功相应请求

package top.educy;


import javax.servlet.*;
import java.io.IOException;

/**
 * @Author 马小姐
 * @ClassName HelloServlet
 * @Date 2020-11-12 09:55
 * @Version 1.0
 * @Description:
 */
public class HelloServlet implements Servlet{
    public void init(ServletConfig config) throws ServletException {

    }

    public ServletConfig getServletConfig() {
        return null;
    }

    /***
     * @author MacbookPro
     * @param req: service方法专门是去请求和处理相应请求的 
     * @param res: 
     * @return void
     * @version V1.0.0
     * @date 10:02 2020/11/12
     */
    
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("Hello Servlet被打印了");

    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {

    }
}

3、web.xml文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

<!--    配置tomcat服务器-->
    <servlet>
<!--        给servlet程序起别名  一般为类名-->
        <servlet-name>HelloServlet</servlet-name>

        <servlet-class>top.educy.HelloServlet</servlet-class>
    </servlet>

<!--    给servlet程序配置访问地址-->
    <servlet-mapping>
<!--        告诉服务器我当前配置的地址是给哪一个服务器使用-->
        <servlet-name>HelloServlet</servlet-name>
<!--        配置访问地址   /表示服务器访问的时候地址为ip+端口号/工程路径/hello  -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

请仔细看下上述每个标签表示的含义是什么,我都有标注。

4、配置服务器

PeCCex-2020-11-12-10-07-59
yYKRqN-2020-11-12-10-09-06
可以看到成功启动了
在这里插入图片描述
然后在url后面加上我们刚才在web.xml中配置好的访问地址 /hello 再去观察控制台信息
仔细看好我用乃亮绿标注的。
K4wE7b-2020-11-12-10-13-00

第二种方式:继承HttpServlet

1、新建一个类继承HttpServlet并重写doGet doPost方法

package top.educy.servlet;

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

/**
 * @Author 马小姐
 * @ClassName ResponseIo
 * @Date 2020-11-16 上午11:38
 * @Version 1.0
 * @Description:
 */
public class ResponseIo extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doPost(req, resp);

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);
//        字节输入流和字符输入流只能同时存在一个 不然会报500错误
//        resp.getOutputStream();
//        没有的话会出现中文乱码
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.write("你是猪吗");
    }
}

2、配置web.xml

    <servlet>
        <servlet-name>response</servlet-name>
        <servlet-class>top.educy.servlet.ResponseIo</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>response</servlet-name>
        <url-pattern>/response</url-pattern>
    </servlet-mapping>

3、部署项目

在这里插入图片描述

4、输入web.xml配置的url-pattern访问servlet

在这里插入图片描述

结束!
Servlet生命周期:
执行Servlet执行器的构造方法
执行init()的初始化方法
执行service()方法
执行destory()销毁方法

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

IDEA使用两种方式实现第一个Servlet程序 的相关文章

  • 为什么要使用除 div 以外的任何东西? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Firebase Auth - 最近登录多长时间

    我有一个个人资料选项卡 用户可以在其中按编辑并编辑他们的个人资料 我只想在必要时才需要他们的密码 所以想知道用户登录的时间是多少毫秒 这使得它不是最近登录 其中firebase会抛出错误 auth requires recent login
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 诸如用于测试 HTTP 请求的虚拟 REST 服务器之类的东西? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在四处寻找 但找不到任何这样的网站 我想知道是否有一些虚拟服务器可以响应测试 GET 请求并返回
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 部署 .war 时出现 Glassfish 服务器错误:部署期间发生错误:准备应用程序时出现异常:资源无效

    我正在使用以下内容 NetBeans IDE 7 3 内部版本 201306052037 爪哇 1 7 0 17 Java HotSpot TM 64 位服务器虚拟机 23 7 b01 NetBeans 集成 GlassFish Serve
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • 给定数十亿个 URL,如何确定重复内容 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在一次编程面试中被问到这个问题 我在下面详细描述了这个问题 这是一个开放式问题 给定数十亿个 URL 深层链接 我如何对哪些 URL
  • 您可以在不是在 Google 协作平台下创建的网站上使用 Google 脚本吗? [复制]

    这个问题在这里已经有答案了 Google 脚本有一种方法可以嵌入到 Google 网站中 但我想知道是否可以在非 Google 托管的网站上使用 Google 脚本 此 google 脚本的目的是作为 Javascript 的简单替代方案
  • 如何获取dart中当前和调用函数的名称?

    C has System Reflection MethodBase GetCurrentMethod Name Dart 是否有类似的东西 但返回当前正在运行的函数以及调用当前运行函数的函数的名称的结果 我编写了一个简单的类 它提供当前函
  • 将您的应用程序链接到现有页面

    我搜索了又搜索 似乎找不到任何与此相关的信息 我们有一个 Facebook 页面 facebook com companyname 我们在 Facebook 上也有一个应用程序 apps facebook com companyname 我
  • 我想将我的 NEXT.js 项目链接到静态网站

    我有一个使用 HTML CSS 开发的网站 它是一个静态网站 但现在我使用 NEXT js 与 Strapi API 集成创建了一个博客项目 我的问题是如何将我的静态网站与我的 Next js 项目链接起来 我尝试使用链接标签 但没有用 i
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • 如何在 PHP Soap 客户端中禁用命名空间别名?

    我的 PHP Microsoft AX 集成有问题 我正在使用 SOAP WSDL 与服务集成 我遇到的问题是在从 PHP 向 WSDL 发送请求后收到此错误 无效的实例类型名称 ns3 AxdEntity DirParty DirOrga
  • 如何从网页中提取文本内容? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在用java开发一个应用程序 它
  • 有没有办法以编程方式下载网页的部分内容,而不是整个 HTML 正文?

    我们只需要 nytimes com technology 上的 HTML 文档中的特定元素 该页面包含许多文章 但我们只想要文章的标题 该标题位于 如果我们使用 wget cURL 或任何其他工具或某些包 例如Python 中的请求 htt
  • 仅当 url 以 www 为前缀时才会发生 CORS 错误

    我目前遇到一个关于 CORS 跨源资源共享 的问题 奇怪的是 只有当我使用 www url 前缀时 才会出现这种情况 例如 当我使用以下网址访问我的网站时 http example com index http example com in
  • Android - Java - 发送 facebook 聊天消息的意图(facebook 禁用 xmpp)

    Facebook 已弃用 xmpp API 有没有办法打开意图 或将数据传递到fb 以在Android设备上发送聊天消息 设备上安装的 Facebook 和 Messenger 应用 谢谢 您需要将 uri 传递给意图 这里10000572
  • GWT 的 RPC 与 AJAX 不同吗?

    与 AJAX 调用相比 GWT Google Web Toolkit 的 RPC 远程过程调用 用于从浏览器 javascript 到服务器的异步操作有何不同或相似 如果它们不同 有人可以帮助我理解它们有何不同吗 我还听说这个 RPC 实现
  • 如何在Fiddler中显示请求发送时间和响应接收时间?

    我正在使用 Fiddler Web 调试器工具版本 4 4 4 8 我已经向例如提出了请求www google com 和 fiddler 显示发送了请求并收到了响应 我如何知道并显示请求何时发送以及何时收到响应 开始 结束日期不在 Fid

随机推荐

  • 假设检验3- 卡方分布

    前言 目录 一 卡方分布 二 双边假设检验 三 单边假设检验 四 例子 一 卡方分布 n 个随机变量均符合标准正态分布 则其平方和符合自由度为n的卡方分布 重要性质 二 双边检验 2 1 假设 2 2 统计量 2 3 拒绝域 k1 chi2
  • DevEco Studio Install JS 3.0.0.0 failed.

    安装 DevEco Studio的常见错我 1 Install JS 3 0 0 0 failed 问题原因 npm 配置原因 解决方法如下 1 点击欢迎页中的Configure 或图标 gt Settings gt Build Execu
  • python 时间格式datetime、str与date的相互转换

    在写项目的时候经常会用到时间格式 以及它们之间的相互转化 常用的日期数据格式datetime datetime str datetime date 在使用的时候先导入datetime模块 from datetime import datet
  • 机考[61 -70]

    华为机考 061 寻找身高相近的小朋友 062 寻找相同子串 063 一种字符串压缩表示的解压 064 英文输入法 065 用户调度问题 066 用连续自然数之和来表达整数 067 找车位 068 找出符合要求的字符串子串 069 找朋友
  • ESP32-C3入门教程 基础篇(五、RMT应用 — 控制SK6812全彩RGB 灯)

    测试第五课 本来是准备测试一下PWM驱动 SK6812 RGB灯 但是研究了一段时间 发现在ESP32 C3 有更好而且现成的方式 实现 SK6812 的控制 使用PWM也不是不可以 只是对于初学者 需要多花好多时间 所以本文还是先以ESP
  • ctf-web-sql注入

    题目链接 跳转提示 打开网页 一个登陆页面 根据题是本题题型是基于布尔的SQL盲注 首先在用户名处输入admin 得到结果 即密码确为admin 而如果不输入用户名直接输入密码 发现报错 可见后台是先判断用户名是否正确存在 当用户名正确后再
  • 【强推】10个有趣的Python程序

    1 引言 Python程序有许多模块和第三方包 这非常有助于高效编程 了解这些模块的正确使用方法是很重要的 在本文中 主要介绍一些非常实用的一些Python常见的模块 闲话少说 我们直接开始吧 2 Python伪信息生成器 创建一个程序 生
  • Visual Basic环境:未能加载基类“ShaftAssDesign.XFrmTopClass”。

    文件中的类都不能进行设计 因此未能为该文件显示设计器 设计器检查出文件中有以下类 FrmSetSearch 未能加载基类 ShaftAssDesign XFrmTopClass 请确保已引用该程序集并已生成所有项目 因为vs的版本不同 所以
  • 阿里云OSS+PicGo建立图床踩坑

    在本地写md文档时候插入图片是一件挺麻烦的事情 使用本地图片的话 每次在给别人分享文档或者上传博客的时候就比较难顶了 网上有两种方法可以解决这个问题 一种是使用图片的base64编码 但是图片转换为base64编码之后 编码长度会很大 文档
  • Mac环境下安装Pod

    Mac环境下安装Pod Mac环境下安装Pod 阿里云开发者社区 aliyun com 简介 Mac 环境下安装Pod Pod安装需要ruby ruby需要rvm可以终端中查看rvm 安装没有 如果没有安装则按以下步骤安装 rvm安装 cu
  • implicit declaration of function —— 函数隐式声明 警告

    implicit declaration of function 函数隐式声明 警告 文章目录 错误情况 原因 解决方法 错误情况 在学习 c 语言的过程中 手动使用 clang 进行编译的时候 碰到自定义函数会报出下面的错误 hello
  • 物联网毕业设计 单片机智能温控风扇设计与实现

    文章目录 1 简介 2 绪论 2 1 课题背景 3 系统设计 3 1 系统架构 3 2 硬件部分 3 2 1 DS18B20 简介 3 2 2 LCD1602 液晶屏简介 3 3 软件部分 3 3 1 整体软件流程 3 3 2 初始化 3
  • 数据库Sqlite和mysql

    致谢 https www ssdax com 2188 html https blog csdn net zbw1185 article details 47975965 1概述 数据库可以分为两类 关系型数据库和内存数据库 DB Engi
  • 【算法】McCode度量法

    目录 一 什么是McCode度量法 二 McCabe度量方法计算程序复杂度 三 真题演练 一 什么是McCode度量法 McCabe度量法是由托马斯 麦克凯提出的一种基于程序控制流的复杂性度量方法 McCabe复杂性度量又称环路度量 它认为
  • android实现箭头流程列表_Android弹出选项框及指示箭头动画选择

    Android弹出选项框及指示箭头动画选择 Android原生的Spinner提供了下拉列表选项框 但在一些流行的APP中 原生的Spinner似乎不太受待见 而通常会有下图所示的下拉列表选项框 初始化状态 点击弹出下拉选择选项框 选中后
  • 运维自动抓包脚本tcpdump

    文章目录 运维自动抓包脚本 抓包效果 tcpdump sh 运维自动抓包脚本 基于tcpdump命令写的抓包脚本工具 抓包解释参考 tcpdump抓包解释 抓包效果 root h11 sh scripts tcpdump sh gt gt
  • STM32外设之USART

    第二章 初识USART 目录 第二章 初识USART 前言 一 USART是什么 二 使用步骤 1 功能框图 2 寄存器 3 固件库编程 总结 前言 本章进行初识STM32F103串口 讲解通信方式 主要了解串口相应寄存器 串口的库函数编程
  • Compare Data from the Same Table in two Different Environments

    The Oracle SQL below compares table1 that has 2 key fields and 3 regular fields Note For the SQL below to work your pass
  • 软件测试面试题(带答案)

    1 请自我介绍一下 需简单清楚的表述自已的基本情况 在这过程中要展现出自信 对工作有激情 上进 好学 面试官您好 我叫 今年26岁 来自江西九江 就读专业是电子商务 毕业后就来深圳工作 有三年的软件测试工程师的经验 我性格比较开朗 能和同事
  • IDEA使用两种方式实现第一个Servlet程序

    第一种方式 实现Servlet接口 1 新建一个普通的maven工程 首先新建一个普通的maven工程 记得不要勾选下面的webapp 这是新建好的目录结构 然后右键项目选择 Add Framework support 最后点击web Ap