是否有可能从JSF应用程序中找到部署路径?
还有一个问题(如果前一个问题的答案是真的):在那里存储一些上传的文件是否合法?
我试图从java获取我的项目的当前目录.我使用以下代码行来获取路径详细信息.
类型1:
File directory = new File (".");
try {
System.out.println ("Current directory's canonical path: "
+ directory.getCanonicalPath());
System.out.println ("Current directory's absolute path: "
+ directory.getAbsolutePath());
}catch(Exception e) {
System.out.println("Exceptione is ="+e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
类型2:
String currentDir = System.getProperty("user.dir");
System.out.println("Current dir using System:" +currentDir);
Run Code Online (Sandbox Code Playgroud)
从主类执行上面的代码我得到项目目录.当我从服务器端执行时,得到"当前dir使用System:D:\ Apache Tomcat 6.0.16\bin".但我的项目位于D:\Apache Tomcat 6.0.16\wepapps\SampleStructs.
请给我任何建议,并帮助我解决这个问题.
我正在开发一个Java Servlet,它创建一个临时文件以在会话中使用.在会话结束时(即用户"注销"),我需要删除临时文件,然后将用户重定向到初始("登录")页面.重定向工作正常,但临时文件保持不变.
我认为它与文件的路径有关,但我不确定是什么.我在会话启动时创建文件:
String path = request.getSession().getServletContext().getRealPath("/");
File file = File.createTempFile("getter", ".html", new File(path + "/tmp/"));
Run Code Online (Sandbox Code Playgroud)
然后,当关闭会话时,我做:
file.delete();
Run Code Online (Sandbox Code Playgroud)
我知道file.deleteOnExit(),但是...什么时候退出servlet?也许我很困惑,但我肯定会感激任何帮助!:)
先感谢您!
编辑
所以,这里有一些细节:
我正在使用servlet,暂时没有处理会话.我同意@Joop我需要实现会话,但暂时只是想做一些简单的测试.
所以,我的servlet讨厌GET和POST请求.我在POST请求中使用一个标志来调用一个内部函数,该函数将文件(在类中声明为private File file;)实例化为新的临时文件.在连续调用时,将填充并保存文件.在用户看到的页面中,我有一个引用servlet的锚(对于'this',即),传递一个标志作为参数,一个标志指示'注销'.然后我调用另一个内部函数来删除先前实例化的文件.
如果这是一个问题,我将实施经理并发布我的发现.
编辑2
我实现了一个HttpSessionListener,似乎一切正常.现在,在创建会话时,我在我之前声明的目录中实例化一个文件(注意它不是临时文件,我使用,File file = new File(path + "/tmp/" + req.getSession().getId() + ".html");因此文件的名称等于会话ID).然后我向会话添加一个属性,其值是文件的完整路径.我一如既往地继续填充我的文件,当用户选择注销时,我使会话无效.然后,在侦听器内部,我检索文件的路径,因此我可以获取指向它的指针:
String fname = ev.getSession().getAttribute("filename").toString();
File f = new File(fname);
f.delete();
Run Code Online (Sandbox Code Playgroud)
所以,现在我得到消息是积极的,我的意思是f.delete()返回true,并在此之后我做f.exists(),我得到false.所以应该没问题.但是,文件实际存在,即它们仍然存在于磁盘上.
我可以试试@ A4L提供的这个例子.我做错了什么......?
我需要在JSF应用程序中获取资源文件.
InputStream input = new FileInputStream("filename.xml");
Run Code Online (Sandbox Code Playgroud)
但是,系统找不到filename.xml与sample.xhtml网页位于同一文件夹中的文件.我怎么得到InputStream它?
我想通过使用请求方法 getRealPath() 在 java 中获取文件的真实路径,但现在不推荐使用它我想要一个替代它我尝试获取 servletcontext 但它没有返回整个路径
在 jsp 页面中,当我使用 application.getRealPath("/") 时,它给出的整个路径为 D:/.....
但是在 java servlet 代码中,我没有让这个方法工作,所以我想要一个完美的 httprequest 方法,它将返回应用程序的整个路径。
如果可能的话,请给我一个完美的方法和例子
要properties使用Glassfishv3 webserver(位于root directory我的Web应用程序中)读取JSF2.0中的文件,我使用下面的代码 -
ServletContext ctx = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
String deploymentDirectoryPath = ctx.getRealPath("/");
Properties prop = new Properties();
prop.load(new FileInputStream(deploymentDirectoryPath
+ File.separator + "portal-config.properties"));
Run Code Online (Sandbox Code Playgroud)
以下是门户网站的截图 -

运行门户网站时,我收到FileNotFound错误,因为该文件不存在于glassfish域中.
有没有办法读取属性文件,它既适用于情境,也适用于开发阶段和战争文件?
我正在JSF网站上工作,我需要一些帮助.我有一个XML文件,我试图通过支持bean读取,但我不知道如何找到它的路径.它位于我的资源文件夹(resources/movies.xml)中.我该怎么做呢?
java ×5
jsf ×3
resources ×2
servlets ×2
deployment ×1
directory ×1
file ×1
file-upload ×1
glassfish-3 ×1
inputstream ×1
java-ee ×1
java-server ×1
jsf-2 ×1
linux ×1
primefaces ×1
struts2 ×1
tomcat ×1