40个java目录结构的简单介绍
今天给各位分享40个java目录结构的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、JAVA项目的目录结构 一般怎么命名的?
- 2、java资源文件
- 3、java web项目 目录结构问题
- 4、java网络应用的文件目录结构
- 5、采用SSM框架的javaweb工程目录结构是怎么样
- 6、求助在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目录结构的信息别忘了在本站进行查找喔。
发布于:2022-12-04,除非注明,否则均为
原创文章,转载请注明出处。