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

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

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

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

Java

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

Eclipse

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

servlet

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

Q&A

解決済

1回答

15414閲覧

jspでのオブジェクトのキャストの仕方がわかりません

RyoM

総合スコア90

JSP

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

Java

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

Eclipse

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

servlet

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

0グッド

0クリップ

投稿2016/08/02 09:58

編集2016/08/02 13:49

###オブジェクトをキャストしたい
サーブレットで得た結果をjspで受け取り、表示したいのですがなかなかうまくいきません。お分かりの方がいらっしゃれば、何卒よろしくお願いいたします。

###元々発生していた例外レポート

HTTPステータス 500 - JSPのクラスをコンパイルできません: type 例外レポート メッセージ JSPのクラスをコンパイルできません: 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: /DB/select.jsp の中の19行目でエラーが発生しました Type mismatch: cannot convert from Object to List<Learning> 16: <TH>Address</TH> 17: </TR> 18: <% 19: List<Learning> list =/*(List<learning>)*/request.getAttribute("list"); 20: %> 21: 22: <c:forEach var="learning" items="${list}"> Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:490) org.apache.jasper.compiler.Compiler.compile(Compiler.java:379) org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) DB.SelectDb.doGet(SelectDb.java:79) javax.servlet.http.HttpServlet.service(HttpServlet.java:624) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) filter.EncodingFilter.doFilter(EncodingFilter.java:26)

###変化した例外レポート

java

1HTTPステータス 500 - An exception occurred processing JSP page /DB/select.jsp at line 26 2 3メッセージ An exception occurred processing JSP page /DB/select.jsp at line 26 4 5説明 The server encountered an internal error that prevented it from fulfilling this request. 6 7例外 8org.apache.jasper.JasperException: An exception occurred processing JSP page /DB/select.jsp at line 26 9 1023: 1124: <c:forEach var="learning" items="${list}"> 1225: <TR> 1326: <TD>${learning.id}</TD> 1427: <TD>${learning.name}</TD> 1528: <TD>${learning.address}</TD> 1629: </TR> 17 18 19Stacktrace: 20 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575) 21 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477) 22 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) 23 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) 24 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 25 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 26 DB.SelectDb.doGet(SelectDb.java:79) 27 javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 28 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 29 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 30 filter.EncodingFilter.doFilter(EncodingFilter.java:26) 31 32 33 34原因 35javax.el.PropertyNotFoundException: Property 'id' not readable on type DB.Learning 36 javax.el.BeanELResolver$BeanProperty.read(BeanELResolver.java:357) 37 javax.el.BeanELResolver$BeanProperty.access$000(BeanELResolver.java:305) 38 javax.el.BeanELResolver.getValue(BeanELResolver.java:97) 39 org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104) 40 org.apache.el.parser.AstValue.getValue(AstValue.java:184) 41 org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) 42 org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:950) 43 org.apache.jsp.DB.select_jsp._jspx_meth_c_005fforEach_005f0(select_jsp.java:160) 44 org.apache.jsp.DB.select_jsp._jspService(select_jsp.java:113) 45 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 46 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 47 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) 48 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) 49 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) 50 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 51 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 52 DB.SelectDb.doGet(SelectDb.java:79) 53 javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 54 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 55 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 56 filter.EncodingFilter.doFilter(EncodingFilter.java:26) 57 58

###該当のソースコード

java

1<% 2 List<Learning> list =(List<learning>)request.getAttribute("list"); 3%> 4

以下がソースの全文です。

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4<%@ page import="java.util.*, DB.Learning"%> 5<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6<html> 7<head> 8<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9<title>JSPとServletとデータベースの組み合わせ</title> 10</head> 11<body> 12<TABLE border="1"> 13 <TR> 14 <TH>CustomerId</TH> 15 <TH>CustomerName</TH> 16 <TH>Address</TH> 17 </TR> 18 <% 19 List<Learning> list =(List<learning>)request.getAttribute("list"); 20 %> 21 22 <c:forEach var="learning" items="${list}"> 23 <TR> 24 <TD>${learning.id}</TD> 25 <TD>${learning.name}</TD> 26 <TD>${learning.address}</TD> 27 </TR> 28 </c:forEach> 29 30 31</TABLE> 32</body> 33</html>

java

1package DB; 2 3import java.io.IOException; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6import java.sql.Statement; 7import java.util.ArrayList; 8import java.util.List; 9 10import javax.servlet.RequestDispatcher; 11import javax.servlet.ServletException; 12import javax.servlet.annotation.WebServlet; 13import javax.servlet.http.HttpServlet; 14import javax.servlet.http.HttpServletRequest; 15import javax.servlet.http.HttpServletResponse; 16 17import com.mysql.jdbc.Connection; 18 19import Dbsample.MySql; 20 21@WebServlet("/SelectDb") 22public class SelectDb extends HttpServlet 23{ 24 25 protected void doGet(HttpServletRequest request, 26 HttpServletResponse response) throws ServletException, IOException 27 { 28 String sql = "select * from customers"; 29 30 Connection con = null; 31 Statement smt = null; 32 33 try 34 { 35 // MySQLに接続 36 con = MySql.getConnection(); 37 smt = (Statement) con.createStatement(); 38 ResultSet rs =smt.executeQuery(sql); 39 40 List<Learning> list =new ArrayList<Learning>(); 41 42 while(rs.next()) 43 { 44 Learning learning = new Learning(); 45 learning.setId(rs.getInt("CustomerId")); 46 learning.setName(rs.getString("CustomerName")); 47 learning.setAddress(rs.getString("Address")); 48 49 list.add(learning); 50 } 51 request.setAttribute("list", list); 52 } 53 catch(SQLException e) 54 { 55 throw new ServletException(e); 56 } 57 finally 58 { 59 if(smt != null) 60 { 61 try 62 { 63 smt.close(); 64 } 65 catch(SQLException ignore) 66 {} 67 } 68 if(con != null) 69 { 70 try 71 { 72 con.close(); 73 } 74 catch(SQLException ignore) 75 {} 76 } 77 } 78 RequestDispatcher dispatcher =request.getRequestDispatcher("/DB/select.jsp"); 79 dispatcher.forward(request, response); 80 } 81 82}

java

1package DB; 2 3public class Learning 4{ 5 private int id; 6 private String name; 7 private String address; 8 9 public int getId() 10 { 11 return id; 12 } 13 public void setId(int id) 14 { 15 this.id =id; 16 } 17 18 public String getName() 19 { 20 return name; 21 } 22 public void setName(String name) 23 { 24 this.name =name; 25 } 26 27 public String getAddress() 28 { 29 return address; 30 } 31 public void setAddress(String address) 32 { 33 this.address =address; 34 } 35}

###補足情報(言語/FW/ツール等のバージョンなど)
eclisp 4.5
win10
jdk1.7
tomcat1.7

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

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

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

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

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

guest

回答1

0

ベストアンサー

大文字小文字の間違いでは?

Java

1List<Learning> list =(List<learning>)request.getAttribute("list"); 23List<Learning> list =(List<Learning>)request.getAttribute("list"); 4

投稿2016/08/02 10:48

編集2016/08/02 10:48
Mr_Roboto

総合スコア2208

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

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

RyoM

2016/08/02 11:21

回答ありがとうございます!! そこの誤字には気づいていませんでした。 そして、変えてみたんですが、次は方の安全性:objectから(List<learning>)への未検査キャストという注意印が出てきて、コンパイルは出来たものの上手くいきません。 この部分で何か他に何を変えればいいでしょうか?
Mr_Roboto

2016/08/02 11:25

警告ならとりあえず、無視しても大丈夫ですよ。 うまくいかないというのは、何がうまくいかないのですか? 戻り値がObject型だから出ると思いますが、どうやったら消えるのかなぁ・・・? ちょっとすぐには浮かびませんが、進められるなら進めてもいいのでは?
root_jp

2016/08/02 11:30 編集

それって、警告なだけで実行は普通にできると思うんですが、できませんか? 以下のようにすれば、警告を消すこともできるのではないでしょうか。 @SuppressWarnings("unchecked") List<Learning> list =(List<Learning>)request.getAttribute("list");
RyoM

2016/08/02 12:00

警告が発生するだけですので実行は出来たと思うんですが、なにか違う理由で例外レポートが発生してるみたいです。。。
RyoM

2016/08/02 12:02

ちなみに教えていただいたアノテーションで警告は消すことが出来ました! ありがとうございます!
Mr_Roboto

2016/08/02 12:05

自分でとりあえず調べてみて分からなければ、また新たな質問としてあげてください。 質問の内容が解決したらこの質問は閉じてくださいね。
Mr_Roboto

2016/08/02 13:52

ちなみに私は、JavaScriptで大文字小文字の違いを見つけるのに3日かかったことがあります w
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問