Win a copy of Spring Boot in Practice this week in the Spring forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Ron McLeod
  • Jeanne Boyarsky
  • Paul Clapham
Sheriffs:
  • Liutauras Vilda
  • Henry Wong
  • Devaka Cooray
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Al Hobbs
  • Carey Brown
Bartenders:
  • Piet Souris
  • Mikalai Zaikin
  • Himai Minh

Servlet cannt find path of xml file[jbuilder 7.0 servlet,]

 
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

why ? I use the Jbuilder7.0 , Jdk1.4 and Jdom8.0
my file selectdata.xml is at D:\wepapp\defaultroot\selectdata.xml.
In servlet.I use this
Document doc = sb.build(new FileInputStream("/selectdata.xml")); but I cannt get it .
Error message:
java.io.FileNotFoundException: \selectdata.xml at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:103)
at java.io.FileInputStream.(FileInputStream.java:66)
at webapp.XmlSelectSet.doPost(XmlSelectSet.java:32)
****************************
my servlet code is:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import org.jdom.input.*;
import org.jdom.output.*;
import org.jdom.*;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
String nodeName=request.getParameter("nodeName");
String addItem=request.getParameter("addItem");
String delItem=request.getParameter("delItem");
String itemText=request.getParameter("Description");
int item;
try{
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(new FileInputStream("/selectdata.xml"));//here if I use absolute path, can get this xml file. but, of course xml data cannt access.
Element root = doc.getRootElement();
if(addItem==null||addItem.length()==0){
item=Integer.parseInt(delItem);
Element selectTitle = root.getChild(nodeName);
java.util.List selectItem=selectTitle.getChildren();
selectItem.remove(item);
}else{
item=Integer.parseInt(addItem);
Element selectTitle = root.getChild(nodeName);
java.util.List selectItem=selectTitle.getChildren();
int l=selectItem.size();
Element select=new Element("select"+l);
select.setText(itemText);
selectItem.add(l,select);
}
XMLOutputter outp = new XMLOutputter("\t", false,"Shift_JIS");
outp.output(doc, new FileOutputStream("/selectdata.xml"));
}catch(JDOMException e){out.print(e.toString());}
****************************
my selectdata.xml code:
<?xml version="1.0" encoding="Shift_JIS"?>
<!-- save web all select element concent -->
<selectcon>
<collectmoney>
<position>\siyikyu\SikyuMessage.html</position>
<select1>--NO Select--</select1>
<select2>China</select2>
<select3>New York Mets</select3>
<select4>Japan</select4>
</collectmoney>
<useDiffer>
<position>\siyikyu\SikyuMessage.html</position>
<select1>--NO Select--</select1>
<select2>use1</select2>
<select3>use2</select3>
<select4>use3</select4>
</useDiffer>
<askDiffer>
<position>\siyikyu\SikyuMessage.html</position>
<select1>--NO Select--</select1>
<select2>ask1</select2>
<select3>ask2</select3>
<select4>ask3</select4>
</askDiffer>
</selectcon>
please help me. the servlet code is correct? How can I do ? Thanks
[ January 15, 2003: Message edited by: shaonan zhang ]
[ January 15, 2003: Message edited by: shaonan zhang ]
[ January 15, 2003: Message edited by: shaonan zhang ]
[ January 16, 2003: Message edited by: shaonan zhang ]
 
Ranch Hand
Posts: 18944
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Shaonan,
The only way to achieve this would be:
1. Use an absolute file path to the hard drive location were the file sits
2. Change the server's policy file to allow your code to do so (otherwise you will get security exceptions)
Obviously this is not an easy task...
In a web application, you should not be seing files that are located outside of the web application archive. This is for security reasons.
Hence, the selectdata.xml file should be moved to the /WEB-INF/classes directory of your web application.
And then, instead of using:

use the getResourceAsStream method of the servlet context:

Cheers
[ January 16, 2003: Message edited by: Beno�t d'Oncieu ]
reply
    Bookmark Topic Watch Topic
  • New Topic