Servlet 3.0概述

Servlet 3.0 –具有许多突破性的功能,这些功能最终将改变开发人员编写和编写JEE Web应用程序的方式–有人可能会说,它的约定违背了我们对事物在理论上“应该”如何工作的大多数理解,但这就是其中之一。创新和持续改进; 挑战公约并提供更好,有效的解决方案。

本博客文章涵盖的主题:

  1. 易于发展–发生了什么变化?
  2. Servlet和过滤器的动态注册
  3. 可插拔性
  4. 捆绑的jar文件中的资源–一种称为Web片段的新功能。

易于发展

这是JEE Development世界中的主观主题之一–它不是一直在拖放,而是关于如何进一步完善符合标准,经过最佳惯例并经过严格检查的开发方式。

通过注释的声明式编程风格–在JEE6中,web.xml现在是可选的,并且现在可以通过使用注释来标记所有POJOS。 您可以声明Servlet,过滤器,侦听器,初始化参数等-几乎可以通过使用批注来配置web.xml下的几乎所有内容。

  1. @WebServlet –定义一个Servlet
  2. @WebFilter –定义过滤器
  3. @WebListener –定义一个监听器
  4. @WebInitParam –定义初始化参数
  5. @MultipartConfig –定义文件上传属性
  6. @ServletSecurity –定义安全约束

注意:尽管可以这样做,但是开发人员仍然可以使用web.xml覆盖这些值。

我在这里附上一个示例供您测试。

Servlet和过滤器的动态注册

可用的另一个功能是动态注册-在ServletContext初始化期间执行:

public class TestServletContextListenerimplements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {ServletContext servletContext = sce.getServletContext();ServletRegistration.Dynamic dynamic =servletContext.addServlet("DynamicServlet","com.mycom.MyServlet"); dynamic.addMapping("/dynamicServlet"); // URL mappingdynamic.setAsyncSupported(true);}
}

当然,您可以查找并挂接动态servlet /过滤器

ServletRegistration declared = ServletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");

在此处下载maven项目。

可插拔性

在部署描述符中无需使用样板配置即可启用第三方框架。 模块化web.xml,以允许框架独立地包含在其自己的JAR文件和编程配置API中。使用注释。

可插拔背后的动机是,如果需要特定的框架,则可以减少将所有配置放在一个单独的Sile(web.xml)中的复杂性。 例如,如果开发人员需要对现有Web应用程序的Spring支持-首先要做的是将Spring的servlet /侦听器作为其支持的一部分-将来,当出现新的EE技术时,它会变得很丑陋。您需要再次将所有内容放到web.xml文件中。

现在,借助JEE6,您可以创建一个带有web-fragment.xml的子项目,该子项目将模仿主web.xml上的一个部分,从而可以独立创建和隔离进一步的改进(或可插入功能要求)。 以下是web-fragment.xml的示例

<web-fragment><servlet><servlet-name>welcome</servlet-name><servlet-class>com.mycom.WelcomeServlet</servlet-class></servlet><servlet-mapping><servlet-name>welcome</servlet-name><url-pattern>/Welcome</url-pattern></servlet-mapping>...
</web-fragment>

它与web.xml非常/非常相似。

在此处下载示例Web片段项目。

捆绑的jar文件中的资源

  • 静态和JavaServerTM Page(JSP)资源不再局限于Web应用程序的文档根目录
  • 可以放在WEB-INF / lib / [* .jar] / META-INF / resources中
  • 容器在处理HTTP请求和对ServletContext#getResource或ServletContext#getResourceAsStream方法的调用时必须遵循这个新位置
  • 但是,文档根目录中的资源优先于捆绑的JAR文件中的资源。

javaee6_servlet3-0_basics__1_-pdf__page_29_of_32_

有了Web片段新的资源束jar支持 ,现在可以与主父应用程序分开开发需要端到端处理的功能要求。

经过改进的新Servlet 3.0带来了许多有效的工具,这些工具将使开发人员可以使用该平台创建质量更高且更强大的应用程序。 注释/声明性编程–使描述符达到了新的高度,因为Servlet,过滤器和侦听器现在可以在Java代码级别上完成。 Servlet,过滤器,侦听器等的动态注册可用于创建将处理特定业务案例的JIT pojos,DI和CDI支持使开发人员可以通过简单地让容器负责对象的制造方法和最佳方法来简化范例总而言之,Web片段和对资源束jar的支持对开发进行了不同的分离,因为它允许隔离特定功能的Web项目,利用JEE现有技术,而无需通过父Web应用程序处理大量配置。

参考:来自我们的JCG合作伙伴 Alvin Reyes的Servlet 3.0 ,位于Alvin“ Jay” Reyes博客博客中。

翻译自: https://www.javacodegeeks.com/2013/08/servlet-3-0-overview.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL(介绍,安装,密码操作,权限表)

一、数据库介绍1、数据库相关概念a、支持并发b、锁的问题c、对客户端请求进行认证d、存取效率&#xff08;降低IO次数&#xff09;数据库服务器&#xff08;本质就是一个台计算机&#xff0c;该计算机之上安装有数据库管理软件的服务端&#xff09;数据库管理管理系统RDBMS&…

matlab如何测两点的角度_【邢不行|量化小讲堂系列01-Python量化入门】如何快速上手使用Python进行金融数据分析...

引言:邢不行的系列帖子“量化小讲堂”&#xff0c;通过实际案例教初学者使用python进行量化投资&#xff0c;了解行业研究方向&#xff0c;希望能对大家有帮助。【历史文章汇总】请点击此处【必读文章】&#xff1a;【邢不行|量化小讲堂系列27-Python量化入门】EOS期现套利&…

结对项目

一、【Coding.Net项目地址】https://git.coding.net/verde/Pair_Work.git 二、【对接口进行的设计】 看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节&#xff0c;说明你们在结对编程中是如何利用这些方法对接口进行设计的。 如下图SRC的…

国家开放大学形成性考核 统一资料 参考试题

试卷代号&#xff1a;1174 水工钢筋混凝土结构&#xff08;本&#xff09;参考试题 一、选择题&#xff08;每小题2分&#xff0c;共20分&#xff0c;在所列备选项中&#xff0c;选1项正确的或最好的作为答案&#xff0c;将选项号填入各题的括号中&#xff09; 1.钢筋混凝土结…

两个向量之间的夹角公式_向量的内积

向量的内积也叫向量的数量积、点积。我们定义两个向量的内积是一个数: 其中 是这两个向量的夹角。 对于向量的内积,最重要的一个结论是: 定理1:两向量垂直的充分必要条件是它们的内积为 0,即 这个定理我们几乎不用证明了,因为从定义来看,如果两个向量都不零向量,则只能…

springcloud 入门 10 (eureka高可用)

eureka高可用: 说白了&#xff0c;就是加一个实例作为原实例的备份&#xff0c;然后一起对外提供服务。这样可以保证在一台机器宕机的时候&#xff0c;整个系统不会死掉。保证其继续对外服务。 eureka的集群化&#xff1a; 服务注册中心Eureka Server&#xff0c;是一个实例&am…

为什么REST如此重要

这篇文章致力于REST&#xff0c;一种塑造Web服务的体系结构风格&#xff0c;以及IT历史上最容易被误解的概念。 这篇文章针对的是那些正在设计Web服务api的人&#xff0c;他们并未完全了解REST的实际含义。 我想给你个主意。 这篇文章也发给了那些想知道REST意味着什么的人&…

你真的懂js获取可视区宽高吗

可能你会觉得获取可视区宽高不是很简单吗 原生js获取高度不就是就window.innerHeight一句话的事&#xff0c;可是真的这么简单吗 来看个测试页面,如果页面带有横向纵向的滚动条&#xff0c;我们打印出各个高度进行查看对比 顺便你也可以看看document.body和document.documentEl…

詹金斯的Maven报告

代码质量是一个敏感的话题。 它会影响您的维护成本以及客户满意度。 更不用说您的开发人员使用代码的动力。 谁想要修复难看的代码&#xff0c;对吗&#xff1f; 讨论代码质量总是需要事实和数字&#xff01; 因此&#xff0c;这是一个简短的教程&#xff0c;介绍如何创建一些…

python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!

点击关注我哦一篇文章带你了解矩阵乘法的纯Python实现在《这篇文章》中&#xff0c;我们有简单提到“矩阵乘法”的相关知识&#xff0c;如果你不记得了&#xff0c;可以复习一下这张图片。想起来了没&#xff1f;本篇文章将深入探讨在没有机器学习库的情况下如何从零实现矩阵乘…

Github Actions:再次改变软件开发

本文转自 FEPulse 公众号&#xff08;微信搜索 FEPulse&#xff0c;精选国内外最新前端资讯&#xff0c;为你把握前端脉搏&#xff09;。 Github Actions 是 GitHub Universe 大会上发布的&#xff0c;被 Github 主管 Sam Lambert 称为“再次改变软件开发”的一款重磅功能&…

为别人软件加入广告或者密码(特别思路)

洪雨的的这款软件比较奇特&#xff0c;是忽然想到一个思路&#xff0c;然后实现了一下。 exe文件都有一个很有趣的地方&#xff0c;只要内部完整&#xff0c;就可以运行。比如一个exe文件&#xff0c;我们运行的时候&#xff0c;电脑知道他是exe所以可以直接运行。假如洪雨将它…

Django 错误跳转页面

原网站&#xff1a;https://blog.csdn.net/goupper1991/article/details/50736826 django404&#xff0c;500错误自定义页面&#xff1a; 将 改为 1.修改settings文件DEBUG FalseALLOWED_HOSTS [127.0.0.1, localhost]或者ALLOWED_HOSTS [*]2.配置urls文件from django.conf.…

ElasticSearch-Hadoop:从Hadoop到ElasticSearch的产品视图计数索引和客户顶部搜索查询...

这篇文章涵盖了如何使用ElasticSearch-Hadoop从Hadoop系统读取数据并在ElasticSearch中对其进行索引。 它涵盖的功能是在最近n天中为每个客户的产品浏览量计数和热门搜索查询编制索引。 分析的数据可以进一步在网站上使用&#xff0c;以显示最近浏览过的客户&#xff0c;产品浏…

伸缩轨道_深度解析——伸缩喷漆房为什么这么受欢迎!

伸缩式喷漆房是一种环保喷漆设备&#xff0c;它可以在使用时&#xff0c;自动展开形成封闭或半封闭的环保喷漆房&#xff0c;不使用时收缩合拢到一处的特殊环保喷漆房设备&#xff0c;由于伸缩式喷漆房外观大方、简单实用且投资费用低&#xff0c;它在现代涂装应用中越发广泛。…

snippet,让你编码效率翻倍

为什么谈到Snippet 今天下午在用vscode做小程序的时候&#xff0c;发现很不方便&#xff0c;因为商店里提供的代码片段极为有限&#xff0c;而且平时几乎每天都需要用到代码片段&#xff0c;所以就在思考他们是怎么做到给别人提供代码的&#xff0c;我可以自定义代码片段吗。然…

day12-HTML基础之DOM操作

DOM&#xff08;Document Object Model 文档对象模型&#xff09; 一个web页面的展示&#xff0c;是由html标签组合成的一个页面&#xff0c;dom对象实际就是将html标签转换成了一个文档对象。可以通过dom对象中js提供的方法&#xff0c;找到html的各个标签。通过找到标签就可以…

小程序源码 租房管理系统_如何通过租房小程序开发快速引流

租房市场在整个房产市场占据了极大一部分市场份额&#xff0c;而随着租售同权政策的提出、房价的不断提升&#xff0c;租房市场份额将进一步扩大。合肥小程序开发智速新媒体公司传统的租房方式不管是出租方还是租房客户&#xff0c;彼此之间的消息不对等、沟通困难等因素导致房…

REST 101开发人员专用

本地代码执行 诸如C之类的高级语言中的函数将被汇编为Assembly中的过程 。 它们增加了一个间接级别&#xff0c;使我们不必考虑内存地址。 诸如Java之类的面向对象语言中的方法和多态性增加了另一种间接性 &#xff0c;使我们不必考虑一组相似功能的特定变体。 尽管有这些间…

一个基于Bmob的OPPO锁屏壁纸小程序,写过之后发现...好像没什么卵用...一脸懵逼

小程序之前写的&#xff0c;也就前段时间&#xff0c;毛毛糙糙的写了第一版... 因为使用OPPO手机&#xff0c;所以有个锁屏杂志的东西&#xff0c;里面的图片每天都是由OPPO官方的人进行精选然后推送给用户的&#xff0c;图片菲菲菲菲菲常漂亮&#xff0c;看到网上很多人提取不…