JavaWeb高级编程(上)

好久没更新了,发一篇以前记录学习的笔记。
面向读者:已经具有丰富的Java语言和Java SE平台知识的软件开发者和软件工程师。
预掌握知识:

Internet、TCP、HTTP协议

HTML(5)

XML

Javascript或ECMAScript

CSS

SQL,MySQL

事务及其概念

IDE使用

简单命令行的执行

需要工具:

Apache Maven版本3.1.1或更新

可以执行命令行且能够读取命令行的操作系统

文本编辑器或者IDE

推荐sublime2编辑器,或者IDEA集成开发环境

支持Java SE 8的Java开发工具包

下面开始正式内容(撒花)

Java EE平台介绍

相信大家已经看过不少关于Java的介绍,所以首先略过Java发展...

平台新特性

Java SE7

添加菱形操作符(<>)。

Map<String,Map<String,Map<Integer,List<MyBean>>>> map = new Hashtable<String,Map<String,Map<Integer,List<MyBean>>>>();
可以简化为 Map<String,Map<String,Map<Integer,List<MyBean>>>> map = new Hashtable<>();

使用try-with-resource管理资源

将以前在try块或者finally块中关闭的资源,现在可以如try(resource)-catch-finally一样,放在try后的括号中,这样资源就会在隐式的finally块中自动关闭。
同时,对于try-catch-finally的另一处改进就是可以同时捕捉多个异常,条件是异常之间不能有继承关系。

Java SE8

添加lambda表达式

lambda表达式的本质是匿名函数,在定义和调用时不需要被赋予类型名或绑定到标志符。
详细介绍

基本Web应用程序结构

    大量的组件组成了Java EE Web应用程序。首先,需要自己的代码和它依赖的第三方库。然后需要部署描述符,其中包含了部署和启动应用程序的指令。还可以添加ClassLoader用于将自己的应用程序与同一台服务器上的其它Web应用隔离开。最后通过某种方式将应用程序打包,生成WAR和EAR文件。

    所有的Java EE Web应用程序服务器都支持WAR文件应用程序归档,大多数服务器还支持未归档的应用程序目录。不过它们的目录结构预定都是相同的。

    在该结构中,类文件都存储在/WEB-INF/classes中,WEB-INF目录存储了一些包含了信息和指令的文件,Java EE Web应用服务器使用它们决定如何部署和运行应用程序。classes目录被用作包的根目录。所有编译后的应用程序类文件和其它资源都被存储在该目录中。
    WAR文件包含的应用程序依赖的JAR文件都被存储在/WEB-INF/lib中。目录/WEB-INF/tags和/WEB-INF/tld分别用于存储JSP标签文件和标签库描述符。

    根级别的/META-INF目录中包含了应用程序清单文件。它可以存储特定Web容器或应用程序服务器需要使用的资源。根级别的/META-INF目录并不在应用程序类路径上。不能使用ClassLoader获得该目录中的资源。不过/WEB-INF/classes/META-INF在路径上。可以将任何希望使用的资源文件存储在该目录中,这样就可以通过ClassLoader访问这些资源。一些Java EE组件指定了某些文件存储在该目录中。

    部署描述符是用于描述Web应用程序的元数据,并为Java EE Web应用程序服务器部署和运行Web应用程序提供指令。从传统上讲,所有元数据都来自于部署描述符文件/WEB-INF/web.xml。该文件通常包含Servlet、监听器和过滤器的定义,以及HTTP会话、JSP和应用程序的配置选项。Java EE 6 中的Servlet3.0添加了使用注解和Java Configuration API配置Web应用程序的能力。它还增加了Web片段的概念--应用程序中的JAR文件可以包含Servlet、过滤器和监听器的配置,这些配置将被添加到必要的JAR文件的部署描述符文件/META-INF/web-fragment.xml中。Web片段也可以使用注解和Java Configuration API。

    在Java SE平台上,当低级别类加载器申请加载一个类时,它总是首先将该任务委托给它的父类加载器。继续向上委托直至根类加载器确认成功。
    在Java EE Web应用服务器中,每个Web应用程序都被分配了一个自由的相互隔离的类加载器,它们都继承自公共的服务器加载器。通过隔离不同的应用程序,它们不能访问互相的类。Web应用程序加载器通常会在自己无法加载某个类的时候,请求它的父类加载器帮助加载。通过这种方式,类加载任务会在最后而不是首先委托给它的父类,Web应用程序中的类和库会被优先使用,而不是服务器提供的版本优先使用。

每个应用服务器都包含了一个Web容器,用于管理Servlet的生命周期、将请求URL映射到对应的Servlet代码、接受和响应HTTP请求以及管理过滤器。
Apache Tomcat是目前最常见和最流行的Web容器。
Tomcat的主要优点是占用内存小、配置简单以及长期的社区参与。同时,Tomcat可以完美地完成许多任务,但是不能轻松地部署复杂的企业级应用程序。
Tomcat提供了Servlet、Java Server Pages(JSP)、Java Unified Expression Language(EL)和WebSocket规范。
Tomcat详细信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxgps.html