java文件中获得路径
Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.class文件)所在路径
ClassLoader.getSystemResource("")
Class_Name.class.getClassLoader().getResource("")
Class_Name.class .getResource("/")
Class_Name.class .getResource("") // 获得当前类所在路径
System.getProperty("user.dir") // 获得项目根目录的绝对路径
System.getProperty("java.class.path") //得到类路径和包路径
打印输出依次如下:
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/com/xml/imp/
F:\work_litao\uri_test
F:\work_litao\uri_test\WebContent\WEB-INF\classes;F:\work_litao\uri_test\WebContent\WEB-INF\lib\dom4j.jar
2、 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径 :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3.1 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径 :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3、Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())
webapp路径:request.getSession().getServletContext().getRealPath("/")
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
1、获取上传的文件路径,这个还真没试过。百度了一下,网友们的意见是:浏览器版本太高,从安全角度,禁止获取全文件路径,你可以换低版本浏览器试试,不保证正确。 有结果希望告知一下
2、一般文件上传是获取文件流,然后本地new出来保存在服务器上。
楼主:用基础的java我不知道怎么实现。但是但第三方jar包完全可以。而且上传文件方便。
代码给你:
private ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
this.config = config;
}
// TODO Auto-generated method stub
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");
String serverPath = config.getServletContext().getRealPath("/")
.replace("\\", "/");
try {
List
for (FileItem item : items) {
if (!item.isFormField()) {
String filedName = item.getName();
System.out.println(filedName);//这个名称就是全路径 下面是保存到服务器指定路径。
// 获取文件后缀
String ext = filedName
.substring(filedName.lastIndexOf("."));
String filexx = UUID.randomUUID().toString();
String url = serverPath + "noteimage/" + filexx + ext;
String url1 = "noteimage/" + filexx + ext;
// 保存到指定路径
item.write(new File(url));
req.setAttribute("imageurl", url);
resp.getWriter().write(url1);
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
另外上传文件的form 不得写上encType="multipart/form-data" 表明上传的是文件么
使用FormFile这个类
定义一个FormBean
public class TestForm{
FormFile file;
private void setFile(FormFile file){
this.file = file;
}
public FormFile getFile(){
return file;
}
}
jsp页面
ActionBean
方法中这样写
TestForm tForm = (TestForm)form;// 获取表单
FormFile file = bForm.getFile();
file.getFilePath(); // 获取文件路径
正如一楼所说,浏览器版本太高,从安全角度,禁止获取全文件路径,你可以换低版本浏览器试试,不保证正确,但是你可以获取到自己上传到的服务器的文件的全路径