在我的Web应用程序中,我必须向一组预定义用户发送电子邮件finance@xyz.com,因此我希望将其添加到.properties文件中并在需要时访问它.这是一个正确的程序,如果是这样,那么我应该在哪里放置这个文件?我正在使用Netbeans IDE,它有两个单独的文件夹用于源文件和JSP文件.
我在这里读到,无论如何都不应该将文件保存在服务器中,因为它不是可移植的,事务性的并且需要外部参数.但是,鉴于我需要一个针对tomcat(7)的tmp解决方案,并且我对服务器机器有(相对)控制,我想知道:
保存文件的最佳位置是什么?我应该保存/WEB-INF/uploads(建议不要在这里)或某个地方$CATALINA_BASE(见这里)或......?JavaEE 6教程从用户获取路径(:wtf :).注意:该文件不应以任何方式下载.
我应该建立一个配置参数详见这里?我很欣赏一些代码(我宁愿给它一个相对路径 - 所以它至少是Tomcat可移植的) - Part.write()看起来很有希望 - 但显然需要一个绝对的路径
我对这种方法与数据库/ JCR存储库的缺点的阐述感兴趣
不幸的是 ,@ BalusC 的FileServlet专注于下载文件,而他在上传文件时的答案会跳过保存文件的位置.
容易转换为使用DB或JCR实现(如长耳兔)的解决方案将是优选的.
在Java Web应用程序中,假设我想获取XML文件的InputStream,该文件放在CLASSPATH中(即在sources文件夹中),我该怎么做?
在以下代码段中:
ServletContext context = request.getServletContext();
String path = context.getRealPath("/");
Run Code Online (Sandbox Code Playgroud)
是什么/在方法getRealPath()代表什么呢?我应该什么时候使用它?
将包含JSON的文件加载到JSONObject中的最简单方法是什么.
目前我正在使用json-lib.
这就是我所拥有的,但它抛出异常:
XMLSerializer xml = new XMLSerializer();
JSON json = xml.readFromFile("samples/sample7.json”); //line 507
System.out.println(json.toString(2));
Run Code Online (Sandbox Code Playgroud)
输出是:
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:61)
at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
at net.sf.json.xml.XMLSerializer.readFromStream(XMLSerializer.java:386)
at net.sf.json.xml.XMLSerializer.readFromFile(XMLSerializer.java:370)
at corebus.test.deprecated.TestMain.main(TestMain.java:507)
Run Code Online (Sandbox Code Playgroud) 我编写了一个Java servlet,我想在不同服务器上的许多Tomcat实例上安装它.servlet使用一些静态文件,这些文件在WEB-INF下用war文件打包.这是典型安装中的目录结构:
- tomcat
-- webapps
--- myapp
---- index.html
---- WEB-INF
----- web.xml
----- classes
------ src
------- .....
----- MY_STATIC_FOLDER
------ file1
------ file2
------ file3
Run Code Online (Sandbox Code Playgroud)
我如何知道MY_STATIC_FOLDER的绝对路径,以便我可以读取静态文件?
我不能依赖"当前文件夹"(我在新文件(".")中得到的)因为它取决于Tomcat服务器的启动位置,这在每个安装中都是不同的!
resources servlets relative-path working-directory absolute-path
我正在尝试生成一个XML文件并将其保存/WEB-INF/pages/.
下面是我使用相对路径的代码:
File folder = new File("src/main/webapp/WEB-INF/pages/");
StreamResult result = new StreamResult(new File(folder, fileName));
Run Code Online (Sandbox Code Playgroud)
在本地计算机上作为应用程序运行时,它工作正常 (C:\Users\userName\Desktop\Source\MyProject\src\main\webapp\WEB-INF\pages\myFile.xml).
但是当在服务器机器上部署和运行时,它会引发以下异常:
javax.xml.transform.TransformerException:java.io.FileNotFoundException C:\ project\eclipse-jee-luna-R-win32-x86_64\eclipse\src\main\webapp\WEB INF\pages\myFile.xml
我也尝试getServletContext().getRealPath()了,但它正在null我的服务器上返回.有人可以帮忙吗?
如何保存/加载位于我的课程所在的文件?我之前没有到该位置的物理路径,我想动态地找到该文件.
谢谢
编辑:
我想加载一个XML文件并写入和读取它,我不知道如何解决它.
我已将非java文件存储在一个包中.我想从这个包中读取文件而不指定文件的绝对路径(例如C:\ etc\etc ...).我该怎么做?
我试图访问我在代码中的JSF应用程序中使用的i18n属性文件.(这个想法是让一个页面显示其键和值实际上是一个表.)
该项目是一个maven项目,位于src/resources/localization文件夹中,并部署在WEB-INF\classes\localization \中的war文件中
java.util.Properties prop = new java.util.Properties();
String path = "localization/stat_codes.properties";
InputStream foo = prop.getClass().getResourceAsStream(path);
Run Code Online (Sandbox Code Playgroud)
但是无论我将路径变量设置为/WEB-INF/classes/localization/stat_codes.properties,"insetation.stat_codes.properties"等,变量foo都是null.类似的问题在这里,但是没有任何帮助也回答那里.
java ×5
servlets ×5
resources ×3
file-io ×2
realpath ×2
classpath ×1
file-upload ×1
inputstream ×1
java-ee ×1
jsf ×1
json ×1
servlet-3.0 ×1
tomcat ×1