質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

1339閲覧

更新時のテキストボックスに期待する値が入ってこない

退会済みユーザー

退会済みユーザー

総合スコア0

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2019/08/23 01:05

Postgresqlのテーブル[t_composition]

IDcomposition
11:2
21:3
31:4

eclipseでpostgresqlのデータをJSP&ServletでブラウザでCRUDできるようにする
アプリケーションを作ってみているのですが
フォームの更新ボタンを押した際に「配合」テキストボックスに入ってくる値が画像赤丸
「model.Composition@6031aecc」(@から右の文字列は毎回変動している)のような値になってしまいます。
これを画像の青丸の文字列[1:3]のようにデータベースの値を表示させるにはどのようにすればよいのでしょうか?

イメージ説明

Controller

1package controller; 2 3import java.io.IOException; 4import java.util.List; 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 dao.CompositionDAO; 14import model.Composition; 15 16@WebServlet("/composition_main") 17public class Composition_Main extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 21 CompositionDAO dao=new CompositionDAO(); 22 String action=request.getParameter("action"); 23 if(action != null && action.equals("delete")){ 24 dao.deleteOne(Integer.parseInt(request.getParameter("com_id"))); 25 request.setAttribute("msg", "1件削除しました。"); 26 }else if(action != null && action.equals("update")){ 27 Composition c=dao.findOne(Integer.parseInt(request.getParameter("com_id"))); 28 request.setAttribute("composition", c); 29 request.setAttribute("title", "項目を編集してください。"); 30 } 31 List<Composition> list=dao.findAll(); 32 request.setAttribute("list", list); 33 RequestDispatcher rd= request.getRequestDispatcher("/WEB-INF/view/composition_main.jsp"); 34 rd.forward(request, response); 35 } 36 37 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 38 request.setCharacterEncoding("UTF-8"); 39 String c=request.getParameter("composition"); 40 if(c.isEmpty()){ 41 request.setAttribute("err","未記入の項目があります!"); 42 }else{ 43 CompositionDAO dao=new CompositionDAO(); 44 String com_id=request.getParameter("com_id"); 45 if(com_id != null){ 46 dao.updateOne(new Composition(Integer.parseInt(com_id),c)); 47 request.setAttribute("msg","1件更新しました。"); 48 }else{ 49 dao.insertOne(new Composition(c)); 50 request.setAttribute("msg","1件登録しました。"); 51 } 52 } 53 doGet(request,response); 54 } 55} 56

Dao

1package dao; 2 3import java.sql.Connection; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7import java.util.ArrayList; 8import java.util.List; 9 10import javax.naming.Context; 11import javax.naming.InitialContext; 12import javax.naming.NamingException; 13import javax.sql.DataSource; 14 15import model.Composition; 16 17public class CompositionDAO { 18 private Connection db; 19 private PreparedStatement ps; 20 private ResultSet rs; 21 22private void getConnection() throws NamingException, SQLException{ 23 Context context=new InitialContext(); 24 DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/jsp"); 25 this.db=ds.getConnection(); 26 } 27 private void disconnect(){ 28 try{ 29 if(rs != null){rs.close();} 30 if(ps != null){ps.close();} 31 if(db != null){db.close();} 32 }catch(SQLException e){ 33 e.printStackTrace(); 34 } 35 } 36 public List<Composition> findAll(){ 37 38 List<Composition> compositionList=new ArrayList<>(); 39 try { 40 this.getConnection(); 41 ps=db.prepareStatement("SELECT * FROM t_composition ORDER BY com_id"); 42 rs=ps.executeQuery(); 43 while(rs.next()){ 44 int Co_id=rs.getInt("com_id"); 45 String Composition=rs.getString("composition"); 46 Composition composition=new Composition(Co_id,Composition); 47 compositionList.add(composition); 48 } 49 } catch (SQLException e) { 50 e.printStackTrace(); 51 } catch (NamingException e) { 52 e.printStackTrace(); 53 }finally{ 54 this.disconnect(); 55 } 56 return compositionList; 57 } 58 public boolean insertOne(Composition composition){ 59 try { 60 this.getConnection(); 61 ps=db.prepareStatement("INSERT INTO t_composition(composition) VALUES(?)"); 62 ps.setString(1,composition.getComposition()); 63 int result=ps.executeUpdate(); 64 if(result != 1){ 65 return false; 66 } 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } catch (NamingException e) { 70 e.printStackTrace(); 71 }finally{ 72 this.disconnect(); 73 } 74 return true; 75 } 76 public Composition findOne(int com_id){ 77 Composition composition=null; 78 try{ 79 this.getConnection(); 80 ps=db.prepareStatement("SELECT * FROM t_composition WHERE com_id=?"); 81 ps.setInt(1, com_id); 82 rs=ps.executeQuery(); 83 if(rs.next()){ 84 String Composition=rs.getString("composition"); 85 composition=new Composition(com_id,Composition); 86 } 87 }catch (SQLException e) { 88 e.printStackTrace(); 89 } catch (NamingException e) { 90 e.printStackTrace(); 91 }finally{ 92 this.disconnect(); 93 } 94 return composition; 95 } 96 public boolean updateOne(Composition composition){ 97 try{ 98 this.getConnection(); 99 ps=db.prepareStatement("UPDATE t_composition SET composition=? WHERE com_id=?"); 100 ps.setString(1, composition.getComposition()); 101 ps.setInt(2, composition.getCom_id()); 102 int result=ps.executeUpdate(); 103 if(result != 1){ 104 return false; 105 } 106 }catch (SQLException e) { 107 e.printStackTrace(); 108 } catch (NamingException e) { 109 e.printStackTrace(); 110 }finally{ 111 this.disconnect(); 112 } 113 return true; 114 } 115 public boolean deleteOne(int com_id){ 116 try{ 117 this.getConnection(); 118 ps=db.prepareStatement("DELETE FROM t_composition WHERE com_id=?"); 119 ps.setInt(1, com_id); 120 int result=ps.executeUpdate(); 121 if(result != 1){ 122 return false; 123 } 124 }catch (SQLException e) { 125 e.printStackTrace(); 126 } catch (NamingException e) { 127 e.printStackTrace(); 128 }finally{ 129 this.disconnect(); 130 } 131 return true; 132 } 133}

Model

1package model; 2import java.io.Serializable; 3 4public class Composition implements Serializable{ 5 private int com_id; 6 private String composition; 7 public Composition(){} 8 public Composition(String composition){ 9 this.composition=composition; 10 } 11 public Composition(int com_id,String composition){ 12 this.composition=composition; 13 this.com_id=com_id; 14 } 15 16 public int getCom_id() { 17 return com_id; 18 } 19 public void setCom_id(int com_id) { 20 this.com_id = com_id; 21 } 22 public String getComposition() { 23 return composition; 24 } 25 public void setComposition(String composition) { 26 this.composition = composition; 27 } 28}

VIEW

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" import="model.*,java.util.*"%> 3<% 4List<Composition> list=(List<Composition>)request.getAttribute("list"); 5Composition composition=(Composition)request.getAttribute("composition"); 6String com_id=composition==null ? "":String.valueOf(composition.getCom_id()); 7String Composition=composition == null ? "":composition.getComposition(); 8String title=(String)request.getAttribute("title"); 9title=title==null? "登録してください。":title; 10String err=(String)request.getAttribute("err"); 11String msg=(String)request.getAttribute("msg"); 12%> 13<!DOCTYPE html> 14<html> 15<head> 16<meta charset="UTF-8"/> 17<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 18<!-- Bootstrap CSS --> 19<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> 20<title>Composition</title> 21</head> 22<body> 23<div class="container" style="margin-top:20px;"> 24<% if(err !=null){%> 25<div class="alert alert-danger" role="alert"> 26<%=err %> 27</div> 28<%} %> 29<% if(msg !=null){%> 30<div class="alert alert-success" role="alert"> 31<%=msg %> 32</div> 33<%} %> 34<p><%=title %></p> 35 36<form action="/KrnApl/composition_main" method="post" > 37 <div class="form-group"> 38 <label for="com_id">ID:</label> 39 <input type="number" id="com_id" name="com_id" class="form-control" style="width:200px;" value="<%=com_id%>"> 40 </div> 41 <div class="form-group"> 42 <label for="composition">配合:</label> 43 <input type="text" id="composition" name="composition" class="form-control" style="width:200px;" value="<%=composition%>"> 44 </div> 45 <%if(!com_id.isEmpty()) {%> 46 <input type="hidden" name="com_id" value="<%=com_id %>"> 47 <%} %> 48 <button type="submit" class="btn btn-primary"><%=com_id.isEmpty()?"登録":"更新" %></button> 49</form> 50 51<%if(list != null && list.size()>0){%> 52<table class="table table-striped mt-4"> 53<tr><th>ID</th><th>配合</th><th>編集</th></tr> 54<%for(Composition p:list) {%> 55<tr><td><%=p.getCom_id() %></td><th><%=p.getComposition() %></th> 56<td> 57<a href="/KrnApl/composition_main?action=update&com_id=<%=String.valueOf(p.getCom_id()) %>" class="btn btn-primary">更新</a> 58<a href="/KrnApl/composition_main?action=delete&com_id=<%=String.valueOf(p.getCom_id()) %>" class="btn btn-danger" onclick="return confirm('削除してよろしいですか?');">削除</a> 59</td> 60</tr> 61<%} %> 62</table> 63<%} %> 64</div> 65<script> 66var forms=document.getElementsByClassName("form-control"); 67var alerts=document.getElementsByClassName("alert"); 68for(var i=0;i<forms.length;i++){ 69 forms[i].addEventListener("focus",function(){ 70 for(var j=0;j<alerts.length;j++){ 71 alerts[j].style.display="none"; 72 } 73 }); 74} 75</script> 76</body> 77</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azuapricot

2019/08/23 01:14

行データから対象列がきちんと取得できてないよーな。デバッグして中身みましたか?
退会済みユーザー

退会済みユーザー

2019/08/23 01:50

デバッグの仕方もよくわからずやっていました。 ご指摘のとおり変数名を変えてデバッグしてみたら値が入っていました。
guest

回答1

0

ベストアンサー

Composition composition=(Composition)request.getAttribute("composition");

これをそのまま突っ込んでいるからと思います。

見た感じ下記を利用する必要があるのでは?

String Composition=composition == null ? "":composition.getComposition();

大文字小文字は別物です。
ただ、こういうミスが起きるのを防ぐべく、変数名はなるべく「何を持っているか」分かりやすい命名を心がけたほうが良いです。
前者は「composition_model」とするとかですね。

投稿2019/08/23 01:16

編集2019/08/23 01:25
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/23 01:50

ご指摘のとおり変数名でした。変数名を変えてやることで表示されるようになりました。
m.ts10806

2019/08/23 01:51

解決されたようで何よりです。
退会済みユーザー

退会済みユーザー

2019/08/23 04:22

大変助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問