查看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

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

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

相关文章

block,inline,inline-block的区别

最近正在复习&#xff0c;紧张地准备几天后的笔试&#xff0c;然后刚好看到这个地方。 block&#xff1a;块级元素&#xff0c;会换行&#xff0c;如div,p,h1~h6,table这些&#xff0c;可以设置宽高&#xff1b; inline:行内元素&#xff0c;不换行&#xff0c;挤在一行显示&am…

假期(模块相关)

# ---------------------------------------------------------------------------------------- import time timestamp time.time() #时间戳 struct_time time.localtime() #结构化时间 format_time time.strftime("%Y-%m-%d %X") #格式化时间# print…

anyproxy抓取移动http、https请求

windows下安装AnyProxy抓取移动App Http请求AnyProxy是阿里巴巴基于 Node.js 开发的一款开源代理服务器。做为中间代理服务器&#xff0c;它可以收集所有经过它的http请求流量&#xff08;包括https明文内容&#xff09;&#xff1b;它提供了友好的web界面&#xff0c;便于直观…

振作起来– Spring Framework 4.0即将来临!

几天前&#xff0c;SpringSource 宣布流行的Spring框架的4.0版本正在开发中。 下一个迭代将是Spring Framework 4.0&#xff01; 如SpringSource所言&#xff0c;即将发布的版本的重点是“ 2013年及以后出现的企业主题”&#xff1a; 支持Java SE 8 Spring应用程序 使用Groo…

java内存管理课程设计_Java内存管理分析

Java内存主要分为stack, heap, data segment, and code segment.stack(栈)&#xff1a;存放非静态基本数据类型变量的名称和值&#xff0c;以及非静态对象的引用若是非静态基本数据类型变量&#xff0c;则变量的名称和值一起被存入stack(栈)中&#xff0c;变量的名称指向变量的…

Windows 10 IoT Core 17101 for Insider 版本更新

除夕夜&#xff0c;微软发布了Windows 10 IoT Core 17101 for Insider 版本更新&#xff0c;本次更新只修正了一些Bug&#xff0c;没有发布新的特性。已知的问题: F5 driver deployment from Visual Studio does not work on IoT Core.F5 application deployment of headed f…

Spring Batch中的块处理

大数据集的处理是软件世界中最重要的问题之一。 Spring Batch是一个轻量级且强大的批处理框架&#xff0c;用于处理数据集。 Spring Batch Framework提供了“面向TaskletStep”和“面向块”的处理风格。 在本文中&#xff0c;将解释面向块的处理模型。 此外&#xff0c;绝对建…

type=file文件上传H5新特性

1、语法 <input name"myFile" type"file"> 2、属性&#xff08;以下三个仅 HTML5支持&#xff0c;因此存在兼容性问题&#xff09;&#xff08;1&#xff09;multiple &#xff1a;表示用户是否可以选择多个值。multiple只能用于typefile和typeemail…

关于git的一些文章

为什么Github没有记录你的Contributions转载于:https://www.cnblogs.com/xiaobie123/p/7391266.html

epoll学习

一、epoll_create #include <sys/epoll.h>int epoll_create(int size); int epoll_create1(int flags); 返回&#xff1a;成功非负文件描述符&#xff0c;-1出错size:内核监听数目一共多大 创建一个epoll接口&#xff0c;size参数和select不同&#xff0c;不是fd1&#x…

为什么我不能关闭垃圾收集器?

首先让我们快速回顾一下我作为Java开发人员的职业生涯的早期。 我想消除正在进行的测试中的垃圾回收&#xff08;GC&#xff09;暂停。 瞧&#xff0c;当我发现无法完成时&#xff0c;我很生气。 那时&#xff0c;我将问题抛在了“设计错误”上&#xff0c;并继续前进。 对Jame…

background使用

background-position 有两个参数&#xff0c;定义背景图片起始位置可选值有&#xff1a; center top left right bottom px % background-size 可以用 px % 设定其宽高 值 cover 完全覆盖背景区域 contain 适应背景区域 background-origin 背景图片可以放置于 content-bo…

java牛客排序算法题_《剑指offer》面试题28:字符串的排列(牛客网版本) java...

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。这里尤其需要注意2点&#xff1a;1.所有组…

致第8年的自己

刚开始工作时&#xff0c;可能会用很多技术&#xff0c;知道很多技术就好像是很了不起的了。 但工作久了之后&#xff0c;如果还是只停留在知识的表面&#xff0c;技术只知个大概&#xff0c;那就显得太肤浅了。 别被人问倒&#xff0c;什么东西都能说出个一二&#xff0c;那才…

配置Ubuntu虚拟环境

配置Ubuntu虚拟环境 1.ubuntu默认root用户没有激活&#xff0c;激活root用户&#xff0c;就要为root用户创建密码$sudo passwd root2、修改主机名$vi /etc/hostname3、安装ssh服务$sudo apt-get install openssh-server//安装sshd服务$ sudo apt-get install openssh-server//开…

布局 — 样式重置

/* 清除默认内边距和外边距*/ body, dl, dd, h1, h2, h3, h4, h5, h6, p, form {margin: 0; } ol, ul {margin:0;padding:0; }/* 设置默认文字样式*/ html {font-size: calc((16 * 100vw) / 320);-webkit-text-size-adjust: none; } body, button, input, select, textarea {fo…

从Java执行可执行的命令行

在本文中&#xff0c;我们将介绍Java开发人员的常见需求。 从Java内部执行和管理外部流程。 由于这项任务很常见&#xff0c;因此我们着手寻找一个Java库来帮助我们完成它。 该库的要求是&#xff1a; 异步执行该过程。 能够中止流程执行。 等待流程完成的能力。 处理中的输…

java代码实现解压文件_Java压缩/解压文件的实现代码

用java压缩/解压文件&#xff1a;import java.io.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.util.zip.*;import javax.swing.*;//从压缩包中提取文件public class ZipExtractDemo extends JFrame{JFileChooser fileChooser; //文件选择器JT…

关于微信分享的一些心得之recommend.js(直接复制就行)

// import $ from jqueryimport Vue from vueexport default function (type,title,con,img,url,) { // 这里面的参数&#xff0c;你想怎么改就怎么改&#xff08;你自己也可以添加&#xff09;&#xff0c;类型&#xff0c;标题&#xff0c;内容&#xff0c;图片&#xff0c…