JQuery and servlet communication with ajax

I want to establish a connection between a jQuery function and a servlet in tomcat.

Servlet Code:

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



public class Test extends HttpServlet {
public static String getBody(HttpServletRequest request) throws IOException {

    String body = null;
    StringBuilder stringBuilder = new StringBuilder();
    BufferedReader bufferedReader = null;

    try {
        InputStream inputStream = request.getInputStream();
        if (inputStream != null) {
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            char[] charBuffer = new char[128];
            int bytesRead = -1;
            while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
                stringBuilder.append(charBuffer, 0, bytesRead);
            }
        } else {
            stringBuilder.append("");
        }
    } catch (IOException ex) {
        throw ex;
    } finally {
        if (bufferedReader != null) {
            try {
                bufferedReader.close();
            } catch (IOException ex) {
                throw ex;
            }
        }
    }
    body = stringBuilder.toString();
    return body;
}
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        System.out.println(getBody(request));
        out.println("Success Call Ajax POST");

      }
    public void doGet( HttpServletRequest request, HttpServletResponse
        response ) throws ServletException, IOException{
    response.setContentType("text/html");
    response.setCharacterEncoding( "UTF-8" );
    PrintWriter out = response.getWriter();
    out.println("Get Method");

  }

}

Servlet ID is defined in web.xml

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>Test</servlet-name>
    <servlet-class>com.servlets.Test</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/toto</url-pattern>
  </servlet-mapping>
</web-app>

And the following HTML contains a jQuery function:

JQuery code:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    function login(){  

      $.ajax({  
        type: "POST",  
        url: "http://localhost:8080/test/toto",  
        data: "POST Call",
        success: function(result){  
          alert("success call"+result);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) { 
            alert("Status: " + textStatus); alert("Error: " + errorThrown); 
        }                 
      });  
    }        
    </script>
    <title>My AJAX</title>
</head>
<body>
    <button type="button" onclick="login()">Click Me!</button>
</body>

I checked the servlet with the browser, this is great. When I tried the HTML / js application and I clicked the button, I received a message in the eclipse console displayed by the command System.out.println (getBody (request)); "POST Call", but I received an error warning in the browser. Thus, the ajax function successfully successfully sends the method message to the servlet, but the servlet cannot return the response to the browser. There seems to be a problem in the servlet. Can someone help me?

+4
source share
2 answers

doPost() :

response.setContentType("text/html"); 
response.setHeader("Access-Control-Allow-Origin", "*"); 

, Allow Origin

+2

.

Safari 8.0.3, No 'Access-Control-Allow-Origin' header is present Chrome Firefox.

Firefox:

: http://localhost:8080/toto. , CORS.

, web security , :

response.setHeader("Access-Control-Allow-Origin", your_domain);

0

All Articles