0
我在jsp页面中选择了xml文件,然后在servlet的post方法中转换这些文件并在html页面上显示数据。但它不工作,当我选择一个XML文件,并验证我得到下面的错误错误404 - 在Java中将XML转换为HTML时未找到
"Error 404 - Not Found".
下面是java
代码:
@WebServlet(name = "Validation", urlPatterns = { "/validation" })
public class Validation extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
static Document document;
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
String xmlfile=request.getParameter("fichier");
String xsltfile="C:\\Documents and Settings\\Administrateur\\Bureau\\test\\EDI3\\EDI";
File stylesheet = new File(xmlfile);
File datafile = new File(xsltfile);
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(datafile);
// Use a Transformer for output
TransformerFactory tFactory = TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = tFactory.newTransformer(stylesource);
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
} catch (TransformerConfigurationException tce) {
// Error generated by the parser
System.out.println("\n** Transformer Factory error");
System.out.println(" " + tce.getMessage());
// Use the contained exception, if any
Throwable x = tce;
if (tce.getException() != null) {
x = tce.getException();
}
x.printStackTrace();
} catch (TransformerException te) {
// Error generated by the parser
System.out.println("\n** Transformation error");
System.out.println(" " + te.getMessage());
// Use the contained exception, if any
Throwable x = te;
if (te.getException() != null) {
x = te.getException();
}
x.printStackTrace();
} catch (SAXException sxe) {
// Error generated by this application
// (or a parser-initialization error)
Exception x = sxe;
if (sxe.getException() != null) {
x = sxe.getException();
}
x.printStackTrace();
} catch (ParserConfigurationException pce) {
// Parser with specified options can't be built
pce.printStackTrace();
} catch (IOException ioe) {
// I/O error
ioe.printStackTrace();
}
}
}
任何指导或教程,可以让我明白的地方我会错误的赞赏。
我没有开发servlet,但我期望输出被写入某个附加到'HttpServletResponse响应'的流,而不是'System.out'。所以试试'StreamResult result = new StreamResult(response.getOutputStream());'。通常,XSLT使用命名空间处理XML,因此您可能需要使用可识别名称空间的DocumentBuilderFactory。另一方面,XSLT处理器的实现者通常会说他们的本地树模型比W3C DOM好,所以不要使用DOMSource考虑使用SAXSource或StreamSource。 – 2014-11-04 14:43:52