随着JEE6规范上市,在企业应用程序领域中如何开发应用程序方面发生了一些重大变化。 在本文中,我将介绍有关Web应用程序开发的一些更改。

首先,请告别web.xml部署描述符(至少是其中的一部分)。 好吧,它并不是不赞成使用,但是随着注释的使用及其使用的增加,新规范允许我们使用注释来定义我们的配置,尽管诸如欢迎文件列表,上下文参数等仍然需要去做。在您的web.xml中。 可用的注释有;

  • @WebServlet
  • @WebFilter
  • @WebInitParam
  • @WebListener
  • @MultipartConfig

在本文中,我将检查@WebServlet和@WebFilter批注。 让我们看看在web.xml时代通常如何映射servlet。

<servlet><servlet-name>myservlet</servlet-name><servlet-class>com.example.MyServlet</servlet-class></servlet><servlet-mapping><servlet-name>myservlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>

使用Servlet 3.0规范,现在配置Servlet就像注释扩展HttpServlet的类一样容易。 让我们看一下它的样子;

@WebServlet('/student')
public class StudentServlet extends HttpServlet{/*** */private static final long serialVersionUID = 2276157893425171437L;@Overrideprotected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)throws ServletException, IOException {StringBuilder response = new StringBuilder(500);response.append('<html><body>').append('Registered Student : ').append(arg0.getParameter('txtName')).append('</body></html>');arg1.getOutputStream().write(response.toString().getBytes());arg1.getOutputStream().flush();arg1.getOutputStream().close();}
}

您只需要@WebServlet批注。 为了使它起作用,该类应该驻留在WEB-INF / classes文件夹中,或者驻留在WEB-INF / lib文件夹中的jar中。 接下来,让我们看看如何配置带有注释的过滤器。

package com.blog.example.servlettest;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;@WebFilter('/student')
public class StudentFilter implements Filter{@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {if(arg0.getParameter('txtName')==null || arg0.getParameter('txtName').isEmpty()){arg1.getWriter().append('Invalid name supplied');arg1.getWriter().flush();arg1.getWriter().close(); }else{arg2.doFilter(arg0, arg1);}}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}

再次非常容易。 仅作为注释即可通知它为过滤器。 请注意,这里我们实现了Filter接口。 该urlPatterns应该可用。 根据规范,同时使用两者都是非法的。

在接下来的几周中,我将介绍JEE6提供的其他新注释,并结合使用它们的完整示例进行总结。 JEE6是否取代Spring框架本身并不是一个问题,但是我相信我们将会看到两者之间的激烈竞争。 注释vs xml的争论已或多或少地解决了,每个人都倾向于拥有自己的立场。 我相信这两个方面的知识对应用程序都会有所帮助。

您可以下载并运行我已在此处上传的示例示例。 如果您使用的是JBoss-AS7 ,则只需在独立模式下运行应用程序服务器,然后执行mvn软件包jboss-as:deploy并将浏览器指向http:// localhost:{port} /servlet3.0

今天就是这样。 感谢您的阅读,如果您有任何意见或改进建议,请留下评论。

祝你有美好的一天!

参考:在My My Journey Through IT博客上,从我们的JCG合作伙伴 Dinuka Arseculeratne中了解Servlet 3.0的新增功能 。

翻译自: https://www.javacodegeeks.com/2012/12/checking-out-what-is-new-with-servlet-3-0.html

查看Servlet 3.0的新增功能相关推荐

  1. servlet3.0新特性_查看Servlet 3.0的新增功能

    servlet3.0新特性 随着JEE6规范上市,在企业应用程序领域中如何开发应用程序方面发生了一些重大变化. 在本文中,我将介绍有关Web应用程序开发的一些更改. 首先,请告别web.xml部署描述 ...

  2. IE7.0浏览器新增功能

    IE7.0浏览器十大新增安全功能简介 微软推出Internet Explorer 7浏览器的目的是让网页浏览更安全可靠.下文简略说明IE 7新增的一些安全功能,包括Active X的缺省环境改为&qu ...

  3. Hadoop 3.0的新增功能– Apache Hadoop 3的增强功能

    这个" Hadoop 3.0的新功能 "博客着重介绍了Hadoop 3预期中的更改,因为它仍处于Alpha阶段.Apache社区已合并了许多更改,并且仍在进行某些更改.因此,我们将 ...

  4. 华为运动健康服务Health Kit 6.10.0版本新增功能速览!

    华为运动健康服务(HUAWEI Health Kit)6.10.0 版本新增的能力有哪些? 阅读本文寻找答案,一起加入运动健康服务生态大家庭! 一. 支持三方应用查询用户测量的连续血糖数据 符合申请H ...

  5. [翻译] ASP.NET Core 3.0 的新增功能

    全文翻译自微软官方文档英文版 What's new in ASP.NET Core 3.0 本文重点介绍了 ASP.NET Core 3.0 中最重要的更改,并提供相关文档的连接. Blazor Bl ...

  6. TensorFlow 2.0 的新增功能:第三、四部分

    原文:What's New in TensorFlow 2.0 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑(MTPE)流程来尽可能提 ...

  7. TypeScript 4.0的新增功能? Fancier元组

    If you've been doing any web development in the past few years, chances are you've heard a lot about ...

  8. JMS 2.0的新增功能

    这篇文章列出了JMS 2.0 ( Java EE 7平台的一部分)引入的所有新API(接口/类/注释等). 这些分类如下 API简化 使用方便 异常处理 杂 这是一个简短的摘要以及一些代码片段 API ...

  9. openssl-1.0.0 的新增功能与欠缺(一)

    简单略看,未完待续 libeay32.lib MD2仍存在但是被禁用了 增加MDC2算法 对DTLS增加了ECDHE和PSK的支持, ssleay32.lib: SSL/TLS用于注册ciphers和 ...

最新文章

  1. [Everyday Mathematics]20150203
  2. android 打印kernel log,android8.0 kernel4.9.44 各层log打开
  3. 中断、异常、处理对于操作系统的概念
  4. MYSQL存储过程中 表名 使用变量
  5. c语言混响,混响也是大学问,c与数字混响的区别-文章-数字音视工程网DAV01.COM...
  6. Python列表和元组比较
  7. pycharm关闭自动更新
  8. linux 搭建LAMP平台手册
  9. 限时,字节Java程序性能优化宝典大全,这才叫真正的性能优化
  10. vc与三菱PLC编程口通信C语言源代码,三菱PLC通讯与编程实例!
  11. laravel5.5通过yansongda/pay组件实现支付宝电脑网站支付
  12. 抖音短视频吃鸡戏精野生脆脆如何上的热门
  13. 计算机如何添加新用户,笔记本电脑怎么样快速添加新用户帐号
  14. 逆幂律模型_为“成功”建模:幂律分布
  15. 关于 __dirname和__filename介绍以及使用场景
  16. 搭档之家:刘强东章泽天共同成立企业管理公司,前者持股99%
  17. Azure: Azure AD(For Development)的使用
  18. 微信小程序引入iconfont图标,解决渲染层失败(2022年7月11日)
  19. Kaggle教程 机器学习中级7 数据泄露
  20. 蓝牙技术|蓝牙Mesh在照明网络上的应用

热门文章

  1. React 相关的优秀资源
  2. spock 集成测试_使用Spock Mocks进行Grails 3.3集成测试
  3. jmeter 采样器作用_实施自定义JMeter采样器
  4. php cdi_CDI和EJB:在事务成功时发送异步邮件
  5. netflix_学习Netflix管理员–第1部分
  6. java代码初体验_第一次Java 8体验
  7. gradle的二进制版本_Gradle入门:创建二进制分发
  8. gradle docker_带有Gradle的Docker容器分为4个步骤
  9. 使用Selenium Webdriver进行全屏截图
  10. vert.x_选择Vert.x的3个理由