这是我的简单Java servlet,它生成从简单数据库中检索它的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();
}
}
现在,我想在客户端解析它以显示数据,但我不知道该怎么做。我尝试使用带有SAX解析器的JSP文件,但是当我放入以下Servlet URL时服务器给我一个错误:
Document doc = docBuilder.parse("http://localhost:8080/Example/XML");
有人可以帮我提一些解决问题的建议吗? 谁能知道一种可能的替代方法来做同样的事情?那么JQuery还是Ajax呢? (即使我刚刚读了一些关于它的事情,但我对它们并不了解)
答案 0 :(得分:0)
在POST或GET之间选择
GET =&gt;像这样使用docBuilder.parse,并在你的应用程序中编写doGet。
您只需重定向到doPost
即可protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost (request,response);
}
发布 =&gt;不要改变你的servlet,而是改变你的客户。
<强> 1。带URL的docBuilder也是这样,但默认情况下使用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()?