解説動画
今回は、Listインターフェースなのに、追加・削除ができないリストを見てみます。
よく使うリストですが、追加や削除すると例外が発生する場合があります。
■動画はこちら
■Youtube版の解説で使用しているソースコード
動画と一緒にこちらも参考にどうぞ。
サーブレット
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package yurufuwa.prog.sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.ServletException; import jakarta.servlet.ServletInputStream; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class Sv11 extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //JSON受信 String json = null; try(ServletInputStream sis = req.getInputStream(); InputStreamReader isr = new InputStreamReader(sis,"UTF-8"); BufferedReader br = new BufferedReader(isr);){ StringBuilder sb = new StringBuilder(); String s = null; while((s = br.readLine()) != null) { sb.append(s); } json = sb.toString(); } String returnStr = null; try { //JSONをPrefオブジェクトに変換 ObjectMapper om = new ObjectMapper(); Pref pref = om.readValue(json, Pref.class); //PrefオブジェクトをJSONに戻す returnStr = om.writeValueAsString(pref); } catch (Exception e) { e.printStackTrace(); } //解析結果の文字列を返す resp.setContentType("application/json"); resp.getWriter().append(returnStr); } } |
都道府県のレコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package yurufuwa.prog.sample; public class Pref { private String kenCode = null; private String kenName = null; private String yomigana = null; public String getKenCode() { return kenCode; } public void setKenCode(String kenCode) { this.kenCode = kenCode; } public String getKenName() { return kenName; } public void setKenName(String kenName) { this.kenName = kenName; } public String getYomigana() { return yomigana; } public void setYomigana(String yomigana) { this.yomigana = yomigana; } } |
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0"> <display-name>testWeb</display-name> <servlet> <description></description> <display-name>Sv11</display-name> <servlet-name>Sv11</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv11</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sv11</servlet-name> <url-pattern>/sv11</url-pattern> </servlet-mapping> </web-app> |
HTML&JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSON</title> <script> <!-- function input(){ //フォームデータを取得 const kenCode = document.getElementById("txtKenCode").value; const kenName = document.getElementById("txtKenName").value; const yomigana = document.getElementById("txtYomigana").value; //JSONを作成 const data = { "kenCode" : kenCode, "kenName" : kenName, "yomigana" : yomigana, }; //リクエストの送信 const request = new XMLHttpRequest(); request.open("POST", "./sv11", true); request.onreadystatechange = function() { if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { //レスポンスをテキストエリアに表示 document.getElementById("txtResult").value = request.responseText; } } request.send(JSON.stringify(data)); } --> </script> </head> <body> <form id="frm"> <h3>入力</h3> <input type="text" id="txtKenCode" name="txtKenCode" value="01" /> <input type="text" id="txtKenName" name="txtKenName" value="北海道" /> <input type="text" id="txtYomigana" name="txtYomigana" value="ほっかいどう" /> <button type="button" id="btn" name="btn" onclick="input()">送信</button> <h3>結果</h3> <textarea id="txtResult" cols="80" rows="5"></textarea> </form> </body> </html> |