2017-04-18 76 views
-1

我有Struts 2的一个小问题,当我试图让上下文路径:如何在Struts 2中获取实际的源代码路径?

ServletActionContext.getServletContext().getRealPath("\\WebContent\\resources\\img\\"); 

我得到这个路径:

C:\用户\基利安\ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ SiteWebAdministrable \ WebContent \ resources \ imgicone.jpg

为什么确切的源代码路径?

因为我需要上载并保存管理网站的图片来控制背景,并且没有实际的路径,我无法将图片保存在资源路径中...... 因此,我将名称和扩展名保存在数据库中没问题),我需要将图像保存在资源目录(图像问题...)

有人可以帮我吗?我忘了什么吗?

这个问题是答案吗?

How do you get the project path in Struts 2?

+0

你的路径有什么问题? –

+0

我搜索类似C:\ Users \ killian \ workspace \ SiteWebAdministrable \ WebContent \ resources \ img \ icone.jpg的路径将图像保存在项目目录中 –

回答

0
servletContext.getServletContext().getRealPath("/resources/img/name_of_image.png") 

于是,经过“/”来getRealPath()将返回你的项目的展开WAR文件/ Web文件夹的绝对磁盘文件系统路径。类似于/path/to/server/work/folder/demo.war/,您应该可以在File或FileInputStream中进一步使用它。

注意,大多数初学者似乎并没有看到/意识到你其实可以通过整个网络内容的路径,并说他们经常使用

String absolutePathToIndexJSP = servletContext.getRealPath("/") + "demo.png"; 

,而不是

String absolutePathToIndexJSP = servletContext.getRealPath("/demo.png"); 

getRealPath ()是不可移植的;你最好不要使用它

小心使用getRealPath()。

如果您真正需要的是获取Web资源的InputStream,那么最好使用ServletContext#getResourceAsStream()来代替,这将工作,无论WAR如何扩展。所以,如果你想例如index.jsp中的一个InputStream,然后不要做:

InputStream input = new FileInputStream(servletContext.getRealPath("/demo.png")); // Wrong! 

但不是做:

InputStream input = servletContext.getResourceAsStream("/demo.png"); // Right! 

或者,如果你想获得所有可用的网络资源列表路径,请改用ServletContext#getResourcePaths()。

Set<String> resourcePaths = servletContext.getResourcePaths("/"); 
+0

谢谢我会尽力:) –

相关问题