本系列是个人学习写的新特性的示例,喜欢的朋友可以一起学习,完善该示例。建议配合《Servlet3.1规范(最终版)中文版下载》一起学习。
servlet3.x新特性示例:
- 最近JavaEE 7也发布了,其包含Servlet3.1规范,目前glassfish4已经实现了该规范,所以写了一个参考示例方便参考学习。建议学习之前,请先阅读Servlet3规范,效果更佳。
1、更加便利的注解支持
- 提供了@WebServlet、@WebFilter、@WebListener、@WebInitParam等注解的支持
2、可插性设计
2.1、web模块化
- 可以将一个项目分成N个模块,然后通过扫描模块下的META-INF/web-fragment.xml进行装配
2.2、容器启动时可插拔
- 使用ServletContainerInitializer实现,可以在容器启动时自动回调其onStartup方法,插入一些功能
2.3、零XML化SpringMVC
- 使用ServletContainerInitializer即SpringMVC注解配置实现无XML化的SpringMVC配置
3、异步处理支持
3.1、servlet的异步支持
- 通过Servlet提供的异步支持完成了comet:streaming(长连接)和ajax长轮询
- 使用Servlet提供的AsyncListener进行状态回调
- 最后通过ajax长轮询实现了一个聊天室功能
3.2、SpringMVC对Servlet的异步支持
- 使用SpringMVC框架提供的异步支持实现comet:streaming(长连接)和ajax长轮询
- 使用SpringMVC框架提供的Callable实现异步计算
- 使用SpringMVC框架提供的DeferredResult实现延迟结果(实现ajax长轮询)
- Spring框架没有提供长连接实现,具体还得使用原生支持
- 最后通过ajax长轮询实现了一个聊天室功能
4、其他
4.1、API改进
- 比如提供HttpOnly支持、HttpServletRequest#getRequestedSessionId直接获取请求时的会话ID、HttpServletResponse#getStatus等直接获取响应状态码、响应头等信息
- 比如Servlet3.1的request/response#getContentLengthLong得到long型内容长度、ServletContext#getVirtualServerName得到虚拟主机名
- 比如Servlet3.1的通过HttpServletRequest#changeSessionId()直接更改会话ID,并可以通过HttpSessionIdListener监听
- 其他的请参考源代码
4.2、获取静态资源
- 可以直接获取Jar包里的/META-INF/resources下的资源(包括jsp)
4.3、全新的文件上传支持
- 使用HttpServletRequest#getPart/#getParts得到请求的Part(如文件/参数)等
4.4、servlet 3.1的非阻塞I/O支持
- 提供WriteListener、ReadListener实现非阻塞I/O支持
4.5、servlet 3.1的协议升级支持
- 使用HttpServletRequest.upgrade和HttpUpgradeHandler实现HTTP/1.1协议升级,如升级到Websocket等等
- 示例实现了一个直接与socket通信的回显和时间功能
5、pjax与bigpipe
- 使用pjax(ajax + pushState) 无刷新ajax(并能记录ajax加载的历史记录)加载内容
- 使用bigpipe并发加载页面片段,并使用springmvc抽象bigpipe,简化bigpipe开发,可以基于此完善的更易使用
具体请参考源代码,欢迎一起探讨学习。有问题请回复。
几点说明
- 本系列使用Maven构建,需要Maven基础;
- 本系列并没有写学习指南,作者认为直接看代码即可,如有不懂的可参考如《Servlet 3.1规范》和javadoc;
- servlet3.1目前仅glassfish支持,在运行servlet3.1的程序时,请使用glassfish maven插件运行。
相关推荐
最近JavaEE 7也发布了,其包含的Servlet 3.1规范也发布了最终版,之前翻译的早期预览版本《Servlet3.1...另外,目前正在整理一份servlet3.x示例,包含了servlet3.0及servlet3.1 新特性的演示代码,可以前往github学习。
Servlet3.1规范(最终版) JavaTM Servlet 规范 版本 3.1(最终版) Shing Wai Chan Rajiv Mordani [作者] 穆茂强 张开涛 [译者] 2012年6月翻译 2013年7月修订 目录 前言 ............................... 3 ...
3.1 Tomcat的安装和直接使用 3.2 Tomcat和Apache的配合 3.3 Tomcat和IIS的配合 3.4 Tomcat的配置和常见问题 3.4.1 Tomcat的主配置文件:server.xml 3.4.2 Windows下代码保护的问题 3.4.3 Apache、IIS和Tomcat...
1.4 Servlet 与其他技术的比较 ........................................................................................................................14 1.5 与 Java 平台企业版的关系 ......................
JQuery uploadify3.1 jsp servlet文件上传实例,内附源码,jsp+servlet实现,适合初学者,网络上很多的例子虽然说是3.1版本的,但是调用方法都是老版本的,跑不起来,经过查看doc,这个例子可以在tomcat中运行。...
#Jersey-2,Guice,Embedded Jetty Maven项目演示了如何使用带有Guice注入的Jersey-2和通过MOXy进行JSON绑定,在具有基于Servlet-3.1注释的配置的Embedded Jetty-9中运行JAX-RS 2项目。 ##执行这个专案的步骤叉,...
#Jersey-2,MOXy,JPA-2,Embedded Jetty Maven项目演示如何使用Jersey-2和具有通过MOXy的JSON绑定的Jersey-2,在具有基于Servlet-3.1批注的配置的嵌入式Jetty-9中运行JAX-RS 2项目。 -2持久性。 响应以Collection ...
.3.1 servlet的基本结构 3.2 生成纯文本的servlet 3.3 生成html的servlet 3.4 servlet的打包 3.5 简单的html构建工具 3.6 servlet的生命周期 3.7 singlethreadmodel接口 3.8 servlet的调试 第4章 ...
本书还全面介绍了Servlet 3.1的新特性,以及Tomcat 8.0的配置和用法,本书的示例也应该在Tomcat 8.0上运行。 《轻量级Java EE企业应用实战:Struts2+Spring4+Hibernate整合开发(第4版)》重点介绍如何整合Struts ...
本书还全面介绍了Servlet 3.1的新特性,以及Tomcat 8.0的配置和用法,本书的示例也应该在Tomcat 8.0上运行。 《轻量级Java EE企业应用实战:Struts2+Spring4+Hibernate整合开发(第4版)》重点介绍如何整合Struts ...
使用 JRuby Servlet 进行异步请求处理该项目演示了如何在 Servlet 3.1 和 JRuby 中使用非阻塞 IO 要尝试它,请克隆该应用程序,然后运行以下命令: $ bundle install...Using sinatra 1.4.5Using warbler 1.4.5Using...
最近JavaEE 7也发布了,其包含Servlet3.1规范,目前glassfish4已经实现了该规范,所以写了一个参考示例方便参考学习。建议学习之前,请先阅读Servlet3规范,效果更佳。 ###1、更加便利的注解支持 提供了@WebServlet...
3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理...
3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理...
3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理...
使用Servlet 3.1制作文件上传前端使用objectify将结果存储在数据存储中使用内存缓存优化对数据存储区的访问自定义您的运行时以使用本机依赖教程步骤简单启动Hello world应用程序: git checkout master带有数据存储...
3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理...
需要Servlet 3.1容器(尽管可能在3.0上可用) 如果要基于此示例构建真实的应用程序,请先在GitHub上克隆项目,然后进行以下更改: 您可能不希望使用内存中的Derby数据库,而是要切换到真实的数据库。 完成此操作后...
2.2 javax.servlet.Servlet接口 7 2.3 Application 1 7 2.3.1 HttpServer1类 8 2.3.2 Request类 8 2.3.3 Response类 9 2.3.4 StaticResourceProcessor类 9 2.3.5 ServletProcessor1类 9 2.4 Application 2 9 第3章 ...
该应用程序适用于支持 Web Servlet v. 3.1 的容器。 它在 Apache Tomcat 7.0.33 上进行了测试。 NetBeans v 8.1 用作 IDE。 该应用程序使用 SLF4j 日志 API - 由 Log4j v 2.2 实现。 gwt-webapp简单的 GWT 应用程序...