Java Web工程结构_项目结构
文章目录
- Eclipse 的 Java Web 工程目录结构
- IDE 的目录结构截图
- 本地的工作空间(Workspace)中的目录结构
- 目录说明
- Eclipse 的 Java 工程目录结构
- IDE 的目录结构截图
- 本地的工作空间中的工程目录
- MyEclipse 的 Java Web 工程目录结构
- IDE 目录结构截图
- 本地的工作空间的工程目录
- IntelliJ IDEA 的 Java Web 工程目录结构
- IDE 工程目录结构截图
- 本地的工作空间的工程目录
Eclipse 的 Java Web 工程目录结构
IDE 的目录结构截图
本地的工作空间(Workspace)中的目录结构
目录说明
Apache Tomcat v7.0: 是指这个项目所依赖的服务器(Tomcat)的目录
JRE System Library: 指 Java SE 的常用库文件集合,也就是 jar 包,建立普通的 Java 项目均会使用到,如下图所示:
Web App Libraries: 是自己导入的项目依赖 jar 包,Web App Libraries 下的所有 jar 包都可以在 ProjectName\WebContent\WEB-INF\lib
中找到。如果你直接将一个 jar 包放在WEB-INF/lib目录下,再刷新一下,会自动编译到 Web App Library 中。
Referenced Libraries: 是编译环境下使用的 jar 包, 所谓编译环境下使用的 jar 包, 就是说你在 Eclipse 中进行源文件的编写的时候, 所需要引用到的类都从 Referenced Libraries 这个集合中的 jar 包中拿。这里导入和配置 jar 包,都是为了让 web 工程能够在 Eclipse 开发环境可以正常编译,不报错而已。
src: 存放源码文件(.java 文件)
build: 存放源码文件编译后的字节码文件,实际会存储在 build/classes 目录下(.class 文件)
WebContent: 存放 JSP、JS、CSS、XML、图片等文件,这些文件都需要部署到服务器上,是项目访问的默认根路径,也是工程的发布目录,发布时会把该目录发布到 tomcat 的 webapps 中
.settings: 该目录下的文件比较多和杂,各种后缀名的都可以见到,绝大多数是文本文件,以 properties 文件(多数以.prefs为后缀名) 和 xml 文件为主, 点击此处查看更多
.classpath: 描述了一个 Eclipse 项目,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<!-- 含义:src/main/java属于源码,编译后放到target/classes目录下 -->
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<!-- 代表了配置是从POM.xml里来的,受maven管理,非maven项目可以去掉这个 -->
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<!-- 这里的including代表了目录下所有.java文件才会被处理,其他文件一概忽略,不会出现在target/test-classes目录下 -->
<classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<!-- 这里代表使用标准的JavaSE-1.7 JDK,相比来说如果用default和直接写当前系统中安装的JDK是不推荐的 -->
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<!-- 代表了Maven中的dependencies也都放到classpath里 -->
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<!-- web工程中把依赖的jar都放到输出的webapp里/WEB-INF/lib下面 -->
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<!-- -->
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache-Tomcat v7.0">
<attributes>
<attribute name="owner.project.facets" value="jst.web"/>
</attributes>
</classpathentry>
<!-- 统一的输出为target/classes -->
<classpathentry kind="output" path="target/classes"/>
</classpath>
.project: 描述了一个 Eclipse 项目,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<!-- name里的内容代表项目名字,对应了Eclipse项目的名称,不是Maven的finalName -->
<name>demo</name>
<!-- 项目的注释 -->
<comment></comment>
<!-- 引用的项目的名字 -->
<projects>
</projects>
<!-- 有序的列表,定义了一系列的构建命令(buildCommand) -->
<buildSpec>
<buildCommand>
<!-- 项目构建命令的名字 -->
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<!-- 构建命令初始化时需要传递的参数(一般看到的都是空的) -->
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<!-- 项目中用到的一些特性的列表 -->
<natures>
<!-- 每一个特性的的名字 -->
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>
</projectDescription>
META-INF: 存放工程自身相关的一些信息,元文件信息,通常由开发工具和环境自动生成,尽量不要自己手动放置文件到目录
MANIFEST.MF: 配置清单文件
WEB-INF: 此目录是一个专用区域, 容器不能把此目录中的内容直接提供给用户(即这个目录下的文件不能被客户端直接访问,只有服务端才能访问),这个目录下的文件只供容器使用,里面包含用户无法直接下载的资源。Web 容器要求在应用程序中必须有 WEB-INF 目录。WEB-INF 中包含着发布描述符(web.xml 文件),一个 classes 目录和一个 lib 目录,以及其它内容
如果客户端想访问 WEB-INF 中的文件,必须通过 web.xml 文件,对要访问的文件进行相应的映射才能进行访问。
放在 Web 根目录下的资源(html、图片等),客户端可以通过 URL 地址直接访问。
web.xml: web 工程的配置文件,例如可以配置:welcome页面,filter,listener,servlet,servlet-mapping,启动加载级别等。每一个 xml 文件都有定义格式规范的 schema 文件,web.xml 的模式文件是由Sun 公司定义的,每个 web.xml 文件的根元素为 中,必须标明这个 web.xml 使用的是哪个模式文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
</web-app>
WEB-INF/classes: 用于存放字节码文件(.class 文件)。Eclipse 中 classes 目录默认是在 build 目录下,部署到服务器时,则会把 classes 放在 WEB-INF 目录下
WEB-INF/lib: 该目录中的 jar 包是运行时环境下使用的 jar 包, 所谓运行时环境下使用的 jar 包,就是说你在运行你的项目的时候所需要使用的 jar 包的集合。
common/js/css/images: 这些都是自定义的目录,用来分类管理一些共用的或者程序引用到的相关文件
Eclipse 的 Java 工程目录结构
IDE 的目录结构截图
本地的工作空间中的工程目录
bin: 目录是工程输出路径,存放了编译生成的 .class 文件。用 Eclipse 进行打包时根目录就是bin
src: 目录为源码文件夹,存放的是 .Java 文件
MyEclipse 的 Java Web 工程目录结构
IDE 目录结构截图
本地的工作空间的工程目录
IntelliJ IDEA 的 Java Web 工程目录结构
这里展示的是 IntelliJ IDEA for Mac 版本的工程目录结构
IDE 工程目录结构截图
略
本地的工作空间的工程目录
略
qq_17755303: copy /b 7zS.sfx + config.txt + archive.7z archive.exe 来个大佬解释一下windows命令行 copy不动怎能么办?
二两cpp: 求教一下,没看懂
何浩钧: 这里写错了吧
何浩钧: 说明: 第 1 次扫码,获取变量 myfile 的值进行替换,结果就是:eval echo cat text.txt; 第 2 次扫码,就是按 eval 后面的参数本身的含义来运行,发现 2 个命令:echo 和 cat,于是先执行 cat 得到结果:hello shell world!,再执行命令 echo 输出后面的内容到标准输出,结果就是:hello shell world!。
GuanXingZhe1017: 国内的第一个已经不能用了