以前はこの記事に関連していた別の質問を削除してしまいました。廃止され、別の問題がありました。以下の答えは他の答えよりもはっきりしており、これは他の誰かが同様の混乱を起こすのに役立つと私は信じています。AJAXリクエストのヌルまたは空のJSONオブジェクト
本質的に私はクライアントサイドJSから来るJavaのStringを使いたいと思っています。 JSのアラートは正常に動作しますが、私のJSONオブジェクトはサーブレットでnullまたは空です。 SQLクエリを実行できるように、実際にはサーブレットに渡される文字列が1つだけ必要ですが、多くの問題があります。
ありがとうございました!
htmlファイル
<div class="jumbotron" id="jumboframe">
<h1>Enter your URL below</h1>
<input class="txtUrl" type="text" id="txtUrl" value="...." onfocus="if(this.value == '....') { this.value = ''; }"/>
<p><a class="btn btn-lg submitButton" href="testpage.html" onclick="getURL()" role="button">Start searching!</a></p>
</div>
<script>
function getURL() {
var urlString = document.getElementById("txtUrl").value;
var params = {url: urlString};
$.ajax({
type: "POST",
url: "testpage.html",
contentType: "application/json",
dataType: "text", // "JSON" here doesn't call alerts below
data: {
'url': urlString
},
success: function(data) {
alert("did it!");
alert(JSON.stringify(params));
alert(JSON.stringify(data));
}
});
}
</script>
Javaサーブレット
public class JavaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
StringBuilder builder = new StringBuilder();
BufferedReader reader = request.getReader();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
out.println(builder.toString());
String url = request.getParameter("url");
Map<String, String[]> map = request.getParameterMap(); // empty {}
out.println(map.toString()); // null
out.println(url); // null
web.xmlの
<servlet>
<servlet-name>JavaServlet</servlet-name>
<servlet-class>path.to.my.JavaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JavaServlet</servlet-name>
<url-pattern>/testpage.html</url-pattern>
</servlet-mapping>
おかげで再び
このヘルプを願っています(http://stackoverflow.com/questions/1548782/retrieving-json-object-literal-from-httpservletrequest)POSTデータを使ってStringBuilderを正しく作成しています。他に何ができるかを知るにはリンクを見てください。 –