版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,Java是这些年来最流行的编程语言之一。它无处不在——计算机、、网站以及各种嵌入式设备中都存在着大量的Java应用程序,而其中应用最为广泛的应该就是平台中的各种组件,我们可以轻松构建出稳定而功能丰富的企业级Web应用程序。随着Spring的出现,Java开发更是变得简洁和轻松。Spring是一个一站式的开发框架,它通过自身实现和第集成两种方式提供了Java企业应用程序表现层、业务层、持久层等家更是应该耳熟能详了。本书将对Spring框架的这些特性进行深入的讲解。另外,本书还将讲解如何使用SpringSecurity保护自己的应用程序。在开发过程中的另一个重要技术就是如何数据了,在这方面对象关系映射(O/RM)JPA,又再次促进了对象关系映射的发展。而无论是JavaEE开发,还是Spring和JPA,它们都拥有丰富的内容,任意一项其实都可外,本书还对JavaSE7和8中新增的特性进行了讲解。JavaJavaSE平台知识的软件开发者和软件工程师。开发者通过阅读本书可以扩展自己Java方面的知识,提升自己的技能。架构师通过阅读本书可以在团队项目中应用本书详细讨论的一些Web软件开发概念和模式。团队管理者通过阅读本书也可以扩展自己的知识库,使他们可以更好地与开发者,并提出解决某些问题的建议。总而言之,本书是一本学习各种JavaEE开发技术的佳作。支持和鼓励。没有的支持,本书就不可能顺利。最后,祝愿各位读者通过阅读本书可以熟练掌握JavaEE译NickWilliams就职于ULWorkceHealthandSafety(位于田纳科学之后,他从事商业和开源软件项目超过了9年时间。他同时也是 的创建者,该用于提供免费的DNS和IP故障排除工具,同时还提供了NWTSJava代码。另外,它还是一个专注于编写满足商业需求的Java库的开源社区。在2010年,纳什维尔技术(NashvilleTechnologyCouncil)授予他中部田纳西州最杰出软件工程师称号。Nick是ApacheLogging(包括log4j)和JacksonDataProcessorJSR310DataTypes的代码提交者。他还为ApacheTomcat8.0、SpringFramework4.0、SpringSecurity3.2、SpringDataCommons1.6、SpringDataJPA1.4和并且他还是JavaCommunityProcess(JCP)的成员。JakeRadakovich2009年加入了ULWorkceHealthandSafety,现在是OccupationalHealthManager产品的一位软件开发者。在此之前,他曾经是中部田纳西州立大学的一位研AlgoTutorWeb的算法开发系统。他在中部田纳西州立大学获得计算机科学和数学的学士。ManuelJordanElera是一位自主的开发者和研究者,他喜欢通过自己的实验学习新的2010SpringyAward2013年的CommunityChampion和SpringChampion。在休闲时间内,他喜欢阅读和创作乐曲Manuel是Spring社区的一位高级成员,他的ID为dr_pompeii。你可以通过他的博客了解和联系他,也可以通过他的账户@dr_pompeii与他沟通。 感谢JoyceBlairCrowell和WilliamHooper博士,他们的帮助和教导使我受益匪浅。感谢SarahAnnStewart博士,感谢他在我最沮丧的时候给予了我极大的信任。感谢MrsLockhart感谢Jay,感谢他将我介绍给了Mary。感谢Mary和Maureen,他们使本书的成为感谢Jake 中,在蓝光器中,在计算机中。一些流行的智能也运行在基于Java的操作系统上;并且它为你每天使用的许多都提供了技术支持。当你想到Java时,可能自然会想象到浏applet或者与操作系统中其他应用程序风格不匹配的桌面应用程序。你可能甚至会想到一直通知你升级Java的、让人讨厌的系统托盘提醒。Java的应用远比你能想到的(每天可以见到的)要广泛。Java是一门强大的语言,但它的强大之处地体现在它的平台中。尽管JavaSE经提供了创建控制台、桌面和浏览器应用程序所必不可少的工具,但JavaEE平台仍然对它进行了巨大的扩充,JavaEE平台可以帮助创建内容丰富的强大Web应用程序。本书将对这些工具进行讲解,并向你展示如何创建现代的、有用的企业级JavaWeb应用程序。 本书主要面向已经具有丰富的Java语言和JavaSE平台知识的软件开发者和软件工程师。本书可以通过完成,现有的Java开发者通过学习本书可以扩展自己Java方面的知识,提 和 本书对于已经具有JavaEE平台经验的开发者也是非常有用的,它可以帮助他们提升自己的技能或者学些JavaEE版本中的新特性。本书对于软件架构师来说也是非常有 p p JavaJava应用程序的读者。如果你之前没有任何Java经验,那么可能会发现本内容和示例都难于理解。这是因为本书未涉及Java语言语法或者JavaSE平台的规范。本书假定读者都已经能够熟练编写、编译和调试Java代码,并且熟悉标准平台(JavaSE)JavaSE8中添加的新特性和工具才会出意的是,如果你不熟悉其中的某些概念,在阅读本书的某些章节时,可能会感到很。Internet、TCP、HTTPJavaScript或ECMAScript,包括jQuery结构化查询语言(SQL)MySQL(如果你熟悉其他关系数据库的事务和事务概念,例如ACID(原子性、一致性、性、持久性本书将对JavaEE平台版本7和其中的许多技术进行详细讲解。本书首先将介绍什么是JavaEE平台以及它的发展过程,接着介绍应用服务器和Servlet容器以及它们的工作原理。然后讲解SpringFramework、发布-订阅、高级消息队列协议(AMQP)、对象关系映射(O/RM)、HibernateORM、SpringData、全文搜索、ApacheLucene、HibernateSearch、SpringSecurity和OAuth。本书还将对下列JavaEE7组件进行讲解:Servlets3.1–JSRJavaServerPages(JSP)2.3–JSRJavaUnifiedExpressionLanguageJUEL或仅EL)3.0JSRJavaAPIforWebSockets–JSRBeanValidation(BV)1.1–JSRJavaMessageService(JMS)2.0–JSRJavaPersistenceAPI(JPA)2.1–JSRJavaTransactionAPI(JTA)1.2—JSR 本书还将广泛地使用lambda表达式和新的JSR310Java8DateandTimeAPI,它们都被添加到JavaSE8中。、和r解SevletTTPJP轻松创建出强大的用户界面,以及如何通过结合使用JSP标记和全新的EpressonLaguge3.JvaJvaI行解P以应用程序中的多个页面)WebSokets进行讲解,通过它我们可以创建出更加丰富、更具有交互性的用户界面,因为它将在应用程序和客户端(例如浏览器)pringFrrk置搭建高级SpringFramework项目,还将使用Spring工具实现bean验证和。使用SpringMVC控制器和SpringWebServicesRESful和SOAPWeb服务,还将学习如何使用SpringFramework内建的消息传送系统。最终学习高级消息队列协议(AMQP),并学习如何配置和使用RabbitMQ。JPAireORM生JDBC持久化实体的一些基本问题之后,该部分将开始讲解对象关系映射(O/RM)和HibernateORM及其API。接下来将讲解JavaPersistenceAPI,该API抽象出了一些公共API,不管底层使用的是哪种O/RM实现,我们都可以编写相同的代码。然后讲解了SpringData,rii本书的最后一部分介绍了认证和的概念,并展示了同时可用于这两种目的的几种技术。然后讲解了如何在SpringFramework应用程序中集成SpringSecurity。最后讲解了如何p p JavaJavaSEJavaSE7和JavaSE8中新增的特性。本书也不会讲解如何编写基于Java的控制台应用程序、桌面应用程序或applet。如果你需要这方面的书籍,Wrox有许多书籍可供选择。更重要的是,本书不会讲解如何管理JavaEE应用服务器环境。现在有众多的应用服务器和Web容器可以使用,没有哪两种服务器管理方式是一样的。使用哪种应用服务器完全取应用服务器也是不合实际的。学习如何部署和管理JavaEE应用服务器或Web容器的最好方法是查询它的文档,在某些情况下,最好的方式是进行实验(Web容器的使用是完成本2章将对一些基本的任务进行讲解,包括安装、启动、停止以及部署应用程序到ApacheTomcat)。EE7组件,这些组件在大多数简单的Web容器并未得到支持,在使用SpringFramework和JavaAPIforRESTfulWebServices(JAX-RS)2.0–JSRJavaServerFaces(JSF)2.2–JSREnterpriseJavaBeans(EJB)3.2–JSRContextsandDependencyInjection(CDI)1.1–JSRJCache–JSRStateManagement–JSRBatchApplicationsforthe tform–JSRConcurrencyUtilitiesforJavaEE–JSRJavaAPIforJSONProcessing–JSR一个强大的文本编辑器,用于完成某些任务,例如编辑配置文件。不要使用WindowsWindowsNotepad++或SublimeTextMacOSX—TextWrangler、SublimeText2或LinuxSublimeText2或 必须在计算机中安装支持JavaSE8的Java开发工具包(JDK)。JavaSE8已在2014年3月发布。可以从Oracle标准JavaSE(htt downloads/indexhtml)获得该JDK。总是使用版的JDK,为自己的计算机合适的版本IDEIDE,或者你只是使用文本编辑器和命令行。如果你已经有了IDE,那么它也可能无法运行本示例。在选择IDE(或者评估当前使用的IDE需要能够检查JavaEE、Spring、JPAHibernate配置,并告诉你这些配置中是否包含错误或问题。下面将介绍三种支持多种语言的IDE,并针对本书做出建议。NtsDE才支持JavaSE8和JavaEE7,之前的版本不支持。NetBeans提供了强大的特性集,并为所JavaEEC、C++PHP开发。你也可以通过插件扩展NetBeans的功能,现在有支持SpringFrameworkHibernateORM的插件。不过,NetBeans特性集不如其他IDE丰富,所以在学习本书的过程中,不推荐使用它。本样例代码并未涉及NetBeans的格式,但如果你选择使用NetBeans,那么可以通过导入Maven项目的方式导入代码。NetBeans的为。EclipseIDEJavaIDE。其中的一个强大之以为特定的任务或工作流完全自定义IDE的布局。它已经包含了支持SpringFramework、SpringData、SpringSecurity、HibernateORM等的插件和扩展。Spring社区也提供了一个p p 以作者的观点来看,Eclipse是一种很难高效使用的IDE。完成很简单的任务却需要大量的工Eclipse社区尚未发布兼容JavaSE8和JavaEE7的版本。因此,不推荐使用Eclipse运行本开发的EclipseLunaIDE4.4,它已在2014年7月发布。EclipseIDE的。Luna4.4能够支持它们的运行。InliJDA13终极JetBrains的InliJIDEA不论是社区版(免费的)还是终极版(的)都是具有丰富功能的JavaIDEJavaIDE。它的代码建议和补全功发布之前的实验版本提供了较好的支持。例如,InliJIDEA12201212月已经提供了对JavaSE8JavaSE815个月,比EclipseIDE对JavaSE8的18个月。如果你喜欢在JavaSE和JavaEE发布之前测试它们的新版本,并在发布之后立即使用它们,那么InliJIDEA是你必然的选择。JavaSE项目,但不可用于JavaEE项目。如果需要完整地支持JavaEE、Spring项目和HibernateORM,那么就要VisualStudio同等版本花费的一小部分。教育机构可以获得免费用于正式的教学使用,开源组织也可以获得免费许可用于项目开发。在这里,你可以从 /idea/download/InliJIDEA13终极版的30天免费版,之后你可版本中。对于本所有样例代码,推荐使用InliJIDEA终极版。直到EclipseLuna4.4能够支持本书示例的运行之前,所有的代码都可被用于InliJIDEA项目中。请确保InliJIDEA的版本。尽管版本13.0.x是本书之前的版本,但13.1.x20144月发布,它将包含几个对SpringFramework和JavaEE7支持的改进,版本14.0.x已在2014年11月发布。在阅读本书时最后一个需要的工具是JavaEEWeb容器(必须是实现了ServletJSPJUEL和JavaEE7中WebSocket规范的Web容器)2章将对该内容进行详细的讲解,并介绍大多数流行的Web容器和应用服务器,以及如何、安装和使用ApacheTomcat8.0。X 有的示例都可以从代码和ht .cn/downpage获得。请访问h /go/projavaforwebapps并单击DownloadCode选项卡。你可以将所有代码示例为单个ZIP文件或者将每章的示例单独为一个ZIP文件。在每章的示例中,可以找到每个示例的两个版本:一个InliJIDEA项目和一个Eclipse项目。使用自己能够将InliJIDEA项目作为简单的Maven项目导入。 liJIDEA示例项目。在本书的初始部分,你可以直接在IDE中创建这些示例,而无须从代码(如果你从第Ⅱ部分到第Ⅳ部分的大多数示例项目中的SpringFramework配置基本是一致的。在这种 p p 一些章节未包含代码示例,但大多数都包含。Maven依本样例代码将广泛运用第依赖,例如SpringFramework、HibernateORM和SpringSecurity。在的代码中包含这些依赖JAR,将使文件变大,你可能需要下ApacheMaven及其依赖管理功能。MavenIDE中打开每个项目时,IDEMaven库中查找这些依赖,或者如果需要的话,IDE将它们到本地Maven库中。在每章的首页,你将会看到一个标题为“本章新增的Maven依赖”的区域。该部分列出了本章中新增的Mavenpom.xml文件来检查每个示例项目的依赖。某些章节未引入新的Maven依赖,但大多数章节都引入了。每个Maven依赖都会有作用域,用于定义依赖在哪个类路径上可用。最常见的作用径上以及运行应用程序时的最终运行时类路径上可用。在JavaEEWeb应用程序中,这意味应用程序的容器将会提供该依赖。在JavaEE应用程序中,这意味着依赖已经在Servlet容器或应用服务器的类路径上了,因此不需要再到部署的应用程序中。Maven和IDE将保证在文本和示例项目中,有一些Maven依赖将会包含排除(exclusions),用于忽略某些特定可以更清楚地表示这里出现了,并且避免了由Maven的最近算法所引起的问题。不过,某些排除的存在是由于JavaSE或JavaEEID发生坦白地说,应用程序安全会影响其他内容的学习。在产品中添加认证和所使用的技术将会干扰你的代码,并使学习过程变得。安全是第一位的,而且一直记得安全问题永远也不是错误。不过,只要使用了正确的工具,在项目完成(或基本上完成)之后为它添加验证和也是相当简单的一件事。本书首先将关注于如何使用工业标准工具创建出高质量、特性丰富的Web应用程序。在学会了创建强大应用程序所需的技能之后,本书的第Ⅳ部分将 如果你希望阅读本书已经发现的勘误表,请Wrox的h 使用搜索框寻找该书名。搜索ISBN是最快的方式。在本书的首页,单击勘误表的。在这里你可以看到所有由读者提交并由Wrox编辑验证过的错误。如果你无法解决自己发现的 第Ⅰ部分创建企业级应用程序第1章介绍JavaEE平 Java间 企业级Java的诞 持续发 结 Servlet、过滤器、器 结构和WAR文 小 第2章使用Web容 Apache JBoss和 其他容器和应用服务 本书使用Tomcat的原 在个人计算机中安装 将Tomcat安装为服 将Tomcat应用程
配置自定义的JSP编译 应用程 手动部署和卸 使用Tomcat管理 通过IDE调试 使用InliJ 使用 小 第3章创建第一个vt 创建Servlet 选择要继承的Servlet 配置可部署的 向描述符中添加 将Servlet映射到 运行和调试 doGet、doPost其他方 在service过程 使用 使用 使用参数和接受表单提 应用程 使用上下文初始化参 使用Servlet初始化参 通过表单上传文 第5章使用会话维持状 需要会话的原 p p 配置Servlet支持文件上 方法执 小 第4章使用JSP显示页面内 使用<br 使用JSP的原 JSP在运行时的处 创建第一个 指令、、表达 注释代 在JSP中导入 使用指 使用<jsp>不鼓励使用Java的原因 使用JSP中隐式的变 JSP中使用的原 结合使用Servlet和 属 将Servlet 注意事 小 维持状 记住用 和重 了解会 URL中的会话 会话的在会话中数 和获取数 删除数 在会话中更复杂数 使用会
登录功 使用器检测会话变 群集 在群集中使用会话 小 第6章在JSP中使用表达式语 了解表达式语 添加EL表达 使用EL语 对象属性和方 EL函 目 lambda表达 变 使用隐式的EL作用 使用隐式的EL变 使用流API集 使用流 代 小 第7章使用Java标准 JSP和JSTL简 (C命名空间 <c:choose>、<c:when> <c <c <c <c:set>和<c 使用库使用和格式化(FMT命名空间 <fmt
<fmt <fmtformatDate> (SQL命名空间 (X命名空间 代 小 第8章编写自定义和函数
处理 8.1.1Java标准库 比较JSP指令和文指 模 处理 创建EL函数简写字符 Java代 小 第9章使用过滤器改进应用程 了解过滤器的目 错误处理过滤 客户端 p p 创建、和映射过滤 映射到URL名 类 使用部署描述 使用注 使用编程式配 过滤器排 URL模式映射和名称映 演示过滤器顺 过滤器的实际用 添加简单的日志过滤 使用过滤器简化认 小 10Wt进行交 新数据到浏览 4:AppletAdobe 解决方 JavaWebSocket 游 策 创建服务器终 编写JavaScript游控制 WebSocket试 进行通 使用两个Servlet模拟简单的群
编写JavaScript聊应用程 小 第11章使用日志应用程 了解日志的概 记录日志的原 日志的写入方 使用日志级别和分 原 定义的日志级 筛选的工作方 选择日志框 目API ApacheCommons和 Log4j2简 在应用程序中集成日 在Web鱼在Java日志语 JSP 日 小 第Ⅱ部分添加rigFrrk第12章介绍prigmwk SpringFramework简 Web应用程序的模型视图-控制器模 SpringFramework原 用户界 了解应用上下 启动Spring
方式启动Spring 配置Spring 使用@Configuration 小 第13章使用控制器替代v 了解@RequestMap使用@RequestMap特缩小请求匹配的范 返回类 SpringFramework模型和视图模 视图名 隐式视 使用表单对象简化开 使用Spring 更新客户支持应用程 启用Multipart支 将ServletSpringMVC控制 创建自定义视 p p 小 14章控制
15使用prigmwrkn应用程 SpringFramework
的原因
不同类 逻 界面逻 根应用上下 移动到服 服 创建和使用方 创建和使用方 WebSocket分 在Spring应用上下文中添加由容器管理的对 使用Spring配置 记住:WebSocket
使变得更容 使用基本的本地化 使用消息源 SpringFramework配置 逻辑的另一个界 小 使用处理器修区域设 提供一个用户区域设 了解如何改代 使用<spring
应用程序错 直接使用消息 小 第16章使用JSR349prigrmwk和Hibrelir执行Bean验证 Bean验证的概 使用HibernateValidator的 目 使用Spring实现Bean验 SpringFramework容器配置验 配置Spring验证 使用方法验证Bean处理 在SpringMVC相同的验证 注 使用约 使用@Valid验 递归验 验证方法返回 方法验 在SpringMVC中使用参数验 编写自己的验证约 其他限
创建限制验证 生命周 集成验 小 17创建RflSOAP服 最初的 RESTfulWeb了一种更简单的方 SpringMVC 控制 创建单独的Web和应用上下
处理RESTfulWeb中的错误条 将RESTful控制器方 机 请求Web服 SpringWeb创建SOAPWeb服 XSD 添加SOAP派发器配 小 数据持久化的定 p p 第18章使用消息传送和群集实现灵活性和可靠 时 定 协作方 支 在群集中分布消息传 多播 使用WebSocket接收节 群 使用AMQP分布配置AMQP创建AMQP多播 AMQP应用程 小 第Ⅲ部分JPAie19章JavaPersistenceIHibre 结构化文件关系数据库系 面向对象数据 O/RM更简 JPAO/RM 原 HibernateORM简 使用Hibernate文
了解会话 从SessionFactory中获会 使用Spring创建 准备关系数据 安装MySQLMySQL 安装MySQL驱 在Tomcat资 注意Maven依 小 20JPA将实体映到 使用简单实 到 目指示JPA使用实体字段的方 映射 创建和使用持久化单 创建持久化配 使用持久化 映射复杂数据类 了解JPA如何处理日期和 将大属性映射为CLOB 小 第21章在prigmwrk仓库中使用JPA 使用Spring仓库和事 使用线 SpringFramework中配持久 单 创建和使用JPA仓 注入持久化单 实现标准CRUD操 基础仓
数 创建实 使用BCrypt实体 小 22章prigDaJPA化的仓 SpringData据 使用Stock仓库接 方
仓 编写和使用SpringJPA接 重构客户支持应用程 小 rch搜索数 搜索介 rch搜索数 搜索介 使用高级条件定位对 在查询中使用 实 p p 性 在MySQL表中创全文索 仓 HibernateSearch索引任数 了解Lucene全文索 实 结合使用Hibernate和 小 24章类 JPA的相关内 转换非标准数据类 了解特性转换 在实体中内嵌 表示嵌套的类 定义实体间的关 了解一对一关 关 创建多对多关 处理其他常见的情 抽象实 集 创建编程式触发 在CRUD之后执 使用实体 简化客户支持应用程 映射附件的集 加载简单属 小
第Ⅳ部分使用rigiy第25章介绍prigty 认证的概 集成认 了解原 了解Spring基 使用SpringSecurity服 配置Spring 小 26prigcriy验用 选择并配置认证提供 目使用LDAP提供 使用OpenID进行认 remember-me认 编写自己的认证提供 小 第27章使 通 进行采用URL安 使用注解权 了解决 列 了解SpringSecurity 为实体填充
28uhREfl服 比较WebGUI和服务安 介绍 了解关键参与 起始:OAuth 标准:OAuth 演化:OAuth 使用SpringSecurity 完成客户端支持应用程 生成请求随机数和签名实现客户端服 实现随机数服 过滤 重新配置 程 自定义REST模 配置SpringOAuth客户
使用REST
使用SpringSecurity 小
客户 小 创建企业级应用程序v4JPS56JSP第7章:使用Java标 ➢➢➢➢➢第8第10章:在应用程序中使用Wbt进行交互第9章:使用过滤器改进应用程序第11第第1章JavaSE和JavaEE介绍Servlet、过滤器、器和了解WAR和EARJava间Java语言和Java平台的发展是一个漫长而的历史。从20世纪90年代中期它的发明开始,极其缓慢和原始的,但它在软件开发领域掀起了一场。起1998年底的1.2版本开始,Java技术栈被分割为以下关键部分:它是构建Java应用程序的基础。或JIT编译器)。JVM还负责管理内存,从而实现了应用程序代码的简化。图1- JavaSE和JavaEE平台演变的时间线。时间线上方的表JavaSE里程碑,时间线下方的表示JavaEE里程含了Java语言编译器、文档、与本地代码协作的工具和用于调试平台类的Java源件。它包含了JVM但不含任何JDK中的开发工具。不过JDK中确实也包含了一个JRE。Oracle和Apple此,开源社区快速地形成了OpenJDK项目,该项目将提供Java栈的开源实现。司的Java实现是首选。在Oracle收购了Sun之后,Sun和Oracle的实现变成了同一个。实现)、Rhino和Scala。企业级Java诞4 企业版(或J2EE),版本为1.2。版本号对应着当时的Java和J2SE版本,该规范包括:ServletsJDBCExtensionAPIJavaNamingandDirectoryInterface(JNDI)JavaServerPages(JSP)EnterpriseJavaBeans(EJB)JavaMessageService(JMS)JavaTransactionAPI(JTA)JavaMailAPIJavaBeansActivationFramework(JAF)J2SE中。JavaSEJavaEE发J2EE1.320019月发布,Java和J2SE1.3的发布稍晚一点,但Java/J2SE1.4发布之前。JavaAPIforXMLProcessing(JAXP)JavaServerPagesStandardTagLibrary(JSTL)J2EEConnectorArchitectureJavaAuthenticationandAuthorizationService(JAAS)1.4。该版本还代表着J2EE组件被分割成了几个更高级别的分类:(JAX-RPC)1.1、JavaAPIforXMLRegistries(JAXR)1.0:和EditionDeploymentAPI1.15的点会引起,所以开始使用5作为版本号。未再改变。JavaSE61.6,JavaSE71.7,JavaSE81.8。它名改变要比JavaSE早。Java平台企业版5或JavaEE5在2006年5月发布,大约是J2SE5.0书剩余的内容中只会使用JavaSE和JavaEE。个JavaEE版本。它包括以下修改和补充:JAXP和JMX被移到了J2SE5.0中,不再包含在JavaEE5JavaAPIforXML-basedWebServices(JAX-WS)2.0JavaArchitectureforXMLBindingJava(SAAJ)1.2以及StreamingAPIforXML(StAX)1.0被添加到了Web服务技术中。JavaPersistenceAPIJPA1.0和CommonAnnotationsAPI1.0被添加到了企业级应用程序JavaSEEE个月,距离JavaSE63年。此时,Java企业版已经变得极其庞大:SAAJ、StAX和JAF被移到了JavaSE6规范被添加到Web(6 forContainers(JASPIC)1.0。(CDI1.0、DependencyInjectionforJava1.0、BeanValidation1.0、ManagedBeans1.0和Interceptors1.1,还对它所有其他的组件做了更新。JavaEE6还代表着JavaEE该版本标志着JavaEEWebProfile都十分关键的特性,排除了一些只被少数应用程序使用的规范。对于JavaEE6来说:所有的Web服务或者管理和安全组件都不是JavaEEWebProfileConnectorArchitecture、JMS和JavaMail。就在5年的发展停滞期中,Oracle20101月收购了Sun公司JavaSE发展的买了Sun的Oracle会关闭Java。不过,事实并不是这样的。束,此时发布了JavaEE7,距离JavaEE6的发布已经过去了3年零7个月。了解的平台特JavaSE2015年或更晚——这是不可接受的选择。如,下面是一个非常复杂的java.util.Map变量的和赋值MptingMptingMp<Intgr,is<ynmap7nwHstl<tiStiMIgr成的java.util.Hashtable推断出它的类型参数。MptingMptingMpIntgr,s<ynmap=new下面这样有点讨厌的JDBC代码:onnoconnection=null;rprtmsttment=null;ulttut=null;{connection= pr//setuprsultSt=;//doomtiitresult}tSQxti{//dosothingwith}{if(rsultSt!={try}(Qxignore){}if(sttemnt!={try}(Qxignore){}if(connection!=null&&{try}(Qxignore){}}8 nconnection=tcegtnetirprtmsttemnt=onnctionprprSttemnt(..)){//setup {//doomtiithresul}}thSQExn{//doomthit}{}
//dot(yx|ouExpo{//handletheseexceptionsthesame}因为FileNotFoundException继承了IOException:try//do}t(Ix|FoFoundxpoe)//handletheseexceptionsthesame}Java7的一些其他语言特性包括字节码/整数的二进制字面量(可以将字面量1928写作和ob111_1000_1000)。另外,终于可以将字符串用作switch的参数了。JavaEE所以不在这里详细讲解。总而言之,JavaEE7中的变动有:JAXB被添加到了JavaSE7中,并且不再包含在JavaEE 9JSONProcessing1.0。CollectionsStreamAPI的模拟(将在第6章中讲解)。JAX-RS、JavaAPIforWebSockets和JavaAPIforJSONProcessingJavaSE中非常常见)的时候。例如,之前使用Runnable实例化Thread时使用的代码为:publictindSomhngnhrdStn{Threadthread=newr({vrdepublicvoidrun(){//do}}现在可以使用lambdapublictindSomhngnhrdStn{Threadthread=newThread(()->//do}法和lambda表达式赋给变量。法publictindSomhngnhrdStn{Threadthread=new}publicvoid{ //do}大和优雅的日期和时间API但希望学习JavaEE中的新特性。本书的第Ⅰ部分将讲解JavaEE应用程序服务器和Web容器(2章HTTP会话(5章过滤器(9章了解基本的Web应用程序结包,生成WAR和EAR文件。Sevet、过滤器、器和序启动、应用程序关闭、HTTP会话创建和会话销毁。结构和WAR文标准JavaEEWebWAR文件或未归档的Web应用程序进行部署。你应该识别的标准结构。没有专门的JAR文件格式,任何ZIP归档应用程序都可以创建和JAR文件。Web应用程序归档或WAR是JavaEEWeb应用程序对应的归档文件。归档的应用程序。如图1-2所示,无论是归档文件还是未归档文件,它们的结构约定都是classes被用作包的根。所有编译后的应用程序类文件和其他资源都被存储在该中。图1- 发者都会遵守这个约定,将(i18n)和本地化(L10n)文件在该 如果你记住了最简单的类路径规则,就可以区分出它们。如同JAR文件的META-INF 器需要使用的资源。例如,ApacheTomcat(在第2章将进行讲解)在该 的文件可能随着应用程序服务器或Web容器的不同而变化。不同于JAR文件的是,根级别的/META-INF并不在应用程序类路径上。不能使用两个文件——persistence.xml和orm.xml——必须在/WEB-INF/classes/META-INF中。包含在WAR文件或未归档Web应用程序 例如,在应用程序根 的文件/bar.xml将被部署在,可通过条件的资源都可以通过这种方式,除了在/WEB-INF和/META-INF 录中的文件是受到保护的,因此不能通过URL。以使用注解和JavaConfigurationAPI。来自于Web、 、能会替换String类,或者重定义Boolean.TRUE和Boolean.FALSE。在根类加载器之后是扩展类加载器,它将加载JRE安装 尝试从自己的JAR文件和 企业级应用程序归档文尽管之前已经学WAR但还有JavaEE文件中(与JARWAR使用相同的ZIP格式)
图1- 根部的/META-INF包含了归档文件,并且该中的所有文件都不在应用程序的类路径EAR文件的根中是它所包含的所有Web应用程序模块——一个模块对应一个用WAR文件中的类)。器的服务器(例如ApacheTomcat)并不支持它。因此,本书不再对EAR进行深入讲解。小级应用程序归档,以及如何通过它们控制和部署JavaEE应用程序。第第2章Web选择Web在个人计算机中安装在Tomcat liJIDEA调试使用Eclipse调试本章需要 的代 选择Web容称为Servlet容器,本书将交替使用这些术语)中。Web容器用于管理Servlet的生命周期、将请URL映射到对应的ServletHTTP用(如果不需要使用JavaEE的所有特性的话)Apacheocat了另一个开源的完整JavaEE应用服务器:Geronimo。所提供的JavaEE组件。((以获得关于ApacheTomcat的详细信息。
容2-1Tct版本和它们的Tct版本JavaEESrtWct所需最小JavaSE版––––––5–6–677*JavaEE列只表示对应的JavaEE版本;Tomcat不是应用服务器,而且并未实现JavaEE。列中的连字符表示该版本未实现特定的规范GlassFish服务器是一个开源的、也是商业的完整JavaEE应用服务器实现。它提供了JavaEE从JavaEE8开始,GlassFish将不再包含商业支持选项。对完整群集能力的支持。版3.0作为JavaEE6的参考实200912月发布——包含几个企业级特性的改进。该版本代表着GlassFish流行度的转折点,它变得非常易于管理企业级群集现,所需的最小版本是JavaSE7。((JBoss和Wy
2013年初,RedHat的JavaBeansOpenSourceSoftwareApplicationServer(JBossAS)是仅次布的应用服务器被重命名为WildFly4.2.x都是基于Tomcat5.5构建的,并且支持JavaEE1.4的特5.0引入了对JavaEE5的支持以及一个全新的Web容器,而版本5.1则包含了一些JavaEE6特性的早期实现(尽管它仍然是用的JavaSE最小版本为JavaSE7(实际上,所有JavaEE7Web容器都要求JavaSE的最小版本为JavaSE7)。((((其他容器和应用服务
2-2容器和应用服务器版服务J2EEJ2EEJ2EEJavaEEJavaEEJavaEEx:J2SEx:JavaSE8.x:JavaSE9.0.x:JavaSE7.x-10.x:JavaSE11gPS5:JavaSE8.x:JavaSE8.5.x:JavaSE*只代表Web容器;不是完整的应用服务**代表推测出的版本——OracleIBM尚未正式宣布对JavaEE7进行支本书使用omcat的原来说最重要的一点是开发者可以轻松地Tomcat。到目前为止,Tomcat比其他Web容器都 容用JavaIDE调试Tomcat。在个人计算机中安装mt在安装Tomcat到个人计算机之前,首先需要从Tomcat项 安装文件。系统,那么就需要使用非Windowszip。omcat安装为W服但也需要“Windowszip”用于从IDE中运行Tomcat。将omcat统)或非Windowszip(如果使用的是任何其他操作系统),并解压该文件。zipTomcatC:\ProgramFiles\ApacheSoftwareFoundation\Tomcat8.0中(或者操作系统中任何合适的)。例如,webapps现在应该位于C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat8.0\webapps。问。在C:\ProgramFiles中的ApacheSoftwareFoundationSecurity选项卡上,单击Edit按钮。添加自己的用户或用户组,并将完整的控制权限交付给它们。签添加到<tomcat-users>和</tomcat-users>XML之间:<usernmdn"psod=dn"agrguidingui"警告:该配置了一个管理用户,通过该用户可以登录警告:该配置了一个管理用户,通过该用户可以登录TomcatWeb管理界服务器上绝不应该使用。不过,对于在本地计算机上运试是可以的。t<paamn>olrurVpramrmvu>1<pramttm-n>olrrgtVprrmvu>1<pramt 回车键检查是否已经将JAVA_HOME环境变量设置为Java开发工具包(JDK)设置该变量,Tomcat则无法运行。的消息。这意味着Tomcat已经正确运行起来。 容在Java控制台中出现错误,那么就需要检查之前的步骤,可能还需要查询Tomcat图2-如果在控制台中看到了消息“RNIN:UnknownsourceVM1.8ignoe或者类似的自定义的JSP编译器”解决。配置自定义的JSP编译打开Tomcat的conf/web.xml文件,再次查找JspServlet编译器编译JSPtprm-n>ol/pr-prmvu>drprmtset"PT=:pooj;:h\tj;export/path/to/ant/lib/ant-在Tmt中部署和卸载应用手动将应用程序添加到 使用Tomcat如果尚未创建Web应用程序,则可以 站点第2章的示例应用程Tomcat的webapps
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45026-2024侧扫声呐海洋调查规范
- 2024版消防工程协议外施工补充协议书版B版
- 2025年度企业HSE内部审计与改进合同3篇
- 2024版短期架桥机租赁协议
- 二零二五年度高端品牌服装企业集中采购合作协议3篇
- 二零二五年度高科技园区土地承包经营合同2篇
- 2024年矿山岩石开采作业与施工责任协议版B版
- 二零二五版婚姻财产协议书明确夫妻财产分配细则3篇
- 二零二五年度智慧农业项目设备采购与农技支持合同3篇
- 632项目2024年度技术服务协议版B版
- 直升机结构与系统版
- 青春期教育-女生版青春期性教育-青春期性教育自慰课件
- 新生儿疾病诊疗规范诊疗指南诊疗常规2022版
- 儿科学 新生儿颅内出血
- YY/T 0065-2016眼科仪器裂隙灯显微镜
- 喜报可编辑11张
- 食管癌护理查房20352
- 餐饮服务投标文件
- T-CASAS 004.2-2018 4H碳化硅衬底及外延层缺陷图谱
- 城投公司的债务风险及化解方式
- 我会听 (课件)-2021-2022学年心理健康教育一年级上册
评论
0/150
提交评论