我正在制作一个eBay风格的网络应用程序,用于使用JSP和servlet购买和销售漫画书。我正在实施管理员界面来管理注册用户可以销售的漫画书类型。当管理员创建新的漫画书系列时,例如Iron Man,Spider-Man等,servlet将在数据库中创建一个实例,然后根据新漫画系列的唯一标识符创建一个新的文件夹名称。因此,如果我创建一个新的漫画书系列让我们说Hulk,并且数据库分配新的插入 idCode 25,则会创建一个名为“25”的新文件夹,并且将存储所有未来的漫画书封面图像在这个文件夹中为所有绿巨人漫画书。
话虽如此,我的问题是,当一切都完成后,servlet会说目录已经创建了,但是当我去检查时,我发现事实并非如此。
这是我的项目目录:
我正在使用最新的Apache Tomcat和NetBeans IDE 7.2。
以下是创建新文件夹的代码:
else if (button.equalsIgnoreCase("Insert")) {
if (tab.equalsIgnoreCase("Comic")) {
String nameComic = request.getParameter("txtnameComicInsert");
if (nameComic != null && nameComic.length() > 0) {
Comic co = new Comic();
co.setNomeCollana(nameComic);
if (!SqlComic.existsComic(co.getComicName()) && SqlComic.insertNewComic(co) > 0) {
sessione.setAttribute("msgVisitaTab", "Inserted successfully!");
co = SqlCollana.getCollana(co.getNomeCollana());
System.out.println("ACCEDI DATABASE SERVLET----> CREARE CARTELLA NELLA DIRECTORY: " +
sessione.getServletContext().getRealPath("/") + "Immagini\\" + co.getCodice());
File dir = new File(sessione.getServletContext().getRealPath("/").toString() + "Immagini\\" + co.getCodice());
dir.mkdirs();
if (dir.exists())
System.out.println("ACCESS DATABASE SERVLET----> FOLDER CREATED: " + co.getCodice() + " AT LOCATION: " + dir.getAbsolutePath());
else
System.out.println("ACCESSDATABASE SERVLET----> FOLDER NOT CREATED!");
} else {
sessione.setAttribute("msgVisitaTab", "Error DURING INSERTION!");
}
} else {
sessione.setAttribute("msgVisitaTab", "FILL ALL FIELDS FOR INSERTION PROCESS TO TAKE PLACE![PROJECT DIRECTORY, all sub folders created must go in /Immagini/][1]");
}
}
}
因此代码完美无缺,但没有任何反应,我似乎无法理解。但我注意到的是,查看 Immagini 文件夹的属性,它具有“只读”保护。我禁用它,但它不断以某种方式重新激活。
知道问题可能是什么?
答案 0 :(得分:1)
不要在web-app中创建文件夹,因为WAR文件更改时可能会删除(并重新创建)。我建议下面改为:
onContextInitialized()
检查并创建此文件夹。
希望这适合你。