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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

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

servlet

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

1300閲覧

Search.jspで検索してSearchServlet.javaを経由してSearchResult.jspで出力

hyac

総合スコア6

JSP

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

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

servlet

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2020/05/26 05:15

前提・実現したいこと

DBの情報を検索して結果を出力

発生している問題・エラーメッセージ

Search.jspでDBの中身を検索してSearchServlet.javaを経由してSearchResult.jspで出力をしたいのですがSearch.jspで検索したら、SearchServletでnullと出てしまいどこが違うのかが分かりません。
指摘お願いします。

該当のソースコード

jsp

1Search.jsp 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>Insert title here</title> 9</head> 10<body> 11 <% String id=(String)request.getAttribute("goods_name"); %> 12 13 <form action="./SearchServlet" method="POST"> 14 15 16 <div>検索したい名前を入力してください?</div> 17 <div> 18 <input type="text" name="name" maxlength="20" size="20"> 19 </div> 20 <input type="submit" value="検索"> 21 22 23 24 25 </form> 26</body> 27</html>

java

1import java.io.IOException; 2import java.sql.Connection; 3import java.sql.DriverManager; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13 14@WebServlet("/SearchServlet") 15public class SearchServlet extends HttpServlet { 16 17 @Override 18 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, 19 IOException { 20 21 22 req.setCharacterEncoding("UTF-8"); 23 String move = "SearchResult.jsp"; 24 25 try { 26 //JDBCドライバの読込 27 Class.forName("com.mysql.cj.jdbc.Driver"); 28 //Connectionの生成 29 Connection con = DriverManager.getConnection( 30 "jdbc:mysql://127.0.0.1:3306/techdb?serverTimezone=JST", 31 "seed", 32 "Tech_123"); 33 String sql = "SELECT * FROM goods"; 34 //Statementの生成 35 PreparedStatement stmt = con.prepareStatement(sql); 36 Integer id; 37 String name = null; 38 //SQLの実行 39 ResultSet rs = stmt.executeQuery(); 40 while (rs.next()) { 41 42 } 43 44 //moveが移動先 45 req.getRequestDispatcher(move).forward(req, resp); 46 req.setAttribute("data",name ); 47 48 //Statement,Connectionの切断 49 stmt.close(); 50 con.close(); 51 52 53 54 } catch (ClassNotFoundException e) { 55 System.out.println("ドライバを読み込めませんでした"+e); 56 } catch (SQLException e) { 57 System.out.println("データベース接続エラー"+e); 58 } 59 } 60 61} 62

jsp

1Result.jsp 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>Insert title here</title> 9</head> 10<body> 11 <%= request.getAttribute("data") %> 12</body> 13</html> 14 15

試したこと

nullと出る前はEclipseのコンソールにjava.sql.SQLSyntaxErrorException Table 'techdb.goods_table' doesn't exist
と出てましたけどDB連携を初めからやり治りました。

補足情報(FW/ツールのバージョンなど)

JDK8Eclipse(Pleiades2018-9)

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

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

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

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

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

guest

回答1

0

ベストアンサー

  1. name は常に null である(設定していない)
  2. jsp の処理をした後に リクエストスコープに設定している。

など null が帰る条件がそろってるから

投稿2020/05/26 11:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問