关于getRealPath的问题
package com.web.servlet;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.web.domain.Book;
import com.web.utils.UploadUtils;
@WebServlet("/add.do")
public class AddBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Map<String, String> map=new HashMap<String, String>();
DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
ServletFileUpload fileUpload=new ServletFileUpload(diskFileItemFactory);
try {
List<FileItem> list=fileUpload.parseRequest(request);
for(FileItem f:list) {
if(f.isFormField()) {
map.put(f.getFieldName(), f.getString("UTF-8"));
}else {
//文件上传
//获得文件名
String fileName=f.getName();
//得到随机文件名
String uuidFileName=UploadUtils.getUuidFileName(fileName);
//获得文件输入流
InputStream is=f.getInputStream();
//将文件写入服务器的某个路径即可
String path=getServletContext().getRealPath("/upload");
System.out.println(path);
String url=path+"\\"+uuidFileName;
//创建输出流和输入流进行对接
map.put("path",getServletContext()+"/upload/"+uuidFileName);
System.out.println(url);
byte[] b=new byte[1024];
int len=0;
OutputStream os=new FileOutputStream(url);
while((len=is.read(b))!=-1) {
os.write(b, 0, len);
}
is.close();
os.close();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Book book=new Book();
book.setBookId(map.get("bookId"));
book.setBookName(map.get("bookName"));
book.setCategoryId(map.get("categoryId"));
book.setBookPrice(map.get("bookPrice"));
book.setBookInfo(map.get("remarks"));
book.setPath(map.get("path"));
System.out.println(book);
request.getRequestDispatcher("/bookList.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}我一直没搞懂这个getRealPath到底是哪个地址,getRealPath指的是服务器所在地址吗,那服务器所在地址和文件目录地址不是同一个地址是分开的对吗,有点理不清楚这地址的关系了

8
收起
正在回答
3回答
同学可以这么理解但是有些不是很准确,同学还记的之前的课程中有讲过项目的部署地址吗?

在tomcat的安装与配置讲过,这里就是同学项目最终会部署的地址。同学可以看课程回顾一下https://class.imooc.com/lesson/715#mid=17790
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
2. 从网页搭建入门JavaWeb
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星