2017-02-08 10 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, а выход пуст. Я имею в виду, что предупреждение пустое, так как ответа нет.

Кроме того, в консоли нет ничего, кроме двух слов: «test test» , которого я просто не могу найти в своем коде.

+0

Какова ценность 'xmlHttpReq.status'? –

+0

200, он подходит к линии, и он устанавливает предупреждение ... но его пустой – areola

+0

Вы можете увидеть эту строку 'inside do POST' в своей консоли вправо? –

ответ

-2

Почему ваш url is 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).

Проблема, однако, я думаю, это потому, что вы пытаетесь вызвать метод getWriter из HttpServletResponse дважды - первый делает println второй записи в поток. Вы можете попытаться удалить один из них. Вот несколько примеров:

@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"); 

}