前提・実現したいこと
①のBlogservlet.javaから、④MySQL(testDB2)のデータを呼び出して、②のDTO.javaに格納。
⇒Blogservletから、③のNewFile.jspへDTOのデータをforwardして、NewFile側で表示したいのですが、うまくいきません。
初心者で見当外れなことをしていたら申し訳ないのですが、どなたか解決策をご教示頂けますと幸いです。
どうか宜しくお願い致します。
発生している問題・エラーメッセージ
value = null
①Blogservlet.java
java
1package blogservlet; 2 3import java.io.IOException; 4import java.sql.Connection; 5import java.sql.Driver; 6import java.sql.DriverManager; 7import java.sql.ResultSet; 8import java.sql.Statement; 9import java.util.ArrayList; 10import java.util.List; 11import java.util.Properties; 12 13import javax.servlet.RequestDispatcher; 14import javax.servlet.ServletContext; 15import javax.servlet.ServletException; 16import javax.servlet.annotation.WebServlet; 17import javax.servlet.http.HttpServlet; 18import javax.servlet.http.HttpServletRequest; 19import javax.servlet.http.HttpServletResponse; 20import javax.servlet.http.HttpSession; 21 22import jp.dendai.blogDTO; 23 24/** 25 * Servlet implementation class Blogservlet 26 */ 27@WebServlet("/Blogservlet") 28public class Blogservlet extends HttpServlet { 29 private static final long serialVersionUID = 1L; 30 /** 31 * @Resource(name = "jdbc/") 32 * @see HttpServlet#HttpServlet() 33 */ 34 35 /** 36 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 37 */ 38 39 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 40 //DBからデータ取得 41 getDB(request); 42 43 response.setCharacterEncoding("UTF-8"); 44 45 ServletContext context = this.getServletContext(); 46 RequestDispatcher dispatcher = context.getRequestDispatcher("/WEB-INF/NewFile.jsp"); 47 dispatcher.forward(request, response); 48 } 49 50 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 51 // TODO Auto-generated method stub 52 doGet(request, response); 53 } 54 55 private void getDB(HttpServletRequest req) { 56 try { 57 Connection con = null; 58 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb2?serverTimezone=JST","bloguest", "blog"); 59 System.out.println("MySQLに接続できました。"); 60 Statement stm = con.createStatement(); 61 String sql = "select * from prefectures"; 62 ResultSet rs = stm.executeQuery(sql); 63 List<blogDTO> blog_list = new ArrayList<blogDTO>(); 64 65 while(rs.next()){ 66 int id = rs.getInt("id"); 67 String name = rs.getString("name"); 68 String population = rs.getString("population"); 69 blogDTO blogDTO = new blogDTO(id, name, population); 70 blog_list.add(blogDTO); 71 72 73 //この時点では、データの取得ができている。 74 System.out.println(id); 75 req.setAttribute("blog_list",blog_list); 76 } 77 rs.close(); 78 stm.close(); 79 con.close(); 80 } 81 catch (Exception e) { 82 e.printStackTrace(); 83 } finally { 84 } 85 } 86}
②blogDTO.java
java
1package jp.dendai; 2 3import java.io.Serializable; 4 5public class blogDTO { 6 private int id; 7 private String name; 8 private String population; 9 10 public blogDTO() { 11 12 } 13 14 public blogDTO(int id,String name,String population) { 15 this.id = id; 16 this.name = name; 17 this.population = population; 18 } 19 20 public int getId() { 21 return this.id; 22 } 23 24 public void setId(int id) { 25 this.id = id; 26 } 27 28 public String getName() { 29 return this.name; 30 } 31 32 public void setName(String name) { 33 this.name = name; 34 } 35 36 public String getPopulation() { 37 return this.population; 38 } 39 40 public void setPopulation(String population) { 41 this.population = population; 42 } 43 44}
③NewFile.jsp
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4<%@ page import="jp.dendai.blogDTO"%> 5<%@ page import="java.util.List"%> 6<% 7 //ここでリクエストスコープを受け取る 8 //getAttributeメソッド 9 //→追加した属性を取り出す 10###修正箇所### 11 List<blogDTO> blog_list = (List<blogDTO>) request.getAttribute("blog_list"); 12%> 13 14 15<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 16<html> 17<head> 18<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 19<title>Sample01</title> 20</head> 21<body> 22###修正箇所### 23value = <%= request.getAttribute("blog_list") %> 24 25 26</body> 27</html>
④MySQLからとってきているデータ
id name population 5 宮城県 961768
補足情報(FW/ツールのバージョンなど)
<実行環境>
Widows 10 Home
Eclipse_2019-06 (4.12.0)
MySQL 8.0.17
apache-tomcat-8.5.45