• ベストアンサー

【初心者質問】beanを使うときにパッケージ化しないといけないのか?

Linux(CentOS)をtelnetで操作して Tomcat+Apache+JDKでWebアプリケーションを作成しています。 初心者です。 特に困っていない(動作できた)のですが なぜなのか理解できないので、後学のためにご教示くださいませ。 jspでフォームに入力した情報を サーブレットで取得し、その情報をDB(Postgresql)にINSERT 登録結果画面としてjspで登録した情報を表示 ということをしたかったのですが、 その際、フォーム入力情報をbeanに入れて beanオブジェクトをrequest.setAttributeしたんですが jspから取得(getProperty)できませんでした。 最終的に package beans;としてインポートすることで解決できたんですが なぜできたのか良く分かりません。 packageは煩雑にならないようクラスファイルのディレクトリ構成を 指定するものだ という認識だったのですが、 今回のようなケースでは必須事項なのでしょうか? そうならば、なぜなのでしょうか? # Servlet.classとBean.classはもともとclassesディレクトリにいたのを   classes/beansディレクトリにしたことでうまくいくというのが解せません   classesディレクトリにあるならいいじゃないかと思うわけです。。

  • Java
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.1

Java 1.4以降だったと思うが、デフォルトパッケージは、他のパッケージないから呼び出せない、という仕様になっている。デフォルトパッケージは、小規模な開発あるいは一時的な利用にとどめ、正式な開発では必ずパッケージ下に配置する方向にしたいんだろうな。 JSPは、内部的にサーブレットにコンパイルされ実行される(当然、何らかのパッケージに配置される)ので、JSPからはデフォルトパッケージ内のクラスは呼び出せないことになる。従って、必ず、何らかのパッケージ下にBeanは置かなければいけないことになる。

その他の回答 (1)

回答No.2

それって、org.apache.jasper.JasperExceptionにより、JSPのクラスをコンパイルできない、とかっていう奴ですよね? >今回のようなケースでは必須事項なのでしょうか? 必須です。 >そうならば、なぜなのでしょうか? 仕様だからです。 ちなみに、英文に違和感の無い方であれば、以下の掲示板サイトにて紹介されている米国Sunのバグレポートの方も参考にしてみてください。 Top > @IT会議室 > Java Solution 会議室 > JSPでBeanの中身を使用するには… http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5750&forum=12&start=8

関連するQ&A

  • Bean利用時のJSPへのforward時のエラー

    <jspの設置場所> /usr/local/...../ssm3u/jsp/ ☆JSP(DMmvc.jsp)の内容(一部) <jsp:useBean id="mvc" class"mvc.MVCdata" scope="request" /> <%=mvc.getMSG()%> <サーブレット・Beanの設置場所> /usr/local/...../ssm3u/WEB-INF/classes/mvc/ (javaもclassもここに設置) ☆サーブレット(DMmvc.java)の内容 package mvc; ・・・・・(略)・・・・・ MvcData mvc = new MvcData(); req.setAttribute("mvc", mvc); RequestDispatcher rDispatcher = req.getRequestDispatcher("../jsp/DMmvc.jsp"); rDispatcher.forward(req, res); ・・・・・(略)・・・・・ ☆Bean(MvcData.java)の内容 package mvc; ・・・・・(略)・・・・・ というようにしてみたのですが 実行時エラー(parseException)になります。 useBeanを使わないJSPにforwardすると問題なく表示できます。 JSPの書き方(class="mvc.MvcData"あたり?)がおかしいような 気もするのですが・・・・

    • ベストアンサー
    • Java
  • EL式でのbeansからの値取得について

    初心者的な質問で申し訳ありません。 JSPの中でbeansから値を受け取る場合、 <%@ page import="BeansPack.*" %> <jsp:useBean id="req" class="Beans.param" scope="request"/> <jsp:getProperty name="req" property="param1" /> と書けば値を受け取れるのですが、EL式で、 <%@ page import="BeansPack.*" %> <% Beans req = new Beans(); %> <% request.setAttribute("req",req); %> ${req.param1} と書くと値が表示されません。エラーは表示されないのですが原因がわかららず悩んでおります。 わかる方がいらっしゃいましたらアドバイスお願いいたします。

    • ベストアンサー
    • Java
  • サーブレットからArrayListにBeanを格納しJSPで使用する方法

    はじめまして、以下の問題ですが、わからず困っているので 質問させていただきます。 PCはWindowsXPで Eclipse Version: 3.4.1を使用し Tomcat5.5,jre6を使用しています。 研修の課題なのですが サーブレット内でBeanをArrayListを使って、動的確保したものを JSPに渡し、ArrayListに入ったBeanを取り出し、 そのBeanにsetした値を表示させるというプログラムを作っています。 JSPの部分がまったくわかりません。 JSPに配列はわたったようなのですが、JSPでのArrayListの取り出し方 などが、調べてもまったく解決しません。 もしわかる方がいましたら、教えてください。よろしくお願いします。 内容は以下です。 ///////////サーブレット//////////////////////////// ArrayList<Beans> beansid = new ArrayList<Beans>(); i=0; while(rs.next()){  sid = rs.getInt("sid");  sname = rs.getString("sname");  spass = rs.getString("spass");  Beans inbean = new Beans();  inbean.setsid(sid);  inbean.setsname(sname);  inbean.setspass(spass);  beansid.add(inbean); } request.setAttribute("beansid",beansid); //Beansクラス///////////////////// public class Beans{ private int sid; private String sname; private String spass; public int getsid(){ return sid; } public void setsid(int sid){ this.sid = sid; } public String getsname(){ return sname; } public void setsname(String sname){ this.sname = sname; } public String getspass(){ return spass; } public void setspass(String spass){ this.spass = spass; } } //JSPのコード///////////////////////////////// <%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS" %> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <jsp:useBean class="java.lang.String" id="beansid" scope="request"/> <%@page import="keiji.Beans"%> <%@page import= "java.util.*" %> <%@page import="java.sql.*"%> <%@page import="javax.servlet.*"%> <%--下のclassの所はBeansというのでも試してみました。--%> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <%-- ArrayList beansid = (ArrayList)request.getAttribute("beansid"); --%> <%-- Iterator it = beansid.Iterator(); --%> ArrayList Iteratorと使ってみたのですが、 自分にはわけが分からず、JSPを実行したとき、処理がとまってしまいます。

  • jsp,servlet,beanの流れについて

    初歩の初歩の質問ですが、参考書等読んでいて混乱してしまっています。宜しくお願いします。 a.jsp(入力画面) a_servlet.java a_bean.java(setのみ) b.jsp(表示画面) b_servlet.java b_bean.java(get,setのみ) というファイルがある時のプログラムの流れは、 (1)a.jsp・・・画面を表示する。データを入力する。登録ボタンを押下する。 (2)a_servlet.java・・・(1)で登録ボタンを押下されたら、a.jspのデータを取得。a_bean.javaへ設定する。b.jspへ飛ぶ。 (3)a_bean.java・・・(2)によりデータが設定されている。 (4)b_servlet.java・・・a_bean.javaのデータを取得し、b_bean.javaに設定する。 (5)b_bean.java・・・(4)によりデータが設定されている。 (6)b.jsp・・・表示データをb_bean.javaより取得後、画面を表示する。削除ボタンを押下する。 (7)b_servlet.java・・・(6)で削除ボタンが押下されたらb.jspのデータを取得し、b_bean.javaへ設定する。 特にbファイルの処理順序で混乱しています。 上記のような流れで考え方は合っているでしょうか。 少々分かりずらいかもしれませんが、間違っていたら小学生でも分かるように教えてください。

    • ベストアンサー
    • Java
  • JSPで独自のパッケージがimportできません。

    下記構成で、test.jspで、作成したjp.test.utilパッケージをimportして使いたいのですがうまくいきません。 ■Tomcat4.1 |_■webapps  |_■test   | ■JSP   | |★test.jsp   |   |_■Web-inf     |_■classes      |_■jp       |_■test        |_■util         |★OrgDataFormat.class ★test.jspに、 <%@ page import="jp.test.*" %> と記述しても、下記エラーとなりimportできません。 パッケージ jp.test は存在しません。 import jp.test.*; オリジナルパッケージをimportするには、 どこにどのような設定が必要なのでしょうか? 環境はWinXP,Tomcat4.1.18,JDK1.4.1を使っています。

    • ベストアンサー
    • Java
  • JAVA BEANとJSPページ

    いつもお世話になっております。 JAVA BEAN とJSPの質問なんですが、 JSPページでHTMLフォームから名前と住所を入力して、 BEANのページにその名前と住所をパスする、 というやり方がよく分かりません。 どなたかご教授頂けると大変うれしいです。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • JSPでbeanプロパティ(配列)をgetしたい

    こんにちわ。 表題の件ですが、下のようなbeanファイルとjspファイルの構成です。 --AAA.JSP-- <jsp:useBean id="E" scope="page" class="myPack.Engine" /> ・・・・途中をかなり略・・・・ <td><%= E.getIntSuryo() %></td> <========(1) Engineクラス(bean側) package myPack; public class Engine { int intSuryo[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; } public int[] getIntSuryo() { return intSuryo; } --------------ここまで------------- ここで、(1)の箇所の記述の仕方がわかりません。 インデックスを指定して、1~10までを表にしようと思っています。 getIntSuryo()の括弧内にindexを入れてみましたが、 エラーとなり怒られました。 どなたかご存知の方、教えてください。

    • ベストアンサー
    • Java
  • <bean:write.../>がエラーを出す

    のですが原因が分かりません。 したのソースでコメントアウトしたものが動かないのです。 コメントアウトしていないものは動いています。 何が悪いのでしょうか? よろしくお願いします。 gomi.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%> <%@ page isELIgnored="false"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Java JakartaStruts</title> </head> <body> <jsp:useBean id="gomiBean" class="gomi.GomiBean" scope="request" /> <jsp:getProperty property="gomiInt" name="gomiBean"/><br/> ${gomiBean.gomiInt}<br/> <%-- <p>GomiBean gomiInt : <bean:write name="gomiBean" scope="request" property="gomiInt" /></p> --%> </body> </html>

  • Strutsの構築・・・Strutsに詳しい方がいらっしゃらないでしょうか?

    今、Strutsの構築をやっています。 流れは以下のように思っています。 1、ユーザ画面から入力された内容が、Form-Beansに保存される。 2、action-mappingsにより、Form-Beansから保存された内容を取り出し、処理を行う。 3、処理内容をJspによりユーザ画面に返す。 質問は、Jspはどうやって処理結果を取得するのでしょうか? 自分の考えとしては、多分<bean:write>というタグを使うでしょうと思っていますが、しかし、具体的なやり方はわかりません。 たとえば、どうやって処理結果(DBから取得してきたレコードとか)をForm-Beansに入れるのでしょうか?そして、どうやって処理結果(レコードを一行一行)を取得するのでしょうか?・・・はわからないです。 どうぞ、お分かりの方がいらっしゃったら、教えていただきたいです。

  • jspでbeanを使いたいのですが...

    お世話になります。 JSPコード内のjavaプログラムをBeanとして読み込むようにし、インスタンスを作ってエラーにならないか試したところ、クラスが認識されないエラーが起きてしまいました。 他の記述やテキスト、サイト様を参考に手直しをしてみたもののうまく行かず、何だかわからなくなってしまいました... ご教授お願いいたします。 OS:WindowsVista サーブレット:Tomcat 参考テキスト:java+MySQL+Tomcatで始めるWebアプリケーション ファイルの階層 Desktop─test─jamyto┬aura─aurabottle.jsp            └WEB-INF─classes─auras┬IdMake.java                         └IdMake.class aurabottle.jsp側 <%@ page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.*"%> <%@ page import="auras.IdMake"%> <%auras.IdMake idmake = new auras.IdMake();%>    以下JSPコード IdMake.java側 package auras; import java.sql.*; public class IdMake { StringBuffer sb = new StringBuffer(); public int barthDay (String strYear, String strMonth, String strDay){ 以下Javaコード エラー文面 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSP FileName:null Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java An error occurred at line: 6 in the generated java file Only a type can be imported. auras.IdMake resolves to a package JSP FileName:/aurabottle.jsp Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java JSPファイル: /aurabottle.jsp の中の7行目でエラーが発生しました auras.IdMake cannot be resolved to a type

    • ベストアンサー
    • Java

専門家に質問してみよう