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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

解決済

インスタンス化をした際のメソッド利用で実行時にnulが表示される

hiiro46
hiiro46

総合スコア21

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

1回答

0評価

0クリップ

342閲覧

投稿2022/02/16 01:02

編集2022/02/16 13:49

下記のコードをご覧ください。

Hiromu46.java

java

package servlet; public class Hiromu46 extends HttpServlet implements Serializable { private String name; private String id; private String password; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); this.name = request.getParameter("name"); this.id = request.getParameter("id"); this.password = request.getParameter("password"); Hiromu46 hiromu46 = new Hiromu46(); request.setAttribute("user", hiromu46); RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/lesson.jsp"); dispatcher.forward(request, response); } public String[] getUser() { String[] user = new String[3]; user[0] = this.name; user[1] = this.id; user[2] = this.password; return user; } }

getParameterで取得した値を各フィールドに格納しています。
そしてインスタンス化してsetAttributeに保存。
フォワードでJspを設定しています。
メソッド経由で取得するためにgetUserメソッド設定。

次にJspファイルです。

jsp/lesson.jsp

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" import="servlet.Hiromu46"%> <% Hiromu46 hiromu46 = (Hiromu46)request.getAttribute("user"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>フォワードサンプル</title> </head> <body> <% for(int i = 0; i < hiromu46.getUser().length; i++){ %> <p><%= hiromu46.getUser()[i] %> </p><br> <% } %> </body> </html>

保存したインスタンスをgetAttributeで取得。
キャストしてクラス型変数に格納しています。
そして、getUserを呼び出し、for文で回しています。
しかし結果はnullが出力されます。


解決したいこと

・入力した値を出力させる


試したこと

インスタンス化したメソッドとメソッドのみでコンソールに出力してみた。

java

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); this.name = request.getParameter("name"); this.id = request.getParameter("id"); this.password = request.getParameter("password"); Hiromu46 hiromu46 = new Hiromu46(); request.setAttribute("user", hiromu46); System.out.println(getUser()[0]);   ←メソッドのみ System.out.println(hiromu46.getUser()[0]);   ←インスタンスとメソッド RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/lesson.jsp"); dispatcher.forward(request, response); }

メソッドのみは入力値出力するが、インスタンスメソッドではnull出力になる。


知りたいこと

・インスタンス作成時の状態をnewするため、値入力する前の値が格納されているのか?
・入力した値をjspで出力するためにはどのように組めばいいのか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2022/02/16 02:35

コードのマークダウンでファイル名を書かれている個所には言語名( java や jsp ) をお書きください。 ファイル名等はマークダウン外に書いてください。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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