2016-01-12 2 views
-1

это мой простой Java сервлетов, которые генерируют код XML retreiving его из простой базы данных:Как разобрать XML, генерируемый сервлет

import java.io.IOException; 
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 java.sql.*; 
import java.io.* 

@WebServlet("/XML") 
public class XML extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    public XML() { 
     super(); 
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    Connection connection; 
    Statement statement; 

    response.setContentType("application/xml"); 
    PrintWriter printwriter = response.getWriter(); 

    printwriter.println("<?xml version=\"1.0\"?>"); 
    printwriter.println("<document>"); 

    try { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/AppDB", "***", "****"); 

     statement = connection.createStatement(); 

     String SQL = "SELECT first_name, last_name FROM contacts"; 
     ResultSet resultset = statement.executeQuery(SQL); 

     while(resultset.next()) { 
      printwriter.println("<first> " + resultset.getString("first_name") + " </first>"); 
      printwriter.println("<last> " + resultset.getString("last_name") + " </last>"); 
     } 
     resultset.close(); 
     statement.close(); 
     connection.close(); 
    } 
    catch (Exception e) { 
    } 
    printwriter.println("</document>"); 
    printwriter.close(); 
} 

} 

Теперь я хочу, чтобы разобрать его на стороне клиента для отображения данных, но Я не знаю, как это сделать. Я пытался использовать файл JSP с SAX парсера, но когда сервер дает мне ошибку, когда я ставлю следующий Servlet URL:

Document doc = docBuilder.parse("http://localhost:8080/Example/XML"); 

Может кто-нибудь пожалуйста, помогите мне дать мне несколько советов, чтобы решить эту проблему? И может ли кто-нибудь узнать о возможном альтернативном способе сделать то же самое? Как насчет JQuery или Ajax? (Даже если я только что прочитал несколько вещь об этом, но я не знаю их очень хорошо)

+2

Похоже, XML является каталогом а не XML-файл, передайте полный путь к файлу xml, который вы пытаетесь проанализировать. – SomeDude

+1

вы создали генерацию xml в методе doPost(). Если вы хотите получить ответ xml, просто передав URL-адрес, попробуйте реализовать метод doGet() – Prabhakaran

+0

@Prabhakaran Спасибо большое! Отличное решение! – marks

ответ

0

Выбор между POST или GET

GET => использовать docBuilder.parse так, и код doGet в вашем приложении.

Вы можете просто перенаправить doPost

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
doPost (request,response); 
} 

POST => Dont изменить вас сервлет, но изменить свой клиент.

1. DocBuilder с URL работает также, как это, но с GET по умолчанию:

Document doc = docBuilder.parse(new URL("http://localhost:8080/Example/XML").openStream()); 

видеть, что: How to read XML response from a URL in java?

2. Меняем к POST

использования

URL url = new URL("http://localhost:8080/Example/XML"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod("POST"); 
InputStream is= connection.getInputStream(); 
Document doc = docBuilder.parse(is); 

, но будьте осторожны: если вы хотите передать ДАННЫЕ, вы должны поставить до:

OutputStream out = connection.getOutputStream(); 
out.write(parameters and data here); 
out.close(); 

видеть, что: How can I send POST data through url.openStream()?

How to read XML response from a URL in java?

Sending HTTP POST Request In Java

Смежные вопросы