以编程方式映射 servlet,而不是使用 web.xml 或注释

2023-11-24

如何在没有 web.xml 或注释的情况下以编程方式实现此映射?任务不是使用任何框架,如 spring 或其他框架。

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>test.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

从 Servlet 3.0 开始,您可以使用ServletContext#addServlet()为了这。

servletContext.addServlet("hello", test.HelloServlet.class);

根据您正在开发的内容,您可以通过两个挂钩来运行此代码。

  1. 如果您正在开发可公开重用的模块化 Web 片段 JAR 文件(例如 JSF 和 Spring MVC 等现有框架),那么请使用ServletContainerInitializer.

    public class YourFrameworkInitializer implements ServletContainerInitializer {
    
        @Override
        public void onStartup(Set<Class<?>> c, ServletContext servletContext) throws ServletException {
            servletContext.addServlet("hello", test.HelloServlet.class);
        }
    
    }
    
  2. 或者,如果您将其用作 WAR 应用程序的内部集成部分,则使用ServletContextListener.

    @WebListener
    public class YourFrameworkInitializer implements ServletContextListener {
    
        @Override
        public void contextInitialized(ServletContextEvent event) {
            event.getServletContext().addServlet("hello", test.HelloServlet.class);
        }
    
        // ...
    }
    

您只需要确保您的web.xml与 Servlet 3.0 或更高版本兼容(因此不兼容 Servlet 2.5 或更早版本),否则 servlet 容器将以符合声明版本的后备模式运行,并且您将失去所有 Servlet 3.0 功能。

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0"
>
    <!-- Config here -->
</web-app>

也可以看看:

  • ServletContainerInitializer 与 ServletContextListener
  • Tomcat 7 的 @WebServlet 注释
  • 基于网络的应用程序设计模式
  • 将共享代码和 web.xml 从 WAR 项目拆分为公共 JAR 项目
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式映射 servlet,而不是使用 web.xml 或注释 的相关文章

  • 敲除映射导致堆栈溢出

    我正在尝试淘汰赛和映射插件 并想知道为什么这不起作用 我有一个要使用映射扩展加载的视图模型 function todoListViewModel data ko mapping fromJSON data todos TodoItem op
  • 为什么 HttpServletRequest 输入流为空?

    我有这段代码 我从请求输入流读取输入并使用 JacksonMapper 转换为 POJO 它在具有 guice 支持的 jetty 7 容器中运行 Override protected void doPost HttpServletRequ
  • 从 servlet 向 applet 发送数据:我怎样才能实现这个?

    我要发送 发送HashMap反对请求它的小程序 servlet 具有这样的功能HashMap目的 我有办法做到这一点吗 Applet requests HashMap object gt Servlet listens to this re
  • 将 geojson 文件下载到 jupyter 中的 folium 中

    我想要一张欧洲地图 作为 json 文件 这样我就可以使用 geojson 将其作为图层放置在 Folium 地图上 这样我就可以将我的数据集嵌入到其中 以显示欧洲哪个国家的酒精含量最高 我在从 GitHub 获取 json 文件以在 jy
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp
  • 使用 flash 或 java servlet 将麦克风数据从浏览器上传到服务器的教程? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 There was a question on how to get data from a microphone on a client
  • ServletContext getContextPath()

    我检查了我的 Netbeans 项目中包含的 Tomcat 库的 javadoc 当我部署代码时工作正常 但是当我对我的 Web 项目进行全新构建时 我在 getContextPath 上收到 找不到符号 ServletContext接口的
  • 从架构上来说,我应该如何用更易于管理的内容替换非常大的 switch 语句?

    EDIT 1 忘记添加嵌套属性曲线球 UPDATE 我选择了 mtazva 的答案 因为这是我的具体案例的首选解决方案 回想起来 我用一个非常具体的例子提出了一个一般性问题 我相信这最终让每个人 或者也许只是我 对问题到底是什么感到困惑 我
  • Java HttpSession 属性存储在哪里?

    对象是否被序列化并发送给用户并在每个连接上返回 存储在 cookie 中 或者它们存储在服务器堆中并且cookie只是一个非常小的标识符 有关此主题的任何信息都会有所帮助 谢谢 你第二次猜到了 该 cookie 包含一个 JSESSIONI
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 如何在基于其他数据帧的数据帧中创建联接?

    我有 2 个数据框 一份包含学生批次详细信息 另一份包含分数 我想加入 2 个数据框 数据框1包含 s1 s2 s3 Stud1 Stud2 Stud3 Stud2 Stud4 Stud1 Stud1 Stud3 Stud4 数据框2包含
  • 在返回响应之前获取 servlet 请求的状态

    晚上好 我正在编写一个 Java Servlet Struts 2 Tomcat JSP 等 它能够进行一些相当复杂的模拟 这些可能最多需要 2 分钟才能完成 并将返回结果图表 计算模拟完成的百分比很简单 因为该过程是通过重复相同的计算数千
  • 如何防止 Firefox 缓存

    我尝试了很多可能的解决方案 但无法解决问题 这些不起作用 有人可以帮忙吗 我正在使用jsp servlet application 是websphere Portal 6 1 的一个portlet 切勿
  • 如何将 nartc/automapper 中的配置文件使用到 Nestjs 应用程序中

    我正在尝试在 NestJS 项目内的 nartc automapper lib 中使用 AutoMapper for nodejs 但是在尝试使用配置文件功能时遇到了麻烦 这是我的配置 应用程序模块 Module imports Autom
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 访问 PUT 或 POST 请求的原始正文

    我正在 Grails 中实现 RESTful API 并使用自定义身份验证方案 该方案涉及对请求正文进行签名 以类似于 Amazon 的 S3 身份验证方案的方式 因此 为了验证请求 我需要访问原始 POST 或 PUT 正文内容来计算和验
  • Servlet 从 Amazon S3 读取数据非常慢

    我需要一个 Servlet 来从 Amazon S3 服务器返回文件 只有服务器有访问凭据 S3 存储桶不公开 我无法改变这一点 有人告诉我使用数据流 但它们太慢了 为了进行测试 我有一个带有缩略图的小项目 当您单击一个项目时 它会打开一个
  • 更改 Ubuntu Linux 中文件夹的读/写访问权限

    我想创建一个文件夹并在创建的文件夹中写入一个文件Amazon EBS来自安装在运行 Ubuntu 的 Amazon EC2 上的 Java Servlet 的卷 我已将 EBS 卷安装在 mnt my address 但是Servlet无法

随机推荐

  • 如何从 numpy 多维数组中获取 k 个最大值的索引

    我问了几个问题StackOverflow但找不到相关答案 我想从 a 中获取 k 个最大值的索引numpy ndarray 这个链接讨论相同但针对一维数组 np argsort对于二维数组导致元素按行排序 IE Note array ele
  • MongoDB 中的文档大小

    考虑将来切换到 DynamoDB 但希望确保我的文档在 1KB 以下 因为它们按 KB 收费 有没有一种快速方法可以知道集合中文档的大小 作为一般指南 您可以检查集合中文档的平均大小collname使用avgObjSize收藏报告的价值st
  • 如何对使用其自身输出的滞后值的函数进行矢量化?

    我很抱歉问题的措辞不好 但这是我能做的最好的事情 我确切地知道自己想要什么 但不知道如何要求它 下面是一个例子演示的逻辑 取值 1 或 0 的两个条件会触发一个也取值 1 或 0 的信号 无论如何 条件 A 都会触发信号 如果 A 1 则信
  • Microsoft Visual Studio 2012 已停止工作

    我一直在 Windows Server 2008 R2 sp1 上使用 Visual Studio 2012 尽管除了性能有点慢之外 它似乎工作得很好 但每当我关闭应用程序时 我都会收到以下错误 Microsoft Visual Studi
  • 使用 jQuery 将密码字段更改为带有复选框的文本

    如何通过复选框选中取消选中将密码字段切换为文本和密码 这是你要找的吗
  • SQL Server 2005 生成的创建表脚本不起作用

    我正在为现有数据库创建数据库脚本 我尝试使用 SQL Server 为我生成脚本 但生成的脚本失败 我正在使用 脚本表为 gt 创建到 gt 新查询编辑器窗口 选项 然后 我更改表和约束名称并执行脚本 我很困惑 有人能看到这里的问题吗 我收
  • 使用 next_permutation 排列类向量

    是否可以使用 std next permutation 来排列我创建的类的向量的元素 next permutation 中的比较参数如何工作 是否可以使用 std next permutation 来排列我创建的类的向量的元素 Yes Tr
  • 跨浏览器 CSS3 关键帧动画 Firefox

    我使用 CSS3 和关键帧在播放按钮 这是一个锚标记 上实现了一个简单的 脉动 效果 虽然它在 Chrome 和 Safari 中完美运行 但在 Firefox 中似乎不起作用 有人知道为什么吗 li gt a webkit animati
  • Flex:如何为 TabNavigator 组件添加选项卡关闭按钮

    我想要一个TabNavigator具有某些选项卡的关闭按钮的组件 我怎么做 看来TabNavigator组件不允许 或者我找不到 这种形式的可扩展性 帮助 谢谢 您应该从以下位置查看 SuperTabNavigator 组件 FlexLib
  • Convert.ToString() 转换为二进制格式无法按预期工作

    int i 20 string output Convert ToString i 2 Base2 formatting i 20 output Convert ToString i 2 Value Expected Actual 20 0
  • MS Access 中的透视查询

    我在 Access 表中有以下数据 ID Name CAT 1 Bill Red 1 Bill Yellow 1 Bill Green 1 Bill Orange 2 Ted Purple 2 Ted White 3 Alice Indig
  • 最大数组长度配额

    我正在编写一个小型 WCF WPF 应用程序来调整图像大小 但当我尝试从客户端向我的服务发送大小为 28K 的图像时 WCF 给我带来了痛苦 当我发送较小的图像时 该服务工作正常 我立即认为这是一个配置问题 并且我在网上搜索了有关我的绑定配
  • 替换为 Spring 注解

    有没有办法用注释替换构造函数参数 我有这个构造函数 public GenericDAOImpl Class
  • C 中的 switch 语句:变量的情况?

    include
  • 如何在 GitHub Actions 表达式语法中引用上下文值?

    我想在其中设置一个环境变量env GitHub Action 的部分并利用GitHub Actions 的上下文和表达式语法 我试过这个 jobs build runs on ubuntu latest env MYVAR format 0
  • 在 Ruby 中使用方法名称从字符串调用方法

    我怎样才能做到他们所说的here 但是在 Ruby 中呢 您将如何在对象上执行该功能 以及你将如何执行全局函数 请参阅 jetxee 的answer在提到的帖子上 示例代码 event name load def load puts loa
  • 如何重新渲染平面列表?

    与 ListView 不同的是 我们可以更新 this state datasource 有没有任何方法或示例来更新 FlatList 或重新渲染它 我的目标是当用户按下按钮时更新文本值 renderEntries item index r
  • 如何在 Visual Studio 代码中调试时扩展数组

    这是我的代码 它是一个简单的排列代码块 void arrange char c int N int start if start N print c N return for int i start i lt N i swap c star
  • iframe 滚动 iOS 8

    我有一个 iframe 我需要它有滚动溢出 它似乎可以在桌面上运行 我使用了一种解决方法使其可以在 iOS 中运行 现在它可以在 Android 和 iOS 上运行 然而 iOS8却失败了
  • 以编程方式映射 servlet,而不是使用 web.xml 或注释

    如何在没有 web xml 或注释的情况下以编程方式实现此映射 任务不是使用任何框架 如 spring 或其他框架