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

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

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

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

Java

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

Eclipse

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

Q&A

1回答

6590閲覧

JSPファイル内で構文エラーが起きているが、原因が見つけられない。

mayuphoo

総合スコア13

JSP

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

Java

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

Eclipse

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

0グッド

1クリップ

投稿2021/06/15 13:40

編集2021/06/15 13:41

前提・実現したいこと

現在、HTMLファイルの”確認”ボタンを押すと、DBに保存されたデータが一覧表示されるという、Javaの簡単な動的Webアプリケーションの作成をしています。

例外が起こっているのは、list.jsp という、レスポンスとしてテーブルのデータが一覧表示される画面のファイルです。
後半部分から赤の波線がついてしまい、構文エラー(「処理が閉じられていません」が発生してしまっているのですが、1字1句見返しても原因が見つからず、困っている状況です。
イメージ説明

どなたかご教授いただけると幸いです。
宜しくお願いいたします。

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

処理命令が閉じられていません

該当のソースコード

#####input.html(確認ボタンを押すページ)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>ユーザー確認</h1> <p>登録されているユーザーの一覧を表示します</p> <form action="InputServlet"> <input type="submit" value="表示"> </form> </body> </html>

#####InputServlet.java(サーブレットファイル)

package mvc; import java.io.IOException; import java.util.ArrayList; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/InputServlet") public class InputServlet extends HttpServlet { protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //モデルにユーザ情報の取得を指示 HumanManager humanmanager = new HumanManager(); ArrayList<Human> list = humanmanager.get(); //ビューに取得した値をセット。 request.setAttribute("list", list); RequestDispatcher rd = request.getRequestDispatcher("list.jsp"); rd.forward(request, response); } }

#####Human.java(name, ageの情報を保持しておくクラス)

package mvc; ; public class Human { private String name; private int age; public Human(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }

#####HumanManager.java(DBとの接続を行うDAOクラス)

package mvc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class HumanManager { private Connection con = null; private PreparedStatement ps = null; private ResultSet rs = null; //*ユーザー情報取得機能↓↓ public ArrayList<Human> get(){ ArrayList<Human> list = new ArrayList<Human>(); //リストの定義 try { //①JDBCドライバへの接続 Class.forName("com.mysql.cj.jdbc.Driver"); //②dbへの接続 String url = "jdbc:mysql://localhost/user"; String user = "root"; String password = "ma12yu26"; con = DriverManager.getConnection(url, user, password); //③ステートメントオブジェクトの取得 String sql = "SELECT * FROM user_list"; ps = con.prepareStatement(sql); //④SQLの実行 rs = ps.executeQuery(); //Queryは問い合わせの意。 //⑤結果の取得 while(rs.next()) { String name = rs.getString("name"); int age = rs.getInt("age"); Human human = new Human(name, age); list.add(human); } } catch(ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { //⑥dbとの接続を終了 try { if (con != null) { con.close(); } if (ps != null) { ps.close(); } if (rs != null) { rs.close(); } } catch(Exception e) { e.printStackTrace(); } } return list; } }

#####list.jsp(エラー有。レスポンスとして、DBのデータ一覧を表示するページ)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.ArrayList" %> <%@ page import="mvc.Human" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <p>現在のメンバー</p> <% ArrayList<Human> list = (ArrayList<Human>)request.getAttribute("list"); for (int i= 0; i < list.size(); i++) { Human human = list.get(i); %> <p><%= (i + 1) %>人目</p> //***この行の</p>から以下すべてに赤の波線「処理命令が閉じられていません」のエラーが出ています。*** <p>氏名:<%= human.getName() %></p> <p>年齢:<%= human.getAge() %></p> <% } %> </body> </html>

試したこと

・誤字の確認
・閉じタグがあるか確認
・ファイルをセーブし、最新の状態であることを確認

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

・開発環境は、Eclipseを用いています。
・DBは、MySQLを用いています。

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

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

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

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

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

m.ts10806

2021/06/15 19:41

実際に実行はしてみましたか? エディタ上(特にView)でエラーのように表示されていても実行上問題がないことは良くあります
m.ts10806

2021/06/15 19:45

ちなみに私の手持ちのeclipse(2020-12)では当該個所にエラー出てません。
dodox86

2021/06/15 23:57 編集

私も試してみましたが、赤線エラーは出ませんでした。別の部分で警告(黄色三角の"!")2ケ所。 Windows版 Eclipse IDE 2021-03(4.19.0) です。
guest

回答1

0

既に追記・修正依頼のコメントで複数人が状況が再現しないと仰っており、
Eclipse:2021-03 (4.19.0)で自分も試してみましたが、再現しませんでした。

なので、もしかすると修正したものが反映されていないのかもしれません。
一度プロジェクトから該当プロジェクトのクリーンを試してみてください。

投稿2021/06/17 01:10

K_3578

総合スコア1282

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問