JavaWeb的Servlet的两种配置

2023-10-31

Servlet接口

要成为一个Servlet,需要实现Servlet接口(为了方便,可以继承HttpServlet,HttpServlet实现了Servlet接口)

Servlet生命周期

在Tomcat中Servlet是单例的,Servlet实例的创建由Tomcat完成

Servlet实例首次使用时才会被创建,先执行无参构造器,然后执行init()方法,再执行service()方法,以后每次请求只会执行service()方法,Servlet容器关闭时,执行destroy()方法。

Servlet的初始化参数信息,会封装到init()方法中的ServeletConfig对象

请求信息会封装到service()方法中的ServletRequest对象,响应信息封装到ServletResponse对象

public interface Servlet {

    public void init(ServletConfig config) throws ServletException;

    public ServletConfig getServletConfig();

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;

    public String getServletInfo();

    public void destroy();
	
}

 

一、xml配置

1.web.xml

在web.xml中配置Servlet,<servlet>指定对应的Servlet类,<servlet-mapping>指定映射,<init-param>设置初始化参数,通过映射关系找到处理请求的Servlet类,在页面请求/hello(页面请求路径使用绝对路径,代表从当前项目路径下开始),就跳转到HelloServlet类处理请求

  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.example.servlet.HelloServlet</servlet-class>
    <init-param>
      <param-name>user</param-name>
      <param-value>root</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

2.Servlet类

处理请求的HelloServlet继承HttpServlet,调用getServletConfig()方法获得ServletConfig对象,用ServletConfig对象获得Servlet中初始化参数

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();
        String user = servletConfig.getInitParameter("user");
        System.out.println(user);

        response.getWriter().write("success");
    }

}

二、@WebServlet注解配置

1.@WebServlet

name等同于<servlet-name>,urlPatterns等同于<url-pattern>,initParams 等同于<init-param>

@WebServlet(
        name = "HelloServlet", 
        urlPatterns = "/hello", 
        initParams = {
            @WebInitParam(name = "user", value = "root") })

2.Servlet类

@WebServlet(
        name = "HelloServlet",
        urlPatterns = "/hello",
        initParams = {
            @WebInitParam(name = "user", value = "root") })
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();
        String user = servletConfig.getInitParameter("user");
        System.out.println(user);

        response.getWriter().write("success");
    }

}

 

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

JavaWeb的Servlet的两种配置 的相关文章

  • 如何将 html 输入到 Flask 中?

    我有这个 html 位
  • Electron 应用程序可以与 java 代码集成吗?

    由于node js仍然缺乏Java中存在的重要功能 因此我想使用Java而不是node js 并使用Web语言 html js css 创建客户端 Electron 是跨平台的 java 也是跨平台的 因此似乎有一个能够两全其美的解决方案
  • 创建默认应用程序时 FirebaseOptions 不能为 null

    我正在尝试在 Flutter 集成电子邮件和基于 google 的登录中尝试一个示例项目 并计划使用 firebase 初始化来执行此操作 同时我已按照教程中提到的所有步骤进行操作 一旦尝试使用 firebase 我就会收到此错误已初始化
  • 在 html 中创建子页面 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设我有一个网站http www example com http www example com 如何为此页面创建更多子页面 即 w
  • 使用节点http代理转发http代理

    我正在使用 node http proxy 库来创建转发代理服务器 我最终计划使用一些中间件来动态修改 html 代码 这就是我的代理服务器代码的样子 var httpProxy require http proxy httpProxy c
  • 对同一域发出 get 请求,出现 CORS 错误

    在浏览器扩展中 这是我的 ajax 调用 var xhr new XMLHttpRequest xhr open GET window location href true xhr responseType arraybuffer xhr
  • 使用“邮递员”chrome 应用程序的肥皂请求正文

    假日网络服务 的肥皂请求正文会是什么样子 http www holidaywebservice com HolidayService v2 HolidayService2 asmx wsdl http www holidaywebservi
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • Chrome:网络元素自动移动

    我正在开发一个网络项目 在过去的两周里 我正在进行学期考试 所以我要休息一下 现在 既然他们已经结束了 我又继续我的工作了 但我发现我的一些Web 元素 如按钮 span 在 Chrome 上移动了一些像素 在 IE 和 Mozilla 上
  • 如何防止桌面浏览器(Chrome、Safari)缩放网页

    我尝试使用以下元视图端口标记来防止浏览器缩放 但这不起作用 我知道这是可能的 因为我的缩放在此网站上被阻止 未来主义 xyz http futurism xyz 该网站的视口标签是这样的
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • powershell Invoke-WebRequest WebSession 不起作用

    我无法让以下代码工作 它似乎已登录 但随后返回带有 response 的登录页面 我猜这与回发有关 有办法解决这个问题吗 谢谢 login Invoke WebRequest Uri http www sqlpass org UserLog
  • 如何获取dart中当前和调用函数的名称?

    C has System Reflection MethodBase GetCurrentMethod Name Dart 是否有类似的东西 但返回当前正在运行的函数以及调用当前运行函数的函数的名称的结果 我编写了一个简单的类 它提供当前函
  • CSS3 与 JavaScript

    所以我试图在网页上创建一个动画 并试图找到一种使用 CSS3 来实现它的方法 但我对如何做到这一点感到非常困惑 我需要发生的是 当用户单击链接元素时 我希望 div 展开并填充特定于所单击的链接元素的内容 例如 当用户单击标题为 About
  • 如何在 Cakephp 3 中创建按字段集分组的多个复选框

    我在阅读本文档时遇到问题 Cakephp3 Cookbook 表单 创建选择选择器 http book cakephp org 3 0 en views helpers form html creating select pickers我尝
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • Tornado websocket handler , self.close() 正在关闭连接而不触发 on_close() 方法

    我是 python stackoverflow tornado 的新手 所以请耐心等待 纠正我 我正在使用龙卷风开发实时应用程序 当我在 Websocket 处理程序类中调用 self close 时 on close 方法不会启动 这次我
  • Bootstrap - 为反向行模式创建移动自适应

    我想用 Bootstrap 创建一个反向效果 第一行 左边是文字 右边是图像 第二行 左边是图片 右边是文字 第三行 左边是文字 右边是图片 第四行 左边是图片 右边是文字 而且这种情况一直持续下去 它在大型设备上看起来非常漂亮 但当它在设
  • 使用 MediaWiki API 下载图像?

    是否可以使用 MediaWiki API 从维基百科下载图像 不 无法通过 API 获取图像 MediaWiki 中的图像仅存储在文件夹中 而不是存储在数据库中 并且不会动态传递 更多信息请参见手册 图像管理 http www mediaw

随机推荐

  • CSDN CODE 初体验

    写在前头 自从在2012年初写了一篇 一个人的Scrum之准备工作 两年过去了 how time flies 在文中我费劲千辛万苦搭好了工作环境 自己乐在其中 这是一种痛并快乐着的感觉 本以为自己就开始的一段时间熟悉环境费心些 没想到后来的
  • stm32如何设置蜂鸣器温度报警_基于 51 单片机无线 RF433M 传输胎压监测 GSM 短信报警设计...

    功能介绍 发射机组成 STC89C52RC BMP180 大气压模块 RF433Mhz 无线模块 接收机组成 STC89C52RC RF433Mhz 无线模块 SIm800CGSM 模块 蜂鸣器 按键 功能描述 两个发射分别采集大气压信息和
  • Ubuntu添加交叉编译成功

    先把arm linux那个包复制到自己建的文件夹 自己建文件夹mkdir min 复制cp r arm linux home lin min 查看路径的命令为pwd sudo vim etc profile 在最后添加 export PAT
  • 洛谷 P1746 离开中山路

    https www luogu com cn problem P1746 contestId 67264 AC代码 include
  • 数字IC手撕代码-异步复位同步释放

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • 用vscode写c语言输出中文全变成问号

    重新写一份一模一样的代码
  • unity之NetworkManager应用初级

    简单学过Socket的人都知道用Socket完成一个完整的游戏非常的困难 但如果只是想简单的完成一个传输 unity已经写好了一个非常实用的东西NetworkManager 对于初学者来说他还有一个很方便的ui和上面那个脚本放在一起就会出现
  • Python Train_出乎意料的简单!10分钟用python建立人工智能预测模型

    介绍 鉴于Python在过去几年中的兴起及其简洁性 对于数据科学领域的Python学家意义重大 这篇文章会用最容易的方式引导你更快地构建第一个预测模型 出乎意料的简单 10分钟用python进行人工智能建立预测模型 揭秘预测建模的过程 我一
  • QT+CEF(Chromium嵌入式框架)环境搭建,CEF库libcef_dll_wrapper.lib编译

    上一章使用qt自家的QWebEngineView实现浏览器 存在一定兼容性和稳定性问题 https blog csdn net weixin 40355471 article details 120698537 本章将使用开源的CEF Ch
  • 寒假:HTML

    图片导入 lt img src 图片导入的位置 width 宽度 height 高度 alt 图像的替代文字 title 鼠标悬停提示文字 gt 超文本链接 lt a href target 目标窗口位置 gt 链接文本或图像 视频元素
  • 原生小程序用vant组件自定义底部导航

    在根目录中创建custom tab bar 新建page index 在app json或index json中引入vant组件 usingComponents van tabbar vant weapp tabbar index van
  • 程序员的代码行数越少越好?

    代码行数越少越好 读懂别人的代码很困难 如何编写出 完美 的代码 每天要坚持8小时编程 拜托 这些编程误区程序员应该尽早知道 作为开发人员 你会听到许多有关 代码行数 的令人难以置信的疯狂理论 不要相信他们 以代码行数作为决策依据是一件非常
  • ew schema is incompatible with the current setting value. Invalid value for type in block

    shopify开发报错 New schema is incompatible with the current setting value Invalid value for type in block 84341d56 61dc 4c39
  • 第三课 C++ 教程:char 和 int 是 C++ 中常见的数值类型,以及常用格式化说明符

    第三课 C 教程 char 和 int 是 C 中常见的数值类型 以及常用格式化说明符 学习目标 在本教程中 我们将学习以下内容 数值类型 char short 和 int 的区别和使用 sizeof 运算符的作用 无符号整数 unsign
  • 找出数组中三个数之和为0的组合

    找出数组中三个数之和为0的组合 题目 思路 代码 题目 给定一个无序可重复整数序列 当该序列中任意三个数的和等于0 输出这三个数 如 序列nums 1 0 1 2 1 4 输出 1 0 1 1 1 2 思路 首先对数组不同位进行两两结合 在
  • 我的串口打印之坑——8266os_printf()适用于NONOS_SDK,故在自动生成APP代码中不能打印,要用uart0_sendStr( )函数(4)

    说到用安信可串口调试助手打印信息 首先明确esp8266nodeMCU有uart0 GPIO13 GPIO15 uart1 GPIO3 GPIO0 接下来 编程时候 1 首在user init 中先初始化uart init void ICA
  • JAVA面向对象的思想

    java面向对象 什么是面向对象思想 什么是面向对象 类和对象 类 对现实世界中某类事物的描述 是抽象的 概念上的定义 对象 事物具体存在的个体 抽象类 接口 成员变量和局部变量的区别 作用域 存储位置 初始值 构造方法 面向对象三大特性
  • Java的类加载器

    类加载是java语言提供的最强大的机制之一 尽管类加载并不是讨论的热点话题 但所有的编程人员都应该了解其工作机制 明白如何做才能让其满足我们的需 要 这能有效节省我们的编码时间 从不断调试ClassNotFoundException Cla
  • 代理IP与Socks5代理

    一代理IP 多地区数据采集的智能引擎 多地区市场了解 代理IP允许爬虫模拟多个地区的IP地址 实现对不同市场的数据采集 这为跨界电商深入了解不同地区需求 趋势提供了数据基础 规避反爬虫策略 许多网站采用反爬虫技术 限制频繁访问 代理IP通过
  • JavaWeb的Servlet的两种配置

    Servlet接口 要成为一个Servlet 需要实现Servlet接口 为了方便 可以继承HttpServlet HttpServlet实现了Servlet接口 Servlet生命周期 在Tomcat中Servlet是单例的 Servle