Я хочу установить связь между функцией JQuery и сервлетом в tomcat.Связь JQuery и сервлетов с ajax
Servlet Код:
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");
}
}
Идентичность сервлета определяется в 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>
И следующий HTML содержит функцию JQuery :
Jquery код:
<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>
Я проверил сервлет с браузером, это нормально. Когда я попробовал приложение HTML/js, и я нажал кнопку, я получил в консоли eclipse сообщение, отображаемое командой System.out.println (getBody (запрос)); «POST Call», но я получил в браузере предупреждение об ошибке. Таким образом, функция ajax успешно успешно отправляет сообщение метода в сервлет, но сервлет не может вернуть ответ в браузер. Кажется, что в сервлете проблема. Может кто-то мне помочь, пожалуйста?
ответ пожалуйста !!! –
Если он показывает «POST Call», могут возникнуть проблемы в 'data:« POST Call »,' in ajax. Также проверьте вкладку сети для ответа и заголовка, если вы используете браузер Chrome. – Arun
Я пробовал с firefox и chrome, и я получил то же предупреждение об ошибке. Но в chrome я получил также это сообщение об ошибке, когда я нажимаю кнопку: . XMLHttpRequest не может загрузить http: // localhost: 8080/test/toto. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Поэтому исходный 'null' не допускается. –