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

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

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

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

1回答

11285閲覧

サーブレットからの値(配列)をjspで受け取りたい

kokok

総合スコア145

JSP

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2019/09/04 01:28

編集2019/09/04 01:57

html

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ page import="java.util.ArrayList"%> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>Insert title here</title> 9</head> 10<body> 11<% userlist = request.getAttribute("userlist");%> 12<%for(String user : userlist){ %> 13<% } %> 14</body> 15</html>

java

1package servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 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.DBIO; 14 15/** 16 * Servlet implementation class Userlist 17 */ 18@WebServlet("/Userlist") 19public class Userlist extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 /** 23 * @see HttpServlet#HttpServlet() 24 */ 25 public Userlist() { 26 super(); 27 // TODO Auto-generated constructor stub 28 } 29 30 31 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 33 request.setCharacterEncoding("UTF-8"); 34 35 36 if(request.getParameter("button1") != null) { 37 DBIO dbio = new DBIO(); 38 ArrayList<String> userlist = dbio.getUser(); 39 40 request.setAttribute("userlist", userlist); 41 42 RequestDispatcher dispatcher = request.getRequestDispatcher("/userlist.jsp"); 43 dispatcher.forward(request, response); 44 } 45 } 46 47} 48 49

java

1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9 10public class DBIO { 11 12 private static final String DBNAME = "jdbc:mysql://localhost:3306/webkensyu?useUnicode =true&characterEncoding=utf8"; 13 private static final String DBUSER = "user"; 14 private static final String DBPASS = "pass"; 15 private Connection conn; 16 17 18 public DBIO(){ 19 this.connect(); 20} 21 22 public void connect() { 23 try { 24 25 Class.forName("com.mysql.jdbc.Driver"); 26 27 conn = DriverManager.getConnection(DBNAME,DBUSER,DBPASS); 28 29 30 } catch(SQLException e) { 31 32 e.printStackTrace(); 33 34 }catch(ClassNotFoundException e) { 35 36 e.printStackTrace(); 37 38 } 39 } 40 41 42 //ユーザー一覧表示 43 public ArrayList<String> getUser(){ 44 45 ArrayList<String> result = new ArrayList<String>(); 46 47 try { 48 this.connect(); 49 50 String sql ="SELECT user_name FROM users"; 51 PreparedStatement pstmt = conn.prepareStatement(sql); 52 ResultSet rs = pstmt.executeQuery(); 53 54 while(rs.next()) { 55 56 result.add(rs.getString("user_name")); 57 } 58 }catch(SQLException e) { 59 60 e.printStackTrace(); 61 }finally { 62 63 this.close(); 64 } 65 66 67 return result; 68 } 69 70 71 //ログインで入力されたユーザー名、パスワードの確認 72 public boolean Authentication(String name, String pass) { 73 try { 74 String sql ="SELECT user_name,password FROM users WHERE user_name = ? && password = ? "; 75 PreparedStatement pstmt = conn.prepareStatement(sql); 76 pstmt.setString(1, name); 77 pstmt.setString(2, pass); 78 ResultSet rs = pstmt.executeQuery(); 79 80 if(rs != null) { 81 return true; 82 }else { 83 return false; 84 } 85 }catch (SQLException e) { 86 87 e.printStackTrace(); 88 }finally { 89 90 this.close(); 91 } 92 return false; 93 } 94 95 96/* 97 public ArrayList<String> getUserNames(String id){ 98 ArrayList<String> result = new ArrayList<String>(); 99 try { 100 this.connect(); 101 String sql = "SELECT user_name, password FROM users WHERE user_id=?"; 102 103 PreparedStatement pstmt = conn.prepareStatement(sql); 104 pstmt.setString(1, id); 105 ResultSet rs = pstmt.executeQuery(); 106 107 while(rs.next()) { 108 109 result.add(rs.getString("user_name")); 110 result.add(rs.getString("password")); 111 } 112 } 113 catch (SQLException e) { 114 115 e.printStackTrace(); 116 }finally { 117 this.close(); 118 } 119 return result; 120 } 121*/ 122 public void close() { 123 124 if(conn != null) { 125 try { 126 conn.close(); 127 }catch(SQLException e) { 128 e.printStackTrace(); 129 } 130 } 131 } 132} 133

1.サーブレットで加工した値(配列)をjspでもらいたいのですが、上手くいきません。アドバイス頂けると助かります。

2. if(request.getParameter("button1") != null) {
htmlのボタンが押された場合にサーブレットで処理したいのですが、このような書き方で大丈夫でしょうか?(間違っていれば指摘お願い致します)

3.jsp一つに対してサーブレットを一つ作っても大丈夫でしょうか?(サーブレットは何個も作成しても大丈夫か)

お願いします。

--追記--

<%ArrayList<String> userlist = (ArrayList) request.getAttribute("userlist");%> <%for(String user : userlist){ %> <%=user};%>

<%=user};%>

ここのコードで下記のエラーが出てしまいます。

この行で見つかった複数の注釈:
- 構文エラーがあります。")" を挿入して MethodInvocation を完了し
てください
- 構文エラーがあります。";" を挿入して Statement を完了してください
- 構文エラーがあります。")" を挿入して MethodInvocation を完了し
てください
- 構文エラーがあります。";" を挿入して Statement を完了してください

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

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

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

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

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

m.ts10806

2019/09/04 01:47

>上手くいきません こちらは他者にはなにも伝わらない表現となります。具体的に試したことを調べたこと、起きている現象、エラーメッセージを記載してください
tetutetu

2019/09/04 02:08

if文等では使ってないようなのでわざわざ言うほどのことでもない気はしますが for文の閉じに;は要りません。 エラーの対処については回答に追記しました。
kokok

2019/09/04 02:12

すいません、簡単なミスで質問してしまい。 ありがとうございます。
guest

回答1

0

ベストアンサー

とりあえず
1:userlist の型が宣言されていないためでは

3:規定のある実務でなければどんな形になっても構わないと思います
まずは動作の流れを見て理解できるようになる(+書けるようになる)ことが第一かと。
Javaサーブレット 一つのサーブレットで複数の画面遷移
のように、フレームワーク無しでも動作を分けること自体は可能です。

2については、このサーブレットに値を渡すhtmlも記載した方が回答はつきやすいかと。

現状見た限りですと
request.getParameter("button1") がnullになるケースが存在しないのであれば判定自体不要になりますし
nullになる可能性があるのであればnullだった場合エラーページへ遷移する処理は必要になります。

<%=変数名%> は変数の中身をhtmlに出力するためのものです。

java

1<%ArrayList<String> userlist = (ArrayList) request.getAttribute("userlist");%> 2<%for(String user : userlist){ %> 3<%=user%> 4<% } %>

ではどうでしょう。

投稿2019/09/04 01:49

編集2019/09/04 02:05
tetutetu

総合スコア419

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問