查看Servlet 3.0的新增功能
随着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的新增功能相关推荐
- servlet3.0新特性_查看Servlet 3.0的新增功能
servlet3.0新特性 随着JEE6规范上市,在企业应用程序领域中如何开发应用程序方面发生了一些重大变化. 在本文中,我将介绍有关Web应用程序开发的一些更改. 首先,请告别web.xml部署描述 ...
- IE7.0浏览器新增功能
IE7.0浏览器十大新增安全功能简介 微软推出Internet Explorer 7浏览器的目的是让网页浏览更安全可靠.下文简略说明IE 7新增的一些安全功能,包括Active X的缺省环境改为&qu ...
- Hadoop 3.0的新增功能– Apache Hadoop 3的增强功能
这个" Hadoop 3.0的新功能 "博客着重介绍了Hadoop 3预期中的更改,因为它仍处于Alpha阶段.Apache社区已合并了许多更改,并且仍在进行某些更改.因此,我们将 ...
- 华为运动健康服务Health Kit 6.10.0版本新增功能速览!
华为运动健康服务(HUAWEI Health Kit)6.10.0 版本新增的能力有哪些? 阅读本文寻找答案,一起加入运动健康服务生态大家庭! 一. 支持三方应用查询用户测量的连续血糖数据 符合申请H ...
- [翻译] ASP.NET Core 3.0 的新增功能
全文翻译自微软官方文档英文版 What's new in ASP.NET Core 3.0 本文重点介绍了 ASP.NET Core 3.0 中最重要的更改,并提供相关文档的连接. Blazor Bl ...
- TensorFlow 2.0 的新增功能:第三、四部分
原文:What's New in TensorFlow 2.0 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑(MTPE)流程来尽可能提 ...
- 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 ...
- JMS 2.0的新增功能
这篇文章列出了JMS 2.0 ( Java EE 7平台的一部分)引入的所有新API(接口/类/注释等). 这些分类如下 API简化 使用方便 异常处理 杂 这是一个简短的摘要以及一些代码片段 API ...
- openssl-1.0.0 的新增功能与欠缺(一)
简单略看,未完待续 libeay32.lib MD2仍存在但是被禁用了 增加MDC2算法 对DTLS增加了ECDHE和PSK的支持, ssleay32.lib: SSL/TLS用于注册ciphers和 ...
最新文章
- [Everyday Mathematics]20150203
- android 打印kernel log,android8.0 kernel4.9.44 各层log打开
- 中断、异常、处理对于操作系统的概念
- MYSQL存储过程中 表名 使用变量
- c语言混响,混响也是大学问,c与数字混响的区别-文章-数字音视工程网DAV01.COM...
- Python列表和元组比较
- pycharm关闭自动更新
- linux 搭建LAMP平台手册
- 限时,字节Java程序性能优化宝典大全,这才叫真正的性能优化
- vc与三菱PLC编程口通信C语言源代码,三菱PLC通讯与编程实例!
- laravel5.5通过yansongda/pay组件实现支付宝电脑网站支付
- 抖音短视频吃鸡戏精野生脆脆如何上的热门
- 计算机如何添加新用户,笔记本电脑怎么样快速添加新用户帐号
- 逆幂律模型_为“成功”建模:幂律分布
- 关于 __dirname和__filename介绍以及使用场景
- 搭档之家:刘强东章泽天共同成立企业管理公司,前者持股99%
- Azure: Azure AD(For Development)的使用
- 微信小程序引入iconfont图标,解决渲染层失败(2022年7月11日)
- Kaggle教程 机器学习中级7 数据泄露
- 蓝牙技术|蓝牙Mesh在照明网络上的应用
热门文章
- React 相关的优秀资源
- spock 集成测试_使用Spock Mocks进行Grails 3.3集成测试
- jmeter 采样器作用_实施自定义JMeter采样器
- php cdi_CDI和EJB:在事务成功时发送异步邮件
- netflix_学习Netflix管理员–第1部分
- java代码初体验_第一次Java 8体验
- gradle的二进制版本_Gradle入门:创建二进制分发
- gradle docker_带有Gradle的Docker容器分为4个步骤
- 使用Selenium Webdriver进行全屏截图
- vert.x_选择Vert.x的3个理由