一、目录结构的解说
1.Java的技术规范(可跳过)
在说目录规范之前,先说一下技术规范。至于为什么先说,只是觉得J2EE是有规范的。具体内容可参见JavaEE的十三种技术规范这篇博客(Java EE 7有15种)以下三条是其中的摘录。
1.JDBC(Java Database Connectivity)
用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
2.JNDI(Java Name and Directory Interface)
Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。
3.EJB(Enterprise Javabean)
EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序。EJB是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
4. RMI(Remote Method Invoke)
RMI 指的是远程方法调用 。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。
5. Java IDL/CORBA
Java接口定义语言/公用对象请求代理程序体系结构
6. JSP(Java Server Pages)
JSP是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的。
7. Servlet
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
8.XML(Extensible Markup Language)
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
9. JMS(Java Message Service)
JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
10. JTA(java transaction Architecture)
Java事务API。允许应用程序执行分布式事务处理——在两个或多个网络计算机资源*问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。
个人理解:JTA定义了一个标准的API,应用可以通过它来访问事务监控器。JTA事务比JDBC事务更强大。一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接。
11. JTS(java transaction Service API)
JTS是CORBA OTS事务监控器的一个基本实现。JTS指定了一个事务管理器的实现(Transaction Manager),这个管理器在一个高级别上支持Java事务API(JTA)规范,并且在一个低级别上实现了OMG OTS规范的Java映射。一个JTS事务管理器为应用服务器、资源管理器、standalone应用和通信资源管理器提供事务服务。
12. JavaMail
JavaMail是一个用来访问邮件服务器的API。JavaMail API提供了一套抽象类来模型化一个邮件系统。支持SMTP和IMAP服务器。
13. JAF(JavaBean Activation FrameWork)
JAF是一个专用的数据处理框架,它用于封装数据,并为应用程序提供访问和操作数据的接口。JAF的主要作用在于让java应用程序知道如何对一个数据源进行查看、编辑和打印等操作。
Mail API 的所有版本都需要 JavaBeans Activation Framework 来支持任意数据块的输入及相应处理。功能似乎不多,但目前许多浏览器和邮件工具中都能找到这种基本的 MIME 型支持。activation.jar 文件就是JAF的框架jar包。
2. 目录规范说明
目录规范就是Java的程序为什么要组织成这个样子。必须有什么样的文件,哪些文件起到什么样的作用。
(J2EE规范要求java web项目要满足基本的结构)
按照 Java EE
规范的规定,一个典型的Web
应用程序有四个部分:
- 公开目录 (web 程序的根目录)
- WEB-INF/web.xml 文件,发布描述符(必选)
- WEB-INF/classes 目录,编译后的Java 类文件(可选)
- WEB-INF/lib 目录,Java 类库文件(*.jar)(可选)
1. 首先Web 应用的根目录下必须要有一个WEB-INF目录,WEB-INF 下有一个web.xml ,可以有classes和lib目录。
2. web.xml 文件是对整个web程序的配置文件,包括Servlet、监听器和过滤器的配置。
3. classes 目录存放程序需要的类文件,例如帮助类、JavaBeans和Servlet编译后的class文件。---存的是classes 文件
4.lib目录存放程序需要的类库,或是servlet等classes文件打包的JAR文件。----存的是JAR文件
*公开目录存放所有可以被用户的访问的资源, 包括 .html, .jsp, .gif, .jpg, .css, .js, .swf等等。
* WEB-INF 目录是用户无法直接访问的目录,在这个目录下也会保存其他的配置文件。为了安全,还可一把JSP 文件和其他资源文件也保存成WEB-INF及其子目录下。在这种情况下只能使用不在WEB-INF 目录的JSP或Servlet使用的RequestDispatcher的forward()方法调用这些文件。
* 关于文件的可有可无:如果程序中只有JSP和其他的资源文件,也可以没有web.xml 文件,但是如果有Servlet等的配置信息,就一定要有web.xml文件。class和lib目录可选,如果不需要类文件和JAR文件,也可以没有classes和lib目录。 比如在myEclipse里新建一个web工程,公开目录和web.xml 是存在的,而classes 和lib目录或其他的目录得自己建。
以上内容大多来自于 张利国和刘伟老师写的《Java Web 开发和实践》,里面的知识真的是深入浅出,让人明白的很到位。以后提到就会以伟叔代替吧。
最后再摘一句伟叔的话:
“一个java 应用就是按照javaEE 的规范,使用一定的目录结构组织web资源,如JSP,Servlet,HTML和图片文件。并且需要一个web.xml 文件作为当前web应用的部署描述文件(deployment descriptor)。”
“Web 服务器会根据请求文件.jsp” 扩展名知道浏览器请求的是一个jsp文件;Web服务器把这个请求传递给web 容器,web容器会吧请求的jsp文件转化成Servlet的源文件,同时对源文件编译,生成转化后的Servlet的class文件。”
二、用IDE 创建一个web 程序并运行
1. 新建->WEb project
注意的地方是Context root URL, 当运行整个程序的时候就是调用这个默认链接。
2.文件新建完成的结构:
刚开始没有classes文件,编译过后会生成这个目录因为这个程序又生成的文件需要放在在里面了。
3. 部署一下
选中工程(project)然后再点击这个按钮
选择一个服务器:
再点击运行:结果
之所以会运行但是什么都几乎没干,就是因为myEclipse默认生成一个简单的index.jsp页面,也在web.xml 配置好了 :
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
三、不用IDE部署运行已经开发好的程序完整步骤
1. 安装JDK (上面的当然也需要)。
2. 安装服务器(如tomcat)。
3. 安装数据库,并附加数据库(上面的小例子没连数据库所以不需要)。
4. 复制源程序到tomcat的安装目录下的webapp。也可能是打包成
War包,方便部署
5.在浏览器中输入http://localhost:8080/具体目录 运行程序
* 其实可以看出来用IDE部署应用程序,虽然只是点击了一个按钮,其实是把workspace里的程序拷贝到了tomcat服务器的运行路径webapp下了 是不?
*这篇更多的是写给过去的自己吧,虽然好多都借鉴前辈的内容,链接和出处都已标注,但还是选择了原创,伟海涵,网友海涵。内容浅显简单,只为写给曾经的我。