Servlet3.0新规范

合集下载

中创InforSuite应用服务器

中创InforSuite应用服务器

I N FO R S U I TE 应 用 服 务来自器 技 术 白 皮 书目录
I
目录
第 1 章 需求背景 ................................................................................................................................................... 1 第 2 章 体系结构 ................................................................................................................................................... 2 第 3 章 产品组成 ................................................................................................................................................... 3 3.1. 运行平台 ..................................................................................................................................................... 3 3.1.1. Web 服务器........................................................................................................................................... 3 3.1.2. Web 容器............................................................................................................................................... 4 3.1.3. EJB 容器 ............................................................................................................................................... 5 3.1.4. 基础服务 .............................................................................................................................................. 7 3.2. 开发平台 ................................................................................................................................................... 18 3.2.1. 对主流 JEE 应用服务器的支持 ....................................................................................................... 19 3.2.2. 对主流 Web 框架的支持 ................................................................................................................... 19 3.2.3. 使用 MDA 快速开发 Web 应用 ....................................................................................................... 21 3.2.4. 统一认证与授权的应用开发 ............................................................................................................ 21 3.3. 管理平台 ................................................................................................................................................... 22 第 4 章 技术特点 ................................................................................................................................................. 24 4.1. 技术领先、架构卓越 ............................................................................................................................... 24 4.1.1. 全面遵循 JEE5.0 标准 ...................................................................................................................... 24 4.1.2. 先进的体系结构 ................................................................................................................................ 24 4.2. 高性能、高可用 ....................................................................................................................................... 25 4.2.1. 高稳定性与高性能 ............................................................................................................................ 25 4.2.2. 强大的集群功能 ................................................................................................................................ 26 4.2.3. 基于云计算的高可用支撑 ................................................................................................................ 26 4.3. 安全增值服务 ........................................................................................................................................... 26 4.3.1. 良好的安全特性 ................................................................................................................................ 26 4.3.2. 应用防火墙 ........................................................................................................................................ 27 第 5 章 综述 ......................................................................................................................................................... 28 附录 A. 附录 B. 运行环境 .......................................................................................................................................... 30 标准支持情况 .................................................................................................................................. 31

第10章 JAX-RS概述

第10章 JAX-RS概述

资源类和资源方法的注解
@javax.ws.rs.Path 标注资源类的URI,该注解也可以用于类中的资源方法。 @javax.ws.rs.GET 标注该资源类中处理HTTP协议中GET请求的资源方法,经 常用于查询。该资源方法应做到幂等。 @javax.ws.rs.POST 标注该资源类中处理HTTP协议中POST请求的资源方法, 通常用于资源的创建,资源标识由服务器端产生。 @javax.ws.rs.PUT 标注该资源类中处理HTTP协议中PUT请求的资源方法,经 常用于更新,有时也用于资源的创建,但创建资源所需的标 识应由客户端提供。该资源方法应做到幂等。
单例模式的Application示例
/* 该示例实现了getClasses抽象方法的同时,改写了 getSingletons方法,将Hello资源类设置为单例模式。 ---------------------------------------------------------------------------------*/ @javax.ws.rs.ApplicationPath("/singletonres") public class ApplicationConfig extends Application{ Set<Object> singletons= new java.util.HashSet(); public Set<Class<?>> getClasses(){ return Collections.emptySet(); } @Override public Set<Object> getSingletons() { return singletons.add(new Hello()); } }

servlet 规范文档

servlet 规范文档

servlet 规范文档**Servlet 规范文档**In the realm of web development, the Servlet specification plays a pivotal role in defining the standards for server-side programming. The Servlet API is a Java-based specification that outlines how web servers should interact with Java-based web applications. It is a crucial component of the Java EE (Java Platform, Enterprise Edition) technology stack, enabling developers to create dynamic, scalable, and secure web applications.在Web开发领域,Servlet规范在定义服务器端编程标准方面起着举足轻重的作用。

Servlet API是一个基于Java的规范,它概述了Web服务器应如何与基于Java的Web应用程序进行交互。

它是Java EE(Java平台企业版)技术栈的重要组成部分,使开发人员能够创建动态、可扩展且安全的Web应用程序。

The Servlet specification details the lifecycle of a Servlet, from its initialization to its destruction. It specifies how a Servlet should handle requests and generate responses, including the handling of errors and exceptions. Furthermore, it outlines the security mechanisms that must be adhered to when developing Servlets, ensuring that sensitive data is protected and unauthorized access is prevented.Servlet规范详细描述了Servlet的生命周期,从初始化到销毁。

servlet 3.0异步处理

servlet 3.0异步处理

2.15.3 Servlet3.0提供的异步处理(1)在以前的Servlet规范中,如果Servlet作为控制器调用了一个耗时的业务方法,那么Servlet必须等到业务方法完全返回之后才会生成响应,这将使得Servlet 对业务方法的调用变成一种阻塞式的调用,因此效率比较低。

Servlet 3.0规范引入了异步处理来解决这个问题,异步处理允许Servlet重新发起一条新线程去调用耗时的业务方法,这样就可避免等待。

Servlet 3.0的异步处理是通过AsyncContext类来处理的,Servlet可通过ServletRequest的如下两个方法开启异步调用、创建AsyncContext对象:AsyncContext startAsync()AsyncContext startAsync(ServletRequest, ServletResponse)重复调用上面的方法将得到同一个AsyncContext对象。

AsyncContext对象代表异步处理的上下文,它提供了一些工具方法,可完成设置异步调用的超时时长,dispatch用于请求、启动后台线程、获取request、response对象等功能。

下面是一个进行异步处理的Servlet类。

程序清单:codes\02\2.15\servlet3\WEB-INF\src\lee\AsyncServlet.java1.@WebServlet(urlPatterns="/async",asyncSupported=true)2.public class AsyncServlet extends HttpServlet3.{4. @Override5. public void doGet(HttpServletRequest request6. , HttpServletResponse response)throws IOException,ServletException7. {8. response.setContentType("text/html;charset=GBK");9. PrintWriter out = response.getWriter();10. out.println("<title>异步调用示例</title>");11. out.println("进入Servlet的时间:"12. + new java.util.Date() + ".<br/>");13. out.flush();14. //创建AsyncContext,开始异步调用15. AsyncContext actx = request.startAsync();16. //设置异步调用的超时时长17. actx.setTimeout(30*1000);18. //启动异步调用的线程19. actx.start(new Executor(actx));20. out.println("结束Servlet的时间:"21. + new java.util.Date() + ".<br/>");22. out.flush();23. }24.}上面的Servlet类中粗体字代码创建了AsyncContext对象,并通过该对象以异步方式启动了一条后台线程。

J2EE的13种规范

J2EE的13种规范

什么是J2EE?在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复开发,开发周期长和代码可靠性差等问题.但是,各公司的中间件不兼容的问题就出现了,用户无法将它们组装在一起为自己服务.于是,"标准"就应运而生了.J2EE就是基于Java技术的一系列标准.J2EE是Java2平台企业版(Java 2Platform Enterprise Edition),核心是一组技术规范与指南,其中所包含的各类组件,服务架构和技术层次,都有共同的标准及规格,让各种依云J2EE架构的不同平台之间,存在良好的兼容性.J2EE的13种规范是什么?1.JDBC(JavaDatabase Connectivity)JDBC是以统一方式访问数据库的API.它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracle数据库专门写一个程序,为访问Sybase数据库又专门写一个程序等等,只需要用JDBC API写一个程序就够了,它可以向相应数据库发送SQL调用.JDBC是Java应用程序与各种不同数据库之间进行对话的方法的机制.简单地说,它做了三件事:与数据库建立连接--发送操作数据库的语句--处理结果.2.JNDI(JavaName and Directory Interface)JNDI是一组在Java应用中访问命名和目录服务的API.(命名服务将名称和对象联系起来,我们即可用名称访问对象.JNDI允许把名称同Java对象或资源关联起来,建立逻辑关联,而不必知道对象或资源的物理ID.)JNDI为开发人员提供了查找和访问各种命名和目录服务的通用,统一的接口,可访问的目录及服务如下表:利用JNDI的命名与服务功能可满足企业级API对命名与服务的访问,诸如EJB,JMS,JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务.JNDI和JDBC类似,都是构建在抽象层上.因为:它提供了标准的独立于命名系统的API,这些API构建在命名系统之上.这一层有助于将应用与实际数据源分离,因此不管是访问的LDAP,RMI还是DNS.也就是说,JNDI独立于目录服务的具体实现,只要有目录的服务提供接口或驱动,就可以使用目录.3.EJB(EnterpriseJavaBean)J2EE将业务逻辑从客户端软件中抽取出来,封装在一个组件中。

注解标注过滤器

注解标注过滤器

注解标注过滤器Servlet3.0提供@WebFilter注解将一个实现了javax.servlet.Filter接口的类定义为过滤器,这样我们在web应用中使用过滤器时,也不再需要在web.xml文件中配置过滤器的相关描述信息了。

下面我们来创建一个过滤器,体验一下使用@WebFilter注解标注过滤器,如下所示:过滤器的代码如下:1package me.gacl.web.filter;2import java.io.IOException;3import javax.servlet.Filter;4import javax.servlet.FilterChain;5import javax.servlet.FilterConfig;6import javax.servlet.ServletException;7import javax.servlet.ServletRequest;8import javax.servlet.ServletResponse;9import javax.servlet.annotation.WebFilter;1011/**12* 使用注解标注过滤器13* @WebFilter将一个实现了javax.servlet.Filte接口的类定义为过滤器14* 属性filterName声明过滤器的名称,可选15* 属性urlPatterns指定要过滤的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性) 16*/17 @WebFilter(filterName="Servlet3Filter",urlPatterns="/*")18public class Servlet3Filter implements Filter {1920@Override21public void destroy() {22System.out.println("过滤器销毁");23}2425@Override26public void doFilter(ServletRequest request, ServletResponse response,27FilterChain chain) throws IOException, ServletException {28System.out.println("执行过滤操作");29chain.doFilter(request, response);30}3132@Override33public void init(FilterConfig config) throws ServletException {34System.out.println("过滤器初始化");35}36 }过滤器中使用了@WebFilter(filterName="Servlet3Filter",urlPatterns="/*")进行配置,Filter的名字是Servlet3Filter,表示urlPatterns="/*"该Filter拦截所有的请求。

spring中文API文档

spring中文API文档

这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进行修正。

文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。

另:Spring Security 从2010-01-01 以后,版本控制从SVN 换成了GIT,我们在翻译文档的时候,主要是根据SVN 的变化来进行文档内容的比对,这次换成GIT 后,感觉缺少了之前那种文本比对工具,如果有对GIT 熟悉的朋友,还请推荐一下文本比对的工具,谢谢。

序言I. 入门1. 介绍1.1. Spring Security 是什么?1.2. 历史1.3. 发行版本号1.4. 获得Spring Security1.4.1. 项目模块1.4.1.1. Core - spring-security-core.jar1.4.1.2. Web - spring-security-web.jar1.4.1.3. Config - spring-security-config.jar1.4.1.4. LDAP - spring-security-ldap.jar1.4.1.5. ACL - spring-security-acl.jar1.4.1.6. CAS - spring-security-cas-client.jar1.4.1.7. OpenID - spring-security-openid.jar1.4.2. 获得源代码2. Security 命名空间配置2.1. 介绍2.1.1. 命名空间的设计2.2. 开始使用安全命名空间配置2.2.1. 配置web.xml2.2.2. 最小<http> 配置2.2.2.1. auto-config 包含了什么?2.2.2.2. 表单和基本登录选项2.2.3. 使用其他认证提供器2.2.3.1. 添加一个密码编码器2.3. 高级web 特性2.3.1. Remember-Me 认证2.3.2. 添加HTTP/HTTPS 信道安全2.3.3. 会话管理2.3.3.1. 检测超时2.3.3.2. 同步会话控制2.3.3.3. 防止Session 固定攻击2.3.4. 对OpenID 的支持2.3.4.1. 属性交换2.3.5. 添加你自己的filter2.3.5.1. 设置自定义AuthenticationEntryPoint2.4. 保护方法2.4.1. <global-method-security> 元素2.4.1.1. 使用protect-pointcut 添加安全切点2.5. 默认的AccessDecisionManager2.5.1. 自定义AccessDecisionManager2.6. 验证管理器和命名空间3. 示例程序3.1. Tutorial 示例3.2. Contacts3.3. LDAP 例子3.4. CAS 例子3.5. Pre-Authentication 例子4. Spring Security 社区4.1. 任务跟踪4.2. 成为参与者4.3. 更多信息II. 结构和实现5. 技术概述5.1. 运行环境5.2. 核心组件5.2.1. SecurityContextHolder, SecurityContext 和Authentication 对象5.2.1.1. 获得当前用户的信息5.2.2. UserDetailsService5.2.3. GrantedAuthority5.2.4. 小结5.3. 验证5.3.1. 什么是Spring Security 的验证呢?5.3.2. 直接设置SecurityContextHolder 的内容5.4. 在web 应用中验证5.4.1. ExceptionTranslationFilter5.4.2. AuthenticationEntryPoint5.4.3. 验证机制5.4.4. 在请求之间保存SecurityContext 。

中创InforSuite应用服务器

中创InforSuite应用服务器
InforSuite 应 用 服 务 器
技术白皮书
中创软件商用中间件股份有限公司
前言
I
前言
InforSuite 应用服务器是支持 JEE 5 的企业级应用服务器。InforSuite 应用服务器采用构件化思 想,易于设计实现便于移植、互操作性好的可重用构件,具有良好的开放性、稳定性、可扩展性和 可管理性,能够快速便捷地进行应用开发、部署、运行和管理,为构建多层、分布的企业应用提供 了一个稳定高效,安全可靠的平台。
Hale Waihona Puke JEE™相关规范 .................................................................................................................................................. 31 WEB SERVICES 相关规范 .................................................................................................................................. 31 XML 相关规范 ................................................................................................................................................. 32 INTERNET 相关协议及标准 .............................................................................................................................. 32 附录 C. 关于中创软件商用中间件股份有限公司 ...................................................................................... 33
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简介: Servlet 是Java EE 规范体系的重要组成部分,也是Java 开发人员必须具备的基础技能,Servlet 3.0 是Servlet 规范的最新版本。

本文主要介绍了Servlet 3.0 引入的若干重要新特性,包括异步处理、新增的注解支持、可插性支持等等,为读者顺利向新版本过渡扫清障碍。

Servlet 3.0 新特性概述Servlet 3.0 作为Java EE 6 规范体系中一员,随着Java EE 6 规范一起发布。

该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化Web 应用的开发和部署。

其中有几项特性的引入让开发者感到非常兴奋,同时也获得了Java 社区的一片赞誉之声:1. 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该Servlet 线程。

在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。

针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。

2. 新增的注解支持:该版本新增了若干注解,用于简化Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得web.xml 部署描述文件从该版本开始不再是必选的了。

3. 可插性支持:熟悉Struts2 的开发者一定会对其通过插件的方式与包括Spring 在内的各种常用框架的整合特性记忆犹新。

将相应的插件封装成JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。

现在Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有Web 应用的功能,而不需要修改原有的应用。

下面我们将逐一讲解这些新特性,通过下面的学习,读者将能够明晰了解Servlet 3.0 的变化,并能够顺利使用它进行日常的开发工作。

回页首异步处理支持Servlet 3.0 之前,一个普通Servlet 的主要工作流程大致如下:首先,Servlet 接收到请求之后,可能需要对请求携带的数据进行一些预处理;接着,调用业务接口的某些方法,以完成业务处理;最后,根据处理的结果提交响应,Servlet 线程结束。

其中第二步的业务处理通常是最耗时的,这主要体现在数据库操作,以及其它的跨网络调用等,在此过程中,Servlet 线程一直处于阻塞状态,直到业务方法执行完毕。

在处理业务的过程中,Servlet 资源一直被占用而得不到释放,对于并发较大的应用,这有可能造成性能的瓶颈。

对此,在以前通常是采用私有解决方案来提前结束Servlet 线程,并及时释放资源。

Servlet 3.0 针对这个问题做了开创性的工作,现在通过使用Servlet 3.0 的异步处理支持,之前的Servlet 处理流程可以调整为如下的过程:首先,Servlet 接收到请求之后,可能首先需要对请求携带的数据进行一些预处理;接着,Servlet 线程将请求转交给一个异步线程来执行业务处理,线程本身返回至容器,此时Servlet 还没有生成响应数据,异步线程处理完业务以后,可以直接生成响应数据(异步线程拥有ServletRequest 和ServletResponse 对象的引用),或者将请求继续转发给其它Servlet。

如此一来,Servlet 线程不再是一直处于阻塞状态以等待业务逻辑的处理,而是启动异步线程之后可以立即返回。

异步处理特性可以应用于Servlet 和过滤器两种组件,由于异步处理的工作模式和普通工作模式在实现上有着本质的区别,因此默认情况下,Servlet 和过滤器并没有开启异步处理特性,如果希望使用该特性,则必须按照如下的方式启用:1. 对于使用传统的部署描述文件(web.xml) 配置Servlet 和过滤器的情况,Servlet 3.0 为<servlet> 和<filter> 标签增加了<async-supported> 子标签,该标签的默认取值为false,要启用异步处理支持,则将其设为true 即可。

以Servlet 为例,其配置方式如下所示:<servlet><servlet-name>DemoServlet</servlet-name><servlet-class>footmark.servlet.Demo Servlet</servlet-class>一个简单的模拟异步处理的Servlet 示例如下:@WebServlet(urlPatterns = "/demo", asyncSupported = true)public class AsyncDemoServlet extends HttpServlet {@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {resp.setContentType("text/html;charset=UTF-8");PrintWriter out = resp.getWriter();out.println("进入Servlet的时间:" + new Date() + ".");out.flush();//在子线程中执行业务调用,并由其负责输出响应,主线程退出AsyncContext ctx = req.startAsync();new Thread(new Executor(ctx)).start();out.println("结束Servlet的时间:" + new Date() + ".");out.flush();}}public class Executor implements Runnable {private AsyncContext ctx = null;public Executor(AsyncContext ctx){this.ctx = ctx;}public void run(){try {//等待十秒钟,以模拟业务方法的执行Thread.sleep(10000);PrintWriter out = ctx.getResponse().getWriter();out.println("业务处理完毕的时间:" + new Date() + ".");out.flush();回页首新增的注解支持Servlet 3.0 的部署描述文件web.xml 的顶层标签<web-app> 有一个metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。

如果设置为true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过web-fragment.xml 的扫描,亦即禁用可插性支持,具体请看后文关于可插性支持的讲解);如果不配置该属性,或者将其设置为false,则表示启用注解支持(和可插性支持)。

@WebServlet@WebServlet 用于将一个类声明为Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为Servlet。

该注解具有下表给出的一些常用属性(以下所有属性均为可选属性,但是vlaue 或者urlPatterns 通常是必需的,且二者不能共存,如果同时指定,通常是忽略value 的取值):表1. @WebServlet 主要属性列表属性名类型描述name String 指定Servlet 的name 属性,等价于<servlet-name>。

如果没有显式指定,则该Se的取值即为类的全限定名。

value String[] 该属性等价于urlPatterns 属性。

两个属性不能同时使用。

urlPatterns String[] 指定一组Servlet 的URL 匹配模式。

等价于<url-pattern> 标签。

loadOnStartup int 指定Servlet 的加载顺序,等价于<load-on-startup> 标签。

initParams WebInitParam[] 指定一组Servlet 初始化参数,等价于<init-param> 标签。

asyncSupported boolean 声明Servlet 是否支持异步操作模式,等价于<async-supported> 标签。

description String 该Servlet 的描述信息,等价于<description> 标签。

displayName String 该Servlet 的显示名,通常配合工具使用,等价于<display-name> 标签。

@WebInitParam该注解通常不单独使用,而是配合@WebServlet 或者@WebFilter 使用。

它的作用是为Servlet 或者过滤器指定初始化参数,这等价于web.xml 中<servlet> 和<filter> 的<init-param> 子标签。

@WebInitParam 具有下表给出的一些常用属性:表2. @WebInitParam 的常用属性属性名类型是否可选描述name String 否指定参数的名字,等价于<param-name>。

value String 否指定参数的值,等价于<param-value>。

description String 是关于参数的描述,等价于<description>。

@WebFilter@WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。

该注解具有下表给出的一些常用属性( 以下所有属性均为可选属性,但是value、urlPatterns、servletNames 三者必需至少包含一个,且value 和urlPatterns 不能共存,如果同时指定,通常忽略value 的取值):表3. @WebFilter 的常用属性属性名类型描述filterName String 指定过滤器的name 属性,等价于<filter-name>value String[] 该属性等价于urlPatterns 属性。

相关文档
最新文档