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 工程目录结构截图

本地的工作空间的工程目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一天发多少短信会封号_枸杞一天吃多少?吃多了会怎样?黑枸杞红枸杞哪个好?...

●枸杞一天吃多少&#xff1f;其实枸杞作为一种滋补品&#xff0c;不适合过多的使用&#xff0c;因为那样反而会造成反作用和不良影响&#xff0c;健康的成年人每天吃20克左右就合适了&#xff0c;这样对一些疾病的治疗&#xff0c;才可以发挥更好的效果。如果是用枸杞子泡水喝…

c语言线程传int值,如何用C语言实现多线程

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Windows操作系统&#xff0c;C语言实现多线程&#xff1a;#include #include DWORD APIENTRY ThreadOne ( LPVOID threadArg ){printf ( "线程开始啦&#xff0c;参数是&#xff1a;%s\n" , (char *)threadArg );return …

aws集群重启_在AWS中设置Cassandra集群

aws集群重启Apache Cassandra是一个NoSQL数据库&#xff0c;它使用一致的哈希机制可以轻松进行水平扩展。 七年前&#xff0c;我尝试了它&#xff0c;并决定不将其用于我的附带项目&#xff0c;因为它太新了。 现在情况有所不同&#xff0c;Cassandra早已建立起来&#xff0c;背…

IntelliJ IDEA for Mac 如何将普通 Java 项目变为 Web 项目

点击菜单栏 File --> Project Structure 在弹出的窗口中点击选择左侧的 Facets&#xff0c;接着点击右边的 &#xff0c;弹出的菜单中选择 web 在弹出的 『Choose Module』窗口中选择要转为 web 的项目&#xff08;模块&#xff09;&#xff0c;然后点击 OK 选择好模块后…

python flagin flagout_Python 进阶之路 (十) 再立Flag, 社区最全的itertools深度解析(中)...

前情回顾大家好&#xff0c;我又回来了。今天我会继续和大家分享itertools这个神奇的自带库&#xff0c;首先&#xff0c;让我们回顾一下上一期结尾的时候我们讲到的3个方法&#xff1a;combinations()combinations_with_replacement()permutations()让我们对这3个在排列组合中…

android 蓝牙耳机 sco,java – Android:通过Sco蓝牙耳机播放声音

在过去的几天里,我一直试图从我的Android手机上播放我的sco蓝牙耳机上的任何声音.我这个项目的最终目标是最终制作一个车库门开启器,但首先我需要能够通过耳机播放声音.这是我正在使用的当前代码的基础&#xff1a;ManifestCodeaudioManager (AudioManager) getSystemService(…

neo4j 连接超时_Neo4j:遍历查询超时

neo4j 连接超时在过去的几周中&#xff0c;我一直在花一些业余时间来创建一个应用程序&#xff0c;该应用程序从Open Roads数据生成运行路线-当然&#xff0c;已转换并导入了Neo4j&#xff01; 我创建了一个用户定义的过程&#xff0c;该过程结合了几个最短路径查询&#xff0…

MacBook 如何强制删除『无法正常卸载』的应用程序

文章目录第一步&#xff1a;点击电脑屏幕左上角的 图标&#xff0c;再点击「关于本机」第二步&#xff1a;点击「储存空间」选项卡&#xff0c;接着点击「管理」第三步&#xff1a;选择左侧边栏的「应用程序」&#xff0c;然后在右侧的程序列表中选择要“删除”的程序&#x…

slot多作用域 vue_vue 深度长文之slot 篇

今天我们将分析我们经常使用的 vue 功能 slot 是如何设计和实现的&#xff0c;本文将围绕 普通插槽 和 作用域插槽 以及 vue 2.6.x 版本的 v-slot 展开对该话题的讨论。当然还不懂用法的同学建议官网先看看相关 API 先。接下来&#xff0c;我们直接进入正文吧普通插槽首先我们看…

android 扫描照片功能,Android自定义View- 雷达扫描图

首先来看看效果图&#xff1a;CSDN博客地址这里写图片描述这里我使用了两种实现方式&#xff1a;继承 view 实现。继承 surfaceview 实现。为什么会有两种实现方式呢&#xff1f;主要是因为我在继续加入一些自定义功能的时候&#xff0c;如果是继承 view &#xff0c;出现了卡顿…

渴望 英语_渴望订阅– RxJava常见问题解答

渴望 英语在教学和指导RxJava以及撰写本书之后 &#xff0c;我注意到某些领域特别有问题。 我决定发布一些简短的提示&#xff0c;以解决最常见的陷阱。 这是第一部分。 Observable和Flowable本质上是惰性的。 这意味着无论您在Flowable放置多长时间的逻辑&#xff0c;只有当有…

SmartSVN for Mac 使用说明

文章目录连接 SVN 服务器签出&#xff08;Check Out&#xff09;导出&#xff08;Export&#xff09;打开工作副本&#xff08;Open Working Copy&#xff09;打开和管理项目移除工作副本&#xff08;Remove Working Copy&#xff09;项目及工作副本目录导航窗口查看和配置被忽…

bldc 原理 方波控制_【百问百答】ST 电机控制实战问答合辑 | 连载之一

点击下方链接可以直接观看电机直播及直播答疑电堂​wx18257eb0e8c82435.h5.xiaoe-tech.com电堂​wx18257eb0e8c82435.h5.xiaoe-tech.com本次实战问答只讨论同步电机&#xff0c;不对步进电机做特别的讨论&#xff0c;希望有助于大家进行电机开发或者是电机应用。Q1&#xff1a;…

android动画编辑软件,ALM视频动画编辑

ALM视频动画编辑app手机端中最为专业,强大的视频编辑工具,丰富的功能堪比pc级别,并且实用流畅不卡顿,操作简单明了,上手容易,视频效果出色,更多丰富素材内容使用&#xff01;下载ALM视频动画编辑app开始体验吧&#xff01;ALM视频动画编辑介绍ALM视频动画编辑神器为你提供非常高…

openhub_介绍OpenHub框架

openhub本文介绍OpenHub框架 -基于Apache Camel的新的开源集成解决方案。 本文回答了一些问题&#xff0c;为什么您应该关心另一个集成框架&#xff0c;强弱属性以及如何使用OpenHub启动新项目。 OpenHub框架是Apache Camel&#xff0c;但经过改进…… 当然&#xff0c;您只能…

Oracle 数据库的替代变量问题(即 set define off/on 的用法)

在 SQL*Plus 中默认的 & 表示替代变量&#xff0c;也就是说&#xff0c;只要在命令中出现该符号&#xff0c;SQL*Plus 就会要你输入替代值。这就意味着你无法将一个含有该符号的字符串输入数据库或赋给变量&#xff0c;如字符串 SQL&Plus 系统会理解为以 SQL 打头的字符…

console react 去除_vue或react项目生产环境去掉console.log的操作

在开发环境写了很多console.log/info/debug,在生产环境需要去掉这些console。如果手动删除未免也太累了&#xff0c;再说以后想再开发还得重新写console。事实上webpack提供了删除console的插件&#xff0c;在vue-cli3里面是这样用的&#xff1a;首先安装terser-webpack-plugin…

mfc 弹簧_弹簧和线程:事务

mfc 弹簧为了能够在我们的线程中使用事务&#xff0c;我们需要了解事务如何在spring中工作。 spring中的事务信息存储在ThreadLocal变量中。 因此&#xff0c;这些变量特定于单个线程上正在进行的事务。 当涉及由单个线程运行的动作时&#xff0c;事务将在分层调用的Spring组件…

MacBook 如何通过命令终端进入 U 盘内的目录

U 盘通常是在目录 /Volumes 下&#xff0c;输入命令 cd /Volumes/U 盘名称&#xff0c;如下&#xff1a; liaowenxiongdeMacBook-Air:/ root# cd /Volumes/大白菜U盘 liaowenxiongdeMacBook-Air:大白菜U盘 root# ls .Trashes DBC System Volume Information进入目录后&am…

Html调用窗口,等待HTML调用window.print()之前写窗口

我有这样的尝试是把一些内容到一个弹出窗口&#xff0c;然后JavaScript代码连接到打印&#xff1a;等待HTML调用window.print()之前写窗口$(".print_friendly_popup").click(function() {var target $(this).data(print-target);var left (screen.width/2)-(500/2)…