tolga: finde datei nicht (servlet, XSLT-transformation)

hallo benutze ein servlet um aus den beiden Dateien menu.xsl & menu.xml eine html-seite zu generieren, das servlet gibt jedoch diese Fehlermeldung aus...

menu.xml (Das System kann die angegebene Datei nicht finden)java.io.FileNotFoundException: menu.xml (Das System kann die angegebene Datei nicht finden) at java.io.FileInputStream.open(Native Method) at java.............

wo muss ich die beiden dateien abspeichern damit auf sie zugegriffen werden kann.

Benutze XALAN
TOMCAT als Servlet-Engine

danke,..

  1. Hallo,

    hallo benutze ein servlet um aus den beiden Dateien menu.xsl & menu.xml eine html-seite zu generieren, das servlet gibt jedoch diese Fehlermeldung aus...

    menu.xml (Das System kann die angegebene Datei nicht finden)java.io.FileNotFoundException: menu.xml (Das System kann die angegebene Datei nicht finden) at java.io.FileInputStream.open(Native Method) at java.............

    wo muss ich die beiden dateien abspeichern damit auf sie zugegriffen werden kann.

    In Dein webapps-Verzeichnis. Wenn Du nicht willst, dass man per URL von draussen auf diese Dateien zugreifen kann, dann ins WEB-INF-Verzeichnis Deines webapps-Verzeichnis

    Aber wichtig ist, dass Du nicht einfach per URL drauf zugreifen kannst, sondern so wie im folgenden Code-Fragment

    String xmlFileName = "/WEB-INF/xml/glossar.xml";
            URL xmlURL = getServletContext().getResource(xmlFileName);
            String xmlSystemID = xmlURL.toExternalForm();

    String xsltFileName = "/WEB-INF/xsl/glossar.xsl";
            URL xsltURL = getServletContext().getResource(xsltFileName);
            String xsltSystemID = xsltURL.toExternalForm();

    Gruß
    Franz

  2. Leider funktioniert das immer noch nicht das ist mein gesamter code den du hier abgebildet siehst.

    public class neu extends HttpServlet {

    public void init(ServletConfig config) throws ServletException
      {
        super.init(config);
      }

    public void doGet (HttpServletRequest request,
                         HttpServletResponse response)
        throws ServletException, IOException, java.net.MalformedURLException
      {
        // The servlet returns HTML.
        response.setContentType("text/html; charset=UTF-8");
        // Output goes in the response stream.
        PrintWriter out = response.getWriter();
        try
        {
          TransformerFactory tFactory = TransformerFactory.newInstance();
          // Get the XML input document and the stylesheet.
          Source xmlSource = new StreamSource(new URL("file:/WEB-INF/menu.xml").openStream());
          Source xslSource = new StreamSource(new URL("file:menu2.xsl").openStream());
          // Generate the transformer.
          Transformer transformer = tFactory.newTransformer(xslSource);
          // Perform the transformation, sending the output to the response.
          transformer.transform(xmlSource, new StreamResult(out));
        }
        catch (Exception e)
        {
          out.write(e.getMessage());
          e.printStackTrace(out);
        }
        out.close();
      }

    }

    1. Hi,

      schau Dir doch mal den Code an, den ich gepostet habe. Du musst über
      getServletContext().getResource(/meineAppl/WEB-INF/menu.xml); auf die Dateien zugreifen.

      Gruß
      Franz