以下は、XML ファイルを生成しようとしているコードです。XML を生成したらすぐに、この XML ファイルを、ボックスでローカルに実行されている独自のサーブレットの 1 つに送信する必要があります。XML ファイルを生成することはできますが、その XML ファイルをサーブレットの 1 つに送信して、doGet メソッドでその XML ファイルを解析できるようにする方法がわかりません。
public static void main(String[] args) throws SAXException, XPathExpressionException, ParserConfigurationException, IOException,
TransformerException {
String xml = generateXML();
send("http://localhost:8080/ServletExample/SampleServlet", xml);
}
/**
* A simple method to generate an XML file
*
*/
public static String generateXML(String conn, String funcAddr) throws ParserConfigurationException, SAXException, IOException,
XPathExpressionException, TransformerException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// Some code here to make an XML file
String xmlString = sw.toString();
// print xml
System.out.println("Here's the xml:\n" + xmlString);
return xmlString;
}
/**
* A simple method to send the XML to servlet class
*
*/
public static void send(String urladdress, String file) throws MalformedURLException, IOException {
String charset = "UTF-8";
String s = URLEncoder.encode(file, charset);
// I am not sure what should I do here so that I can pass the
// above XML file that I made to my servlet class.
}
私のサーブレットは 8080 でローカルに実行されています。以下は、私のサーブレット クラスのスニペットです。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader reader = request.getReader();
//Parse the XML file here?
System.out.println(reader.readLine());
}
更新されたコード:-
SampleServlet
new で名前が付けられたサーブレット クラスを作成しましたdynamic web project
。サーバーをデバッグモードで起動しました。以下は私のサーブレットのコードです-
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader reader = request.getReader();
System.out.println(reader.readLine());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader b = new BufferedReader(request.getReader());
System.out.println(reader.readLine());
}
そして、私の web.xml ファイルは次のようなものです-
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>ServletExample</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>SampleServlet</display-name>
<servlet-name>SampleServlet</servlet-name>
<servlet-class>com.servlet.example.SampleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/SampleServlet</url-pattern>
</servlet-mapping>
</web-app>
上記の両方の方法にブレークポイントを設定しました。ブラウザからこのURLにアクセスするとすぐに-
http://localhost:8080/ServletExample/SampleServlet
私のブレークポイントは常に doGet メソッドでヒットします。
これで、クライアントであり、サーブレットに XML ファイルをリクエストとして渡す必要があるため、サーブレットの doPost メソッドを呼び出す新しい Java プロジェクトを Eclipse で作成しました。
以下は私のコードです-
public static void main(String[] args) {
HttpPost post = new HttpPost("http://localhost:8080/ServletExample/SampleServlet");
post.setHeader("Content-Type", "application/xml");
post.setEntity(new StringEntity(generateNewXML()));
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
}
しかし、どういうわけか、上記のメイン プログラムを Java アプリケーションとして実行するとすぐに、サーブレット クラスに設定したブレークポイントに到達しません。なぜそれが起こっているのかわからず、例外はスローされません。なぜそれが起こっているのですか?