-
java配置文件读取和项目路径的多种获取方式
2013-02-21 20:33:10Java代码 一 相对路径的获得 说明:相对路径(即不写明时候到底相对谁)均可通过以下...上述相对路径中,java项目中的文件是相对于项目的根目录 web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对- 一 相对路径的获得
- 说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)
- String relativelyPath=System.getProperty("user.dir");
- 上述相对路径中,java项目中的文件是相对于项目的根目录
- web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomcat安装目录\bin)
- 二 类加载目录的获得(即当运行时某一类时获得其装载目录)
- 1.1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)
- InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
- (test.txt文件的路径为 项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下)
- 上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可
- 1.2)通用方法二 (此方法和1.1中的方法类似,不同的是此方法必须以'/'开头,参考http://riddickbryant.iteye.com/blog/436693)
- InputStream is=Test1.class.getResourceAsStream("/test.txt");
- (test.txt文件的路径为 项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下)
- 三 web项目根目录的获得(发布之后)
- 1 从servlet出发
- 可建立一个servlet在其的init方法中写入如下语句
- ServletContext s1=this.getServletContext();
- String temp=s1.getRealPath("/"); (关键)
- 结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext为项目名字)
- 如果是调用了s1.getRealPath("")则输出D:\工具\Tomcat-6.0\webapps\002_ext(少了一个"\")
- 2 从httpServletRequest出发
- String cp11111=request.getSession().getServletContext().getRealPath("/");
- 结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\
- 四 classpath的获取(在Eclipse中为获得src或者classes目录的路径)
- 方法一 Thread.currentThread().getContextClassLoader().getResource("").getPath()
- eg: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
- System.out.println("t---"+t);
- 输出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/
- 方法二 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse为src某一个包中的类,下同)
- eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
- System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
- 输出: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
- 另外,如果想把文件放在某一包中,则可以 通过以下方式获得到文件(先定位到该包的最后一级目录)
- eg String p2=JdomParse.class.getResource("").getPath();
- System.out.println("JdomParse.class.getResource---"+p2);
- 输出: JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse为src目录下jdom包中的类)
- 四 属性文件的读取:
- 方法 一
- InputStream in = lnew BufferedInputStream( new FileInputStream(name)); Properties p = new Properties(); p.load(in);
- 注意路径的问题,做执行之后就可以调用p.getProperty("name")得到对应属性的值
- 方法二
- Locale locale = Locale.getDefault();
- ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest", locale);
- String value = localResource.getString("test");
- System.out.println("ResourceBundle: " + value);
- 工程src目录下propertiesTest.properties(名字后缀必须为properties)文件内容如下:
- test=hello word
一 相对路径的获得 说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目) String relativelyPath=System.getProperty("user.dir"); 上述相对路径中,java项目中的文件是相对于项目的根目录 web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomcat安装目录\bin) 二 类加载目录的获得(即当运行时某一类时获得其装载目录) 1.1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录) InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt"); (test.txt文件的路径为 项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下) 上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可 1.2)通用方法二 (此方法和1.1中的方法类似,不同的是此方法必须以'/'开头,参考http://riddickbryant.iteye.com/blog/436693) InputStream is=Test1.class.getResourceAsStream("/test.txt"); (test.txt文件的路径为 项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下) 三 web项目根目录的获得(发布之后) 1 从servlet出发 可建立一个servlet在其的init方法中写入如下语句 ServletContext s1=this.getServletContext(); String temp=s1.getRealPath("/"); (关键) 结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext为项目名字) 如果是调用了s1.getRealPath("")则输出D:\工具\Tomcat-6.0\webapps\002_ext(少了一个"\") 2 从httpServletRequest出发 String cp11111=request.getSession().getServletContext().getRealPath("/"); 结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ 四 classpath的获取(在Eclipse中为获得src或者classes目录的路径) 方法一 Thread.currentThread().getContextClassLoader().getResource("").getPath() eg: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath(); System.out.println("t---"+t); 输出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/ 方法二 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse为src某一个包中的类,下同) eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath(); System.out.println("JdomParse.class.getClassLoader().getResource--"+p1); 输出: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/ 另外,如果想把文件放在某一包中,则可以 通过以下方式获得到文件(先定位到该包的最后一级目录) eg String p2=JdomParse.class.getResource("").getPath(); System.out.println("JdomParse.class.getResource---"+p2); 输出: JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse为src目录下jdom包中的类) 四 属性文件的读取: 方法 一 InputStream in = lnew BufferedInputStream( new FileInputStream(name)); Properties p = new Properties(); p.load(in); 注意路径的问题,做执行之后就可以调用p.getProperty("name")得到对应属性的值 方法二 Locale locale = Locale.getDefault(); ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest", locale); String value = localResource.getString("test"); System.out.println("ResourceBundle: " + value); 工程src目录下propertiesTest.properties(名字后缀必须为properties)文件内容如下: test=hello word
-
log.txt文件中的filepath是写死的绝对路径。能否改成(主程序)的相对路径
2021-01-11 05:36:45通过log.txt生成的report.html 所读取的文件资源都是通过这些绝对路径获取。 一旦我需要把报告,打包给别人或更换位置(比如放nginx服务器上)那么都会读取不到文件资源而打开报告失败。 以下是 ... -
java linux 根目录_java 获取服务器根目录
2021-03-06 06:33:58在实现Web服务器之前有必要简要说明一下超文本传输协议项目中需要从一个模板里面读取信息, 那个模板文件该怎么放呢?绝对路径和相对路径的问题 ,linux和windows都可以访问的问题获取服务器的根目录String ...[一个基于java的web服务器使用这两个重要的类:java.net.Socket和java.net.ServerSocket,并通过HTTP消息进行通信。在实现Web服务器之前有必要简要说明一下超文本传输协议
项目中需要从一个模板里面读取信息, 那个模板文件该怎么放呢?绝对路径和相对路径的问题 ,linux和windows都可以访问的问题
获取服务器的根目录
String templateurl = request.getSession().getServletContext().getRealPath("/WEB-INF/pe_template/PESurplusMaterial.xls");
templateurlis ------------C:\Tomcat 5.5\webapps\osm\WEB-INF\pe_template\PESurplusMaterial.xls[ Jsp 能使用HttpServletRequest对象getRealPath("/") 方法,或者getServletContext().getRealPath("/"); 屡试不爽,可是这次却不行! 看了servlet的实现后,问题逐步得
InputStream in = new FileInputStream(templateurl);
ok 达
今天情人节呢。
[ /** * 获取根目录卷标 * * 通过执行window cmd命令获取返回信息后截取字符串获得 * 目前测试支持中文XP、英文2003Server(32位和64位)
-
如何编写批处理文件批处理文件批处理文件
2010-04-14 10:36:10处理包括读取文件,将其分成一行行的文字,然后将每行 解析成零或更多的符号。然后用已找到的符号字符串变量值 调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开 的第一个空白符号。跳过空白行。您可... -
C++网络爬虫项目
2018-07-04 00:59:17项目文档,download目录存放爬虫下载的网页文件和图像文件,plugins目录 存放扩展插件的源代码和共享库文件,src目录存放项目主体部分的源代码文 件。 在教学环境下,以上目录结构可分别放在teacher和student两个子... -
FTP服务器(Serv-U-setup)V7.0.0.1 安装破解版
2010-04-20 08:32:23+ 改进了 Windows 快捷方式解决方案,以同时包括使用相对路径和其他属性组合的快捷方式。 + 添加了使用 "SITE EXEC" 命令时指定带空格的路径名的功能。如果需要使用空格,Serv-U 将文件名括起来解析。 + 添加了 XDEL... -
2020-12-15
2020-12-15 18:26:33spring boot项目打成jar报部署在服务器上出现:Directory 'file:\E:\files-0.0.1-SNAPSHOT.jar!\BOOT-INF\classes!\static\files 在idea环境下,资源文件都以正常的... //处理根据日期生成目录(通过相对路径获取绝对路spring boot项目打成jar报部署在服务器上出现:Directory 'file:\E:\files-0.0.1-SNAPSHOT.jar!\BOOT-INF\classes!\static\files
在idea环境下,资源文件都以正常的磁盘路径存储;
但是当打成jar包,该文件是存在jar包文件资源里,而不是真实存在于磁盘路径上。
打包后,不能用File的形式访问了,而要用流的形式来读取和下载文件原先的代码
upload函数中的部分代码 //处理根据日期生成目录(通过相对路径获取绝对路径) String realPath = ResourceUtils.getURL("classpath:").getPath() + "static/files"; String dateFormat = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); String dateDirPath = realPath + "/" + dateFormat; File dateDir = new File(dateDirPath); //处理文件上传 aaa.transferTo(new File(dateDir, newFileName)); download函数中的部分代码 //根据文件信息中的文件名字 和 文件存储路径获取文件输入流 String realPath = ResourceUtils.getURL("classpath:").getPath() + "static" + userFile.getPath(); System.out.println(realPath+"3333333333333333333"); System.out.println(userFile.getPath()+"444444444444444444444"); //获取文件输入流 FileInputStream is = new FileInputStream(new File(realPath, userFile.getNewFileName()));
改为适合服务器的代码
//在全局中添加这句 String property = System.getProperty("user.dir"); //在upload中的更改 流的方式进入 FileUtils.copyInputStreamToFile(aaa.getInputStream(), new File(property, newFileName)); //在download中的更改 流的方式出去 FileInputStream is = new FileInputStream(new File(property, userFile.getNewFileName()));
所用到的maven依赖
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency>
-
DWR.xml配置文件说明书(含源码)
2010-01-15 11:02:17仅仅通过反射方法没有办法知道集合元素中的类型,所以上面的两个converter能将任何集合转换成相对javascript而言有意义的对象.然而没有办法将不同的集合类类型分别采用不同的转换方法.因为没有办法完全自动进行转换,... -
Node-服务端开发规范
2020-11-21 13:16:101. 服务器端项目开发规范 在服务端模块中把当前模块的...在服务端中,需要被读取的静态资源文件的路径就不要写相对路径了,因为这个时候所有资源都是通过 url(资源定位符)来获取的,我们在服务端开放了静态资源目录/p1. 服务器端项目开发规范
-
在服务端模块中把当前模块的所有依赖,都声明在文件模块的最上面
-
为了让目录结构保持统一清晰,所以我们约定,把所有的 HTML 文件都放在
views(视图)
目录中 -
为了方便的统一处理静态资源,所以我们约定把所有的静态资源都存放在
public(公共)
目录中静态资源包括css
、img
、js
、lib
、第三方包
等文件 -
在服务端中,需要被读取的静态资源文件的路径就
不要写相对路径
了,因为这个时候所有资源都是通过url(资源定位符)
来获取的,我们在服务端开放了静态资源目录/public/
我们就把路径想象成 url(资源定位符)地址就可以了 -
/
在服务端就是url 根路径
的意思,浏览器在发送请求的时候,会自动把/
拼在请求地址的后面http://127.0.0.1:3000/
2. IP地址和端口号(扩展)
ip地址
是用来定位计算机的端口号
用来定位具体的应用程序- 所有需要
联网通信的应用程序
都会占用一个端口号 - 端口号的范围从
0-65536
之间 - 在计算机中有一些
默认端口号
,最好不要去用,例如http服务的80
- 我们在开发过程中使用一些简单好记的就可以了,
例如3000、5000
等没什么含义 - 可以同时开启多个服务,但一定要确保不同服务占用的端口号要不一致才可以
- 说白了就是在同一台计算机中,同一个端口号同一时间只能被一个应用程序占用
4. http响应HTML之后,再次发起请求的情况
- 浏览器在收到服务器端发送的
HTML
响应内容之后,就要对 HTML 文件从上到下依次解析 - 当解析的过程中,如果发现
link
、script
、img
、iframe
、video
、audio
等带有src 属性
的标签(具有外链资源
)的
时候,浏览器会自动对这些资源一一发起新的请求,
注:link没有src,但link的href等同于src; a标签也例外,因为a标签不点击,是不会发送请求的
5. 如何通过服务器让客户端重定向
-
让响应对象将状态码设置为 302 临时重定向
res.statusCode = 302
-
在响应头中通过 Location 告诉客户端往哪儿定向
res.setHeader('Location','/'); 注:'/' 往首页定向,因为浏览器会自动补全路径及端口号 res.end() // 最后一定要结束响应
-
如果客户端发现收到服务器的响应的状态码是 302 就会自动去响应头中找
Location
,从新
发起请求 -
状态码
301 永久重定向
,浏览器会记住
例如:a.com b.com
当访问a的时候重定向到了b,浏览器会记住,下次访问a的时候,会直接跳向b -
状态码
302 临时重定向
,浏览器不记忆
例如:a.com b.com
每次访问a的时候,都会先访问a,如果有重定向,再跳转
6.
form
表单提交6.1 概述
-
通常会将整个表单元素,放置在
form元素内部
,作用是当提交表单时,会将form元素内部的表单内容
以合适的方式提交
到服务器 -
action 属性
:提交至目标:action='';
-
method 属性
:提交方式method="get"
;method="post"
;a. get请求发送到的数据都写在地址栏上,用户可见 b. post请求发送的数据用户不可见 c. get请求不能提交大量数据,但post可以,因此不要混用
-
如果表单没有被包裹在
form元素内
,但是也想提交的话,可以在表单中添加form属性值
为form元素的id值
-
表单中需要提交的表单元素必须具有
name属性
6.2 表单提交后的
url
解析,及让客户端重新定向-
表单数据提交后,数据会以
url地址
的方式提交至服务端 -
后端拿到
url地址
需要进行解析 -
解析步骤:
// a. 服务端加载 url 模块 const url = require('url'); // b. pares()方法可以把 url 地址中的提交的数据,解析成对象,第二个参数true表示直接将查询字符串转为一个对象 let obj = url.parse(req.url,true); // c. pathname属性可以获取不包含查询字符串的路径部分(不包含 ? 之后的内容) let pathname = obj.pathname; 例如:http://127.0.0.1:3000/pinglun?name=哈哈text=呵呵 注:obj.pathname获取到的就是/pinglun // d. query属性获取到的是提交的数据组成的对象 例如:http://127.0.0.1:3000/pinglun?name=哈哈text=呵呵 obj.query = {name:'哈哈',text:'呵呵'}
-
让响应对象将状态码设置为 302 临时重定向
res.statusCode = 302;
-
在响应头中通过
Location
告诉客户端往哪儿定向res.setHeader('Location','/'); 注:'/' 往首页定向,因为浏览器会自动补全路径及端口号
-
如果客户端发现收到服务器的响应的状态码是 302 就会自动去响应头中找
Location
,从新发起请求
7.
nodemon
模块(修改完代码自动重启)nodemon
是一个第三方命令行工具,用以辅助项目开发- 在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐
nodemon
会在每次文件保存操作后,自动执行该文件- 使用步骤:
1. 下载模块:npm install nodemon -g (--global为全局下载) 2. 在命令行工具中用 nodemon 命令替代 node 命令执行文件 3. 使用 nodemon 命令执行文件后,命令行工具被挂起,nodemon 在监控文件有没有保存操作,有的话会自动执行 4. 断开 nodemon 操作:ctrl+c
-
-
rar压缩软件.rar
2016-02-13 10:52:44Windows 的版本 RAR 从 rar.ini 文件读取配置文件信息,它放在 rar.exe 文件相 同的目录中。 这个文件包含下列字符串: switches=任何 RAR 开关,用空格分开 例如: switches=-m5 -s 环境变量 ~~~~~~~~ ... -
读取文件,path:文件路径 writeFile(path, text) 写文件,path: 文件路径, text:文件内容 clipRead() 读取剪贴板内容 clipWrite(text) 将内容写入剪贴板,text:文本内容 getMousePos() 获取鼠标位置 ...
-
Serv-U最新注册版
2009-03-19 00:21:09+ 改进了 Windows 快捷方式解决方案,以同时包括使用相对路径和其他属性组合的快捷方式。 + 添加了使用 "SITE EXEC" 命令时指定带空格的路径名的功能。如果需要使用空格,Serv-U 将文件名括起来解析。 + 添加了 XDEL... -
Serv-U FTP Server 汉化 破解 绿色
2009-12-25 12:02:31+ 改进了 Windows 快捷方式解决方案,以同时包括使用相对路径和其他属性组合的快捷方式。 + 添加了使用 ”SITE EXEC” 命令时指定带空格的路径名的功能。如果需要使用空格,Serv-U 将文件名括起来解析。 + 添加了 X... -
Serv-U FTP Server v7.0.0.2
2009-08-03 13:13:25+ 改进了 Windows 快捷方式解决方案,以同时包括使用相对路径和其他属性组合的快捷方式。 + 添加了使用 "SITE EXEC" 命令时指定带空格的路径名的功能。如果需要使用空格,Serv-U 将文件名括起来解析。 + 添加了 XDEL... -
-
-
asp.net知识库
2015-06-18 08:45:45XPath中相对路径和绝对路径 XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL... -
文章管理系统
2014-12-06 10:19:225.读取文件加入对0字节文件的错误判断处理 2013年01月11日 V2.7升级包 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.纠正后台AJAX函数的加载图路径错误BUG 2.宇初验证码换成... -
xheditor-1.1.14
2012-08-07 09:25:30参数:abs(绝对路径),root(根路径),rel(相对路径) 备注:1.0.0 beta2新添加,v1.1.0版中名字由localUrl变更为urlType emotPath:修改表情图片的URL根路径 参数:字符串的URL地址,默认为空,指向编辑器路径下的默认... -
ASP.NET.4揭秘 卷2
2012-06-08 16:34:22n923 打开远程服务器上的配置文件 n924 使用Configuration类 n925 修改配置节 n926 准备创建新的网站 n93 创建自定义配置节 n94 创建加密的配置节 n941 使用aspnet_regiis工具加密配置节 n942 以编程方式加密配置节 ... -
C#编程经验技巧宝典
2008-06-01 08:59:3388 <br>0136 如何进行文本加密与解密 88 <br>0137 如何区别0、空字符串、Null、Empty和Nothing 89 <br>0138 从字符串中分离文件路径、文件名及扩展名 89 <br>0139 如何批量替换某一类字符串 89... -
从入门到精通HTML5——PDF——网盘链接
2018-02-27 18:13:2815.2 使用FileReader接口读取文件 285 15.2.1 检测浏览器是否支持FileReader接口 285 15.2.2 FileReader接口的方法 285 15.2.3 使用readAsDataURL方法预览图片 286 15.2.4 使用readAsText方法读取文本... -
-
X-Scan v3.1
2018-10-22 08:43:03/dat/config.ini -- 用户配置文件,用于保存待检测端口列表、CGI漏洞检测的相关设置及所有字典文件名称(含相对路径) /dat/config.bak -- 备份配置文件,用于恢复原始设置 /dat/cgi.lst -- CGI漏洞列表 /dat/iis_... -
ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part3
2013-08-19 05:51:1416.4.5 母版页和相对路径 16.4.6 通过配置文件应用母版页 16.5 高级母版页 16.5.1 和母版页类交互 16.5.2 动态设置母版页 16.5.3 嵌套母版页 16.6 总结 第17章 网站导航 17.1 多视图页面 17.1.1... -
ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1
2013-08-19 05:43:5116.4.5 母版页和相对路径 16.4.6 通过配置文件应用母版页 16.5 高级母版页 16.5.1 和母版页类交互 16.5.2 动态设置母版页 16.5.3 嵌套母版页 16.6 总结 第17章 网站导航 17.1 多视图页面 17.1.1... -
每个类都是独立的一个.h头文件和.cpp实现文件组成,零耦合,不依赖其他文件,方便单个控件独立出来以源码形式集成到项目中,方便直观。 控件数量远超其他第三方控件库比如qwt集成的控件数量,使用方式也比其简单友好...
-
-
贴吧123(tieba123仿百度贴吧) v3.5 build 20110620 UTF8.rar
2019-07-06 00:52:20注意:因为采用了application做缓存,所以在服务器进程回收的时候偶尔会显示出错信息,刷新一下就好了,如果网站有访问量的话,仅在每天第一次访问的时候会出现这个问题。 用本程序,您可以快速建立单贴吧/多贴吧的...