現在作成している標記のプログラムがうまく動作しません。
ところどころおかしい所(mapperが二か所ある、誤入力エラー処理をしていない等)があるかとは思いますが、とりあえず動作する状況までもっていきたいです。
・ここが原因だと思うよ
・このようにしたら確認できるんじゃないか
・このサイト見たらいいよ
等、どうか知恵をお貸しください。
考えている流れ↓
0. 生年月日を8桁入力(例)20200826)して計算ボタンをクリック
0. servletに接続(パラメータに生年月日)
0. パラメータから年月日を取得しNenreiに引数として渡す
0. 引数をもとに計算した値をreturn
0. jspのタグに反映
NenreiJSP
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>Insert title here</title> 8</head> 9<body> 10<input type="text" id="year"><br> 11<input type="button" id="button" value="計算"><br> 12<input type="text" id="age"> 13<script type="text/javascript" src="Nenrei.js"></script> 14<script type="text/javascript"> 15</script> 16</body> 17</html>
Nenrei
1 2$(function() { 3 4 $('#button').click(function() { 5 $.getJSON('/ApiTest/NenreiServlet?', 6 { 7 year: $('#year').val() 8 } 9 ) 10 11 .done(function(data) { 12 if (data.results) { 13 var result = data.results[0]; 14 $('#age').val(result."age"); 15 } 16 }); 17 }); 18}); 19
Nenrei
1package Test; 2 3import java.util.Calendar; 4 5import com.fasterxml.jackson.core.JsonProcessingException; 6import com.fasterxml.jackson.databind.ObjectMapper; 7 8public class Nenrei { 9 public String AGE(String year, String month, String day) throws JsonProcessingException { 10 11 int Year = Integer.parseInt(year); 12 int Month = InteNger.parseInt(month); 13 int Day = Integer.parseInt(day); 14 15 //現在の年月日 16 Calendar calendar = Calendar.getInstance(); 17 int yearToday = calendar.get(Calendar.YEAR); 18 int monthToday = calendar.get(Calendar.MONTH); 19 int dayToday = calendar.get(Calendar.DAY_OF_MONTH); 20 21 //年齢を計算 22 int age; 23 age = yearToday - Year; 24 if (monthToday < Month) { 25 --age; 26 } else if (monthToday == Month) { 27 if (dayToday < Day) { 28 29 --age; 30 } 31 } 32 33 ObjectMapper mapper = new ObjectMapper(); 34 String json = mapper.writeValueAsString(age); 35 36 return json; 37 } 38} 39
NenreiServlet
1package Test; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12import com.fasterxml.jackson.databind.ObjectMapper; 13 14@WebServlet("/NenreiServlet") 15public class NenreiServlet extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 public void doGet(HttpServletRequest request, HttpServletResponse response) 19 throws ServletException, IOException{ 20 21 String Year = request.getParameter("year"); 22 23 String year = Year.substring(0,4); 24 String month = Year.substring(4,6); 25 String day = Year.substring(6); 26 27 Nenrei nenrei = new Nenrei(); 28 String age = nenrei.AGE(year, month, day); 29 30 JSON Json = new JSON(); 31 Json.age = age; 32 33 ObjectMapper mapper = new ObjectMapper(); 34 String json = mapper.writeValueAsString(Json); 35 36 response.setContentType("application/json"); 37 response.setHeader("Cache-Control", "nocache"); 38 response.setCharacterEncoding("utf-8"); 39 40 // JSONを戻す 41 PrintWriter out = response.getWriter(); 42 out.print(json); 43 44 } 45} 46
JSON
1package Test; 2 3public class JSON { 4 public String age; 5 6 @Override 7 public String toString() { 8 return "JSON [age=" + age +"]"; 9 } 10} 11
追記
jspを実行し、生年月日を入力、計算ボタンをクリックしても処理が進みません。
eclipse,tomcatを使用しているのですが、デバックモードで実行しても処理が動いていないので何も確認できていません。デバッグタグには<終了しました>とだけあります。
追記
javascriptが現在↓このようになっています。相変わらず動作はしません。
Nenrei
1 2 3 document.getElementById("button").click(function() { 4 var request = new XMLHttpRequest(); 5 6 var year = document.getElementById("year"); 7 request.open('GET','http://localhost:8080/ApiTest/NenreiServlet?year=' + year); 8 request.responseType = 'json'; 9 10 request.onload = function (){ 11 var data = this.response; 12 console.log(data); 13 } 14 request.send(); 15 }); 16
回答1件
あなたの回答
tips
プレビュー