40个java目录结构的简单介绍

博主:adminadmin 2022-12-04 16:18:10 71

今天给各位分享40个java目录结构的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA项目的目录结构 一般怎么命名的?

如果是公司就是com.公司名.目录

如果是组织就是org.组织名.目录

至于目录

这个就根据项目来了

模型是model

工具就是util

等等很多 自己多做做就规范了

切记不要用拼音或者就在src下 项目大了 层次很重要的

java资源文件

(一)用Class类加载资源文件

通过调用Class类的getResourceAsStream方法来加载资源文件:

public InputStream getResourceAsStream(String pathToConfigFile);

该方法接收一个String类型的参数(pathToConfigFile)来表示资源文件的地址,如果加载成功,则返回该资源文件的输入流(InputStream),如果失败,则返回null。重要的是,在传入pathToConfigFile参数时,有两种方式,第一种方式为绝对定位方式,即pathToConfigFile以"/"开头,此时Java以classpath为根目录,直接加上pathToConfigFile来搜索资源文件。第二种方式为相对定位方式,即pathToConfigFile不以"/"开头,此时资源文件的全路径应该为:调用getResourceAsStream方法的类的package路径加上pathToConfigFile。(在将package转为目录时将"."变成"/")

举个例子,在IntelliJ Idea中创建一个java工程,目录结构如下:

该工程里有两个resources文件夹,一个位于davenkin文件夹下,一个直接位于src文件夹下。第一个resources文件夹下有一个config.properties文件,其内容为:

name = ConfigUnderDavenkin

 第二个resources文件夹下也有一个config.properties文件,其内容为:

name = ConfigUnderSrc

java web项目 目录结构问题

Eclipse和myEclipse目录结构有区别,MyEclipse无法导入Eclipse的项目,而Eclipse导入myEclipse项目会识别为JAVA Project而不是Web。在不借助工具的前提下最简单的方法就是新建项目后,目录之间复制粘贴。

java网络应用的文件目录结构

如果你用TOMCAT的话,那下面的信息很适合你:

一、TOMCAT的目录结构

/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件

/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml

/doc:存放Tomcat文档

/server:包含三个子目录:classes、lib和webapps

/server/lib:存放Tomcat服务器所需的各种JAR文件

/server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用

/common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件

/shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)

/logs:存放Tomcat执行时的日志文件

/src:存放Tomcat的源代码

/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录

/work:存放JSP编译后产生的class文件

二、WEB应用的目录结构:假设在$CATALINA_HOME/webapps下有helloapp的web应用

/helloapp:Web应用的根目录,所有的jsp文件和html文件都在此目录下

/helloapp/WEB_INF:存放该web应用发布时的描述文件web.xml

/helloapp/WEB_INF/class:存放各种class文件,Servlet文件也存放于此目录下

/helloapp/WEB_INF/lib:存放各钟Web应用所需要的jar文件。比如可以存放JDBC驱动程序的JAR文件

三、Tomcat加载类和资源的顺序为(以helloapp应用为例):

1、helloapp (/webapps/helloapp/Web-INF/下的classes,lib子目录中*.calss及*.jar,仅helloapp可以加载)

2、Bootstrap ($JAVA_HOME/jre/lib/ext/*.jar)

3、System ($CLASSPATH/*.class和CLASSPATH中指定的jar)

4、Common ($CATALINA_HOME/common/下的classes,lib,endores子目录中*.class及*.jar)

5、Catalina ($CATALINA_HOME/server/下的classes,lib子目录中*.calss及*.jar,仅Tomcat可以加载)

6、Shared ($CATALINA_HOME/shared/下的classes,lib子目录中*.calss及*.jar,仅所有Web应用可以加载)

四、$CATALINA_HOME/conf/server.xml配置简介

1、Server元素属性

port:指定一个端口,这个端口负责监听关闭tomcat的请求

shutdown:指定向端口发送的命令字符串,通常是“SHUTDOWN”

2、Service元素属性

name:指定service的名字,通常是”Catalina”

3、Connector/元素属性(表示客户端和service之间的连接):

port:指定服务器端要创建的端口号,并使用这个断口监听来自客户端的请求

minProcessors(考察是否有此属性):服务器端启动时创建的处理请求的线程数

maxProcessors(考察是否有此属性):最大可以创建的处理请求的线程数

maxThreads:服务器创建的最大线程数

minSpareThreads:最小剩余线程数

maxSpareThreads:最大剩余线程数

enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其IP地址

redirectPort:指定当服务器正在处理HTTP请求时收到了一个SSL传输请求后重定向的端口号

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过的请求将不予处理

connectionTimeout:指定超时的时间数(以毫秒为单位)

disableUploadTimeout:不明

debug:不明

protocol:不明

4、Engine元素属性(指定service中的请求处理主机,接收和处理来自Connector的请求)

name:指定Engine的名字,通常是”Catalina”

defaultHost:指定默认的处理请求的主机名,至少与某个host元素的name属性值是相同的

5、Context/元素属性(表示一个web应用程序)

docBase:指定此Web应用的绝对或相对路径,也可以为WAR文件的路径

path:表示此Web应用程序的url的入口,如为“/hello“,则请求的URL为

reloadable:如果为true,则Tomcat在运行时会自动监视Web应用的/WEB-INF/lib和/WEB-INF/classes下文件的改动,自动装载新应用,使我们可以在不重启Tomcat的情况下更新Web应用

6、Host元素属性(表示一个虚拟主机)

name:指定虚拟主机名字

debug:指定日志级别

appBase:存放Web应用程序的基本目录,可以是绝对路径或相对于$CATALINA_HOME的目录,默认是$CATALINA_HOME/webapps

unpackWARs:如果为true,则tomcat会自动将WAR文件解压后运行,否则不解压而直接从WAR文件中运行应用程序

autoDeploy:如果为true,表示Tomcat启动时会自动发布appBase目录下所有的Web应用(包括新加入的Web应用)

deployOnStarup:如果此项为true,表示Tomcat服务器启动时会自动发布appBase目录下所有Web应用。如果Web应用在server.xml中没有相应的Context元素,则将采用默认的Context配置。deployOnStarup的默认设置是true

alias:指定虚拟主机的别名,可以指定多个别名

xmlValidation:不明

xmlNamespaceAware:不明

7、Logger/元素属性(表示日志,调试和错误信息)

className:指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口

prefix:指定log文件名的前缀(文件名)

suffix:指定log文件名的后缀(扩展名)

timestamp:如果为true,则log文件名中会加入日期时间,如下例:localhost_log.2006-10-04.txt

directory:指定log文件存放的目录

8、Realm/元素属性(表示存放用户名,密码及role的数据库)

className:指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口

resourceName:不明

9、Valve/元素属性(功能与Logger相似,其prefix和suffix属性解释和Logger 中的一样)

className:指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息

directory:指定log文件存放的位置

pattern:有两个值,common方式记录远程主机名或ip地址、用户名、日期、第一行请求的字符串、HTTP响应代码、发送的字节数。combined方式比common方式记录的值还多

采用SSM框架的javaweb工程目录结构是怎么样

借鉴github某项目的目录

├── SSM-API // common API

│ ├── src/main

│ ├── ├──java/com/crossoverJie // specific code。

│ ├── ├──resources

├── SSM-BOOT // Available for internal use of dubbo dependencies

│ ├── ├──resources/spring // dubbo consumer configuration

├── SSM-SERVICE // The service implementation of the dubbo application

│ ├── src/main

│ ├── ├──java/com/crossoverJie/api // specific code

│ ├── ├──├──controller // Heartbeat detection interface

│ ├── ├──├──dubbo // Dubbo related code

│ ├── ├──├──├──dao // dao package

│ ├── ├──├──├──pojo // pojo package

│ ├── ├──├──├──service // service package

│ ├── ├──├──├──util // Toolkit

│ ├── ├──├──impl // implement dubbo API

│ ├── ├──resources // configuration file

│ ├── ├──├──mapping // *.mapper configuration file

│ ├── ├──├──spring // Spring related configuration file

├── SSM-WEB // web application

│ ├── src/main

│ ├── ├──java/com/crossoverJie // specific code

│ ├── ├──├──controller // controller package

│ ├── ├──├──cxf // CXF related code

│ ├── ├──├──dao // dao package

│ ├── ├──├──enums // enum package

│ ├── ├──├──intercept // Interceptor

│ ├── ├──├──lucene // Lucene related code

│ ├── ├──├──pojo // pojo package

│ ├── ├──├──req // request package

│ ├── ├──├──res // response package

│ ├── ├──├──service // service pachage

│ ├── ├──├──shiro // shiro related code

│ ├── ├──├──util // Toolkit

│ ├── ├──├──vo // vo package

│ ├── ├──resources

│ ├── ├──├──mapping // *.mapper configuration file

│ ├── ├──webapp // front code

├── doc

│ ├──lucene // lucene related code

│ ├──sql // sql scripts

├── .gitignore // gitignore

├── pom.xml // parent pom

├── LICENSE

├── README.md

求助在java里实现树形目录

给你一个读取目录结构,生成字符串的程序参考一下吧。

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import java.io.FileFilter;

import java.util.HashMap;

import java.util.Map;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.SwingUtilities;

import javax.swing.UIManager;

public class PathTree extends JPanel {

private static final long serialVersionUID = 1L;

private JButton stopButton = new JButton("停止扫描");

private JButton browseButton = new JButton("选择文件夹");

private JTextArea pathsTextArea = new JTextArea();

private JCheckBox showHiddenFilesCheckbox = new JCheckBox("显示隐藏文件", false);

private MapInteger, String pathIndexes = new HashMapInteger, String();

private FileFilter docFilter = new DocFilter(); // 文档过滤器

private FileFilter dirFilter = new DirFilter(); // 文件夹过滤器

private boolean stopped = false; // 是否停止扫描的标志

public PathTree() {

initGui();

}

// 初始化界面

private void initGui() {

this.setLayout(new BorderLayout());

JPanel buttonsPanel = new JPanel();

buttonsPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.GRAY));

buttonsPanel.add(showHiddenFilesCheckbox);

buttonsPanel.add(browseButton);

buttonsPanel.add(stopButton);

this.add(buttonsPanel, BorderLayout.NORTH);

JScrollPane scroller = new JScrollPane(pathsTextArea);

scroller.setBorder(null);

this.add(scroller, BorderLayout.CENTER);

browseButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// 选择文件夹

final JFileChooser chooser = new JFileChooser();

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

int result = chooser.showOpenDialog(PathTree.this);

if (result == JFileChooser.APPROVE_OPTION) {

Thread t = new Thread(new Runnable() {

@Override

public void run() {

File dir = chooser.getSelectedFile();

pathsTextArea.setText("");

stopped = false;

walkTree(dir, 0);

}

});

t.start();

}

}

});

stopButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

stopped = true;

}

});

}

// 递归遍历目录树

private void walkTree(File dir, int level) {

// 1. current dir path

// 2. docs path that located in this dir

// 3. sub dirs path

if (stopped) { return; }

// 如果不显示隐藏文件,则返回

if (dir.isHidden() !showHiddenFilesCheckbox.isSelected()) { return; }

final StringBuilder pathBuffer = new StringBuilder(1024);

// 访问当前目录

pathBuffer.append(createPath(dir, level));

// 访问文档

for (File doc : dir.listFiles(docFilter)) {

if (doc.isHidden() !showHiddenFilesCheckbox.isSelected()) {

continue;

}

pathBuffer.append(createPath(doc, level + 1));

}

// 把当前目录下的文件更新到text area中

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

pathsTextArea.append(pathBuffer.toString());

}

});

// 递归遍历子目录

for (File subDir : dir.listFiles(dirFilter)) {

walkTree(subDir, level + 1);

}

}

// 创建文件的路径

public String createPath(File file, int level) {

StringBuilder pathBuffer = new StringBuilder(128);

pathBuffer.append(getPathIndex(level)).append(file.getName()).append("\n");

return pathBuffer.toString();

}

// 创建目录的缩进

private String getPathIndex(int level) {

// 如果不存在,则创建

if (pathIndexes.get(level) == null) {

StringBuilder indexBuffer = new StringBuilder(128);

for (int i = 0; i level; ++i) {

indexBuffer.append("| ");

}

indexBuffer.append("|----");

pathIndexes.put(Integer.valueOf(level), indexBuffer.toString());

return indexBuffer.toString();

} else {

return pathIndexes.get(level);

}

}

// 创建主窗口

private static void createGUIAndShow() {

JFrame frame = new JFrame("目录结构树");

frame.setContentPane(new PathTree());

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dimension ss = Toolkit.getDefaultToolkit().getScreenSize();

int w = 600;

int h = 700;

int x = (ss.width - w) / 2;

int y = (ss.height - h) / 2 - 40;

x = x 0 ? x : 0;

y = y 0 ? y : 0;

frame.setBounds(x, y, w, h);

frame.setVisible(true);

}

public static void main(String[] args) {

try {

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

//UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel");

} catch (Exception e) {

e.printStackTrace();

}

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

createGUIAndShow();

}

});

}

}

class DocFilter implements FileFilter {

@Override

public boolean accept(File file) {

return file.isFile();

}

}

class DirFilter implements FileFilter {

@Override

public boolean accept(File file) {

return file.isDirectory();

}

}

这是生成的目录树结构:

|----Desktop

| |----3D数学基础_图形与游戏开发.pdf

| |----Hibernate与IBatis的优缺点及可行性分析2.txt

| |----Hibernate和iBatis比较.txt

| |----深入理解O:R Mapping - Hibernate - Java - JavaEye论坛.webarchive

| |----地下管线安全管理系统

| | |----创造三大价值,让收益更加显著1_resize.jpg

| | |----创造三大价值,让收益更加显著_resize.jpg

| | |----永安集成管理系统_resize.jpg

| | |----系统实现流程_resize.jpg

| | |----自主创新,于创新中超越_resize.jpg

| | |----行业领先功能,解决四大问题_resize.jpg

| | |----解决地下管线行业难题_resize.jpg

40个java目录结构的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、40个java目录结构的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-04,除非注明,否则均为首码项目网原创文章,转载请注明出处。