下記のコードをご覧ください。
Hiromu46.java
java
1package servlet; 2 3public class Hiromu46 extends HttpServlet implements Serializable { 4 5private String name; 6private String id; 7private String password; 8 9protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 10 request.setCharacterEncoding("UTF-8"); 11 response.setContentType("text/html; charset=UTF-8"); 12 13 this.name = request.getParameter("name"); 14 this.id = request.getParameter("id"); 15 this.password = request.getParameter("password"); 16 17 Hiromu46 hiromu46 = new Hiromu46(); 18 request.setAttribute("user", hiromu46); 19 20 RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/lesson.jsp"); 21 dispatcher.forward(request, response); 22 } 23 24public String[] getUser() { 25 String[] user = new String[3]; 26 user[0] = this.name; 27 user[1] = this.id; 28 user[2] = this.password; 29 30 return user; 31 } 32}
getParameterで取得した値を各フィールドに格納しています。
そしてインスタンス化してsetAttributeに保存。
フォワードでJspを設定しています。
メソッド経由で取得するためにgetUserメソッド設定。
次にJspファイルです。
jsp/lesson.jsp
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 import="servlet.Hiromu46"%> 3 4 <% Hiromu46 hiromu46 = (Hiromu46)request.getAttribute("user"); %> 5 6<!DOCTYPE html> 7<html> 8<head> 9<meta charset="UTF-8"> 10<title>フォワードサンプル</title> 11</head> 12<body> 13 14 <% for(int i = 0; i < hiromu46.getUser().length; i++){ %> 15 16 <p><%= hiromu46.getUser()[i] %> </p><br> 17 18 <% } %> 19 20</body> 21</html>
保存したインスタンスをgetAttributeで取得。
キャストしてクラス型変数に格納しています。
そして、getUserを呼び出し、for文で回しています。
しかし結果はnullが出力されます。
解決したいこと
・入力した値を出力させる
試したこと
インスタンス化したメソッドとメソッドのみでコンソールに出力してみた。
java
1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 // TODO Auto-generated method stub 3 request.setCharacterEncoding("UTF-8"); 4 response.setContentType("text/html; charset=UTF-8"); 5 6 this.name = request.getParameter("name"); 7 this.id = request.getParameter("id"); 8 this.password = request.getParameter("password"); 9 10 Hiromu46 hiromu46 = new Hiromu46(); 11 request.setAttribute("user", hiromu46); 12 System.out.println(getUser()[0]); ←メソッドのみ 13 System.out.println(hiromu46.getUser()[0]); ←インスタンスとメソッド 14 15 RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/lesson.jsp"); 16 dispatcher.forward(request, response); 17 }
メソッドのみは入力値出力するが、インスタンスメソッドではnull出力になる。
知りたいこと
・インスタンス作成時の状態をnewするため、値入力する前の値が格納されているのか?
・入力した値をjspで出力するためにはどのように組めばいいのか?
回答1件
あなたの回答
tips
プレビュー