現在Ajaxの勉強のため簡単なWEBアプリを作成しています。
そのため、初歩的な内容でしたら申し訳ございません。
WEBサーバからAPIにAjaxとJavaServletを使いデータを転送し、
画面にレスポンスとしてJSONを表示したいのですが、
APIサーバに接続&データのPOSTができません。
WEBサーバとAPIは同じローカルサーバ上にあるので
Ajaxで接続できないということはないので(簡単なhtmlを作り接続できることは確認済み)、
私のソースが間違っているのは分かるのですが、
どこが原因で接続できないのかわかりません。
2日間ぐらい調べて試したりしたのですが、解決できませんでした。
大雑把な質問で申し訳ないのですが、ご教授していただけると助かります。
追記
javaソースのprotected void doPost(HttpServletRequest...の部分をprotected → publicに変更したところコンソールでDataの内容は出力できましたが、Ajaxはfailのままでした。
console.log
1failのconsole.logの内容 2POST http://localhost:8080/API/Connect 404 3send @jquery.min.js:2 4ajax @jquery.min.js:2 5connect @ApiConnect.jsp:16 6onclick @ApiConnect.jsp:42
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>接続</title> 8 9 10<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 11<script> 12var AppUrl = "/API/Connect"; 13var Data = {DATA1:"1",DATA2:"2",DATA3:"3"}; 14 function connect() { 15 16 17 $.ajax({ 18 url: AppUrl, 19 type:"post", 20 data: Data, 21 }).done(function(date){ 22 Data1 = data["Data1"]; 23 Data2 = data["Data2"]; 24 Data3= data["Data3"]; 25 console.log("接続成功"); 26 }) 27 .fail(function(XMLHttpRequest, textStatus, errorThrown){ 28 console.log("XMLHttpRequest : " + XMLHttpRequest.status); 29 console.log("textStatus : " + textStatus); 30 console.log("errorThrown : " + errorThrown.message); 31 console.log("失敗"); 32 }); 33 } 34 35</script> 36</head> 37<body> 38 39 <div>接続画面</div> 40 41 <input type="button" id = "btn" value="接続" onclick="connect()"> 42 43</body> 44</html>
JAVA
1import java.io.IOException; 2import java.io.PrintWriter; 3import java.util.HashMap; 4import java.util.Map; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13import com.fasterxml.jackson.databind.ObjectMapper; 14 15/** 16 * Servlet implementation class Connect 17 */ 18@WebServlet("/API/Connect") 19public class Connect extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 /** 23 * @see HttpServlet#HttpServlet() 24 */ 25 public Connect() { 26 super(); 27 // TODO Auto-generated constructor stub 28 } 29 30 31 32 /** 33 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 34 */ 35 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 36 // TODO Auto-generated method stub 37 RequestDispatcher dispatcher = request.getRequestDispatcher("http://localhost:8080/Web/WebContent/ApiConnect.jsp"); 38 dispatcher.forward(request, response); 39 40 41 try { 42 request.setCharacterEncoding("utf-8"); 43 String res1= request.getParameter("DATA1"); 44 String res2 = request.getParameter("DATA2"); 45 String res3 = request.getParameter("DATA3"); 46 47 Map<String, String> mapMsg = new HashMap<String, String>(); 48 49 //追加 50 mapMsg.put("Data1", res1); 51 mapMsg.put("Data2", res2); 52 mapMsg.put("Data3", res3); 53 54 //マッパ(JSON <-> Map, List) 55 ObjectMapper mapper = new ObjectMapper(); 56 57 //json文字列 58 String jsonStr = mapper.writeValueAsString(mapMsg); //list, map 59 60 //ヘッダ設定 61 response.setContentType("application/json;charset=UTF-8"); //JSON形式, UTF-8 62 63 //pwオブジェクト 64 PrintWriter pw = response.getWriter(); 65 66 pw.print(jsonStr); 67 68 //クローズ 69 pw.close(); 70 71 } catch(Exception e) { 72 e.printStackTrace(); 73 } 74 75 76 } 77}
あなたの回答
tips
プレビュー