Postgresqlのテーブル[t_composition]
ID | composition |
---|---|
1 | 1:2 |
2 | 1:3 |
3 | 1: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>
回答1件
あなたの回答
tips
プレビュー