2017-02-08 13 views
0

私のJSPページからの任意の応答を取得することはできません。Javaは私のサーブレット

<button data-ng-click="login()">Fetch data from server</button> 

mainController.js

$scope.login = function() { 
    var xmlHttpReq = new XMLHttpRequest(); 
    xmlHttpReq.open('POST', "http://localhost:8080/WEB-war/FES", false); 
    xmlHttpReq.setRequestHeader('Content-Type', 'application/json'); 

    xmlHttpReq.send(JSON.stringify($scope.strings)); 
    if (xmlHttpReq.status === 200) { 
     alert(xmlHttpReq.responseText) 
    } 

} 

FileEditServlet.java

@WebServlet("/FileEditServlet") 
public class FileEditServlet extends HttpServlet { 

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

    System.out.println("inside do POST"); 

    PrintWriter out = response.getWriter(); 
    out.println("response"); 
    response.getWriter().write("do something omg"); 

} 

の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"      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <servlet> 
    <servlet-name>FileEditServlet</servlet-name> 
    <servlet-class>servlet.FileEditServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>FileEditServlet</servlet-name> 
    <url-pattern>/FES</url-pattern> 
</servlet-mapping> 

</web-app> 

サーバーからデータを取得してログイン機能を呼び出すボタンを押すと、mainContrllerの関数が呼び出され、出力は空になります。私は、応答がないように警告が空であることを意味します。

また、コンソールには何もありませんが、2つの言葉: "test test" 私のコードでは見つけることができません。

+0

'xmlHttpReq.status'の値は? –

+0

200、それはラインに来て、それは警告をオフに設定...しかし、その空 – areola

+0

あなたのコンソールの 'の中でこの行'の行を見ることができますか? –

答えて

-2

なぜあなたのURLはhttp://localhost:8080/WEB-war/FESですか?私は私がコメントを追加するより明確かもしれないと思う答えにこれを入れます

http://localhost:8080/FileEditServlet/FES

+0

これを行うと、警告は一切発生しません – newbie

+0

WEB-warはプロジェクト名です..... FileEditServetはサーブレット名 – newbie

+0

あなたの設定はちょっと混乱します。 @WebServletアノテーションを使用している場合、web.xmlはオプションですが、別のURLパターンでサーブレットを再度定義します。 http://docs.oracle.com/javaee/7/api/javax/servlet/annotation/WebServlet.html –

0

に変更してみてください。

私はweb.xmlとjsの部分が問題を引き起こすべきではないと思います。そして、返す文字列test testはあなたのコードのどこかにあるはずです。あなたのプロジェクトでテキスト検索を行います(Eclipseを使用している場合)。

メソッドをHttpServletResponseから2回呼び出すと、問題が発生します。最初のストリームは、printlnのストリームに2番目の書き込みを行います。これらのうちの1つを削除しようとする可能性があります。ちょっとした例です:

@WebServlet("/FileEditServlet") 
public class FileEditServlet extends HttpServlet { 

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

    System.out.println("inside do POST"); 

    PrintWriter out = response.getWriter(); 
    out .getWriter().write("do something omg"); 

} 
関連する問題