getServletConfig()でのコンパイルエラー

このQ&Aのポイント
  • 以下のソースコードでは、getServletConfig()メソッドを使用しているときにコンパイルエラーが発生しています。
  • 具体的には、getServletConfig()メソッドが見つからないというエラーが表示されています。
  • 解決方法を知っている方がいらっしゃいましたら、ご教示いただければ幸いです。
回答を見る
  • ベストアンサー

getServletConfig()でのコンパイルエラー

以下のソースでコンパイルエラーが出てしまいます。 ソースが汚くて申し訳ないです。 ------------------------------------------------ package to.msn.wings.chap4; import java.io.IOException; import java.net.URL; import java.util.List; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.fetcher.FeedFetcher; import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.GenericServlet; class Rssdata{//データ格納用クラス String[] title = new String[20]; String[] link = new String[20]; String[] day = new String[20]; } public class RssOriginal { // フィードのURL private static final String[] FEED_URLS = { "http://honyarara/index20.rdf", }; public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception, ServletException, IOException { int i = 0;//for文用変数 Rssdata rssdata = new Rssdata();//rssデータ格納用クラス // HTTPを元にフィードを取得するクラス「FeedFetcher」 ………(1) FeedFetcher fetcher = new HttpURLFeedFetcher(); // フィードの内容、フィードに含まれる記事エントリの内容を出力する for (String url : FEED_URLS) { // フィードの取得 ………(2) SyndFeed feed = fetcher.retrieveFeed(new URL(url)); Calendar cal = new GregorianCalendar();//カレンダー変換オブジェクト生成 for (SyndEntry entry : (List<SyndEntry>) feed.getEntries()) { entry.getPublishedDate(); rssdata.day[i] = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH); rssdata.link[i] = entry.getLink(); rssdata.title[i] = entry.getTitle(); i++; } } request.setAttribute("feed", rssdata); getServletConfig().getServletContext().getRequestDispatcher("/chap4/rss/index.jsp").forward(request,response); } } ------------------------------------------------ ------------------------------------------------ エラー内容 RssOriginal.java:75: シンボルを見つけられません。 シンボル: メソッド getServletConfig() 場所 : to.msn.wings.chap4.RssOriginal の クラス getServletConfig().getServletContext().getRequestDispatcher("/ch ap4/rss/index.jsp").forward(request,response); ------------------------------------------------ どなたか解決方法がわかりましたら教えてください。

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

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

  • ベストアンサー
  • hal_n
  • ベストアンサー率43% (7/16)
回答No.2

getServletConfig() は javax.servlet.GenericServlet または javax.servlet.http.HttpServlet で定義されています。 おそらく呼び出したいのは、HttpServlet#getServletConfig() だと推測しますが、これを RssOriginal クラスで呼び出す為にはどうすれば良いでしょうか。 RssOriginal のクラス定義で根本的な部分がなにか抜けていませんか? RssOriginal クラスはサーブレットとして実装したいんですよね?

yanagiman2
質問者

お礼

初歩的なミスでお恥ずかしいです。 おかげさまで一応コンパイルまではできました! が、新たな問題が出てしまいました。。。 半日調べてますがこのまま調べても解決できそうもなければ 改めて投稿させて頂きたいと思います。 大変勉強になりました。ありがとうございました!

その他の回答 (1)

  • hal_n
  • ベストアンサー率43% (7/16)
回答No.1

getServletConfig() というメソッドが定義されていないためエラーになっています。 getServletConfig() を RssOriginal クラス内で実装しましたか? していないなら、どこで定義されている getServletConfig() を呼び出そうとしていますか? よく考えてみてください。

yanagiman2
質問者

お礼

ご回答ありがとうございます! >getServletConfig() というメソッドが定義されていないためエラーになっています。 なるほど。原因は定義されていないと言うことなんですね。 >getServletConfig() を RssOriginal クラス内で実装しましたか? していないなら、どこで定義されている getServletConfig() を呼び出そうとしていますか? 実装はしてないですね。 どこで定義されているかと言うところが 自分なりに色々調べても解りませんでした。 getServletConfig() の役割については 【Servletプログラム単位の初期化パラメータの取得】 などとサイトや本に書かれており自分なりの解釈としては servlet,jsp間で取得や送信ができるパラメータ(データやkey)を 取得するものと捉えております。 importもjavax.servlet.*;で 問題ないと思うのですが。。。 もしよろしければお手数ですが またヒントをお願い致します。

関連するQ&A

  • servletに自作パッケージを読ませるには

    以下のようなソースがあり 実行するとエラーになります。 rssoriginal.java -------------------------------------- package to.msn.wings.chap4; import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.fetcher.FeedFetcher; import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; class Rssdata{//データ格納用クラス String[] title = new String[20]; String[] link = new String[20]; String[] day = new String[20]; } public class RssOriginal extends HttpServlet { private static final String URL= "http://dtm-web-etc.seesaa.net/index20.rdf"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { FeedFetcher ff = new HttpURLFeedFetcher(); SyndFeed feed=null; int i = 0;//for文用変数 Rssdata rssdata = new Rssdata();//rssデータ格納用クラス try { feed = ff.retrieveFeed(new URL(URL)); } catch (Exception e) { throw new ServletException(e); } Calendar cal = new GregorianCalendar(); for(SyndEntry entry : (List<SyndEntry>)feed.getEntries()){ entry.getPublishedDate(); rssdata.day[i] = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH); rssdata.link[i] = entry.getLink(); rssdata.title[i] = entry.getTitle(); System.out.println(rssdata.day[i]); System.out.println(rssdata.link[i]); System.out.println(rssdata.title[i]); System.out.println(); i++; } request.setAttribute("feed", rssdata); this.getServletContext().getRequestDispatcher("/chap4/rss/index.jsp").forward(request,response); } } -------------------------------------- エラーメッセージ -------------------------------------- 説明 The requested resource () is not available. -------------------------------------- ↓この部分がおかしいのかと思いパッケージ化し アプリケーションルート\\WEB-INF\libに配置しました。 Rssdata.class -------------------------------------- package rssdata; //↓この部分 class Rssdata{//データ格納用クラス String[] title = new String[20]; String[] link = new String[20]; String[] day = new String[20]; } -------------------------------------- そしてrssoriginal.javaにて -------------------------------------- import Rssdata.*; -------------------------------------- とすると見事にRssdata関連の パッケージ・シンボルは見つけられませんと出ます。 (コンパイル時) サーブレットで上記のようなことをするには どうしたらよいでしょうか? ご教授頂ければ幸いです。

    • ベストアンサー
    • Java
  • <forEach> 内で供給された "items" を反復処理する方法が不明です

    JSP、servletを実行すると 以下のエラーメッセージが 表示されてしまいます。 ---------------------------------- javax.servlet.jsp.JspTagException: <forEach> 内で供給された "items" を反復処理する方法が不明です ---------------------------------- ファイル構成は以下になります。 アプリケーションルート\WEB-INF\classes\Rssdata.java ---------------------------------- public class Rssdata{//データ格納用クラス public String[] title = new String[20]; public String[] link = new String[20]; public String[] day = new String[20]; } ---------------------------------- アプリケーションルート\WEB-INF\classes\RssOriginal.java ---------------------------------- import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.fetcher.FeedFetcher; import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; public class RssOriginal extends HttpServlet { private static final String URL= "http://hoge.net/index20.rdf"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { FeedFetcher ff = new HttpURLFeedFetcher(); SyndFeed feed=null; int i = 0;//for文用変数 Rssdata rssdata = new Rssdata();//rssデータ格納用クラス try { feed = ff.retrieveFeed(new URL(URL)); } catch (Exception e) { throw new ServletException(e); } Calendar cal = new GregorianCalendar(); for(SyndEntry entry : (List<SyndEntry>)feed.getEntries()){ entry.getPublishedDate(); rssdata.day[i] = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH); rssdata.link[i] = entry.getLink(); rssdata.title[i] = entry.getTitle(); /* System.out.println(rssdata.day[i]); System.out.println(rssdata.link[i]); System.out.println(rssdata.title[i]); System.out.println(); */ i++; } request.setAttribute("feed", rssdata); this.getServletContext().getRequestDispatcher("/chap4/rss/index.jsp").forward(request,response); } } ---------------------------------- アプリケーションルート\chap4\rss\index.jsp ---------------------------------- <html> <head> <title>RSS情報の展開</title> </head> <body> <h1 style="color:white;background-color:#525D76;font-size:22px;"> RSS情報の展開</h1> <ul> <c:forEach var="item" items="${requestScope['feed']}"> <li><a href="${item['link']}">${item['title']}</a></li> </c:forEach> </ul> </body> </html> ---------------------------------- またこちらのページなど検索で色々調べましたが http://kamakura.cool.ne.jp/oppama/ssja/taglibs-core.html 理屈はなんとなくイメージできるのですが 具体的な解決方法がわかりませんでした。 宜しくお願い致します。

  • tomcat上のservletからapache上のhtmlへ

    現在tomcatにrss.java(コンパイル後class) と言うファイルがあります。 rss.java ------------------------------------------- package to.msn.wings.chap4; import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.fetcher.FeedFetcher; import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; public class RssParse extends HttpServlet { private static final String URL= "http://honyararahonyarara/index20.rdf"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { FeedFetcher ff = new HttpURLFeedFetcher(); SyndFeed feed=null; try { feed = ff.retrieveFeed(new URL(URL)); } catch (Exception e) { throw new ServletException(e); } HashMap<String, String> map = new HashMap<String,String>(); for(SyndEntry entry : (List<SyndEntry>)feed.getEntries()){ map.put(entry.getTitle(), entry.getLink()); } request.setAttribute("feed", map); this.getServletContext().getRequestDispatcher("http://localhost/html/rss.html").forward(request,response); } } ------------------------------------------- またapache上にrss.htmlと言うファイルがあります。 rss.html ------------------------------------------- <html> <head> <title>RSS情報の展開</title> </head> <body> <h1 style="color:white;background-color:#525D76;font-size:22px;"> RSS情報の展開</h1> <ul> <c:forEach var="item" items="${requestScope['feed']}"> <li><a href="${item['value']}">${item['key']}</a></li> </c:forEach> </ul> </body> </html> ------------------------------------------- tomcat上のservletからapache上のhtmlに値を渡し 表示させたいのですがうまくいきません。 お心当たりある方がいらっしゃいましたら 書込みをお願い致します。

    • ベストアンサー
    • Java
  • コンパイルエラー

    過去ログも参考にしたのですが、解決しませんでしたので、よろしくお願いします!! コンパイルすると、下のエラーが出てしまいます。 どこかへのクラスパスが足りないのかな?とは思うのですが、一体どこへ?(T△T) パッケージ com.sun.odi.tree は存在しません。 import com.sun.xml.tree.*; --code-- import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import org.w3c.dom.*; import com.sun.xml.tree.*; -------- [Win2k,tomcat4.0.6,J2sdk1.4.1]です。

  • コンパイルエラー

    JBuiderでコンパイルしようとするとエラーがでてしまいます。ソースは以下の通りです。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); Integer count=(Integer)session.getAttribute("count"); if(count == null){  count = new Integer(0); }else{  count = new Integer(count.intValue()+1); } session.setAttribute("count",count); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out= response.getWriter(); out.println("<html>"); out.println("<head><title>TestServlet</title></head>"); out.println("<body>"); out.println(session.getId()); out.println("<p>\"count\"という名前のattribute = " + count +"</p>"); out.println("</body></html>"); out.close(); } } これをコンパイルすると、 "TestServlet.java": エラー #: 300 : メソッド getAttribute(java.lang.String) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 9, 列 36 "TestServlet.java": エラー #: 300 : メソッド setAttribute(java.lang.String, java.lang.Integer) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 15, 列 13 というメッセージがでます。何が原因なのか教えてください。

  • コンパイルエラー

    前の『Server Hangup』の質問とは別にこちらもお願いします。ちなみにあれは家のパソコンです。今回は会社のパソコンなんですが、こちらは同じようにTomcatをインストールしてhttp://localhost:8080/にアクセスするとちゃんと画面が表示されます。しかし、HelloServlet.javaがコンパイルできないのです。 これも本を読みながら同じようにやっているのですが・・・。 一体何が原因なのでしょうか? 環境はOSがWindows2000、j2sdk1.4.1、jakarta-tomcat-4.0.3-LE-jdk14です。 ファイルのあるディレクトリに移動して javac -classpath=%CATALINA_HOME%\common\lib\servlet.jar;%CLASSPATH% HelloServlet.java と入力すると以下のようなエラーになります。 HelloServlet.java:5: パッケージ javax.servlet は存在しません。 import javax.servlet.ServletException; ^ HelloServlet.java:6: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; ^ HelloServlet.java:7: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletRequest; ^ HelloServlet.java:8: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletResponse; ^ HelloServlet.java:14: シンボルを解決できません。 シンボル: クラス HttpServlet 場所 : HelloServlet の クラス public class HelloServlet extends HttpServlet {   … エラー 8 個 質問内容は検索したのですが、同じようなのは、コードの書き間違いだったようで 回答は得られませんでした。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • このソースのコンパイルできません。

    java, サーブレット初心者でコンパイルできません。エラーは以下のとおりです。 初歩的な質問で申し訳ないですがよろしくお願いします。 http://www.javaroad.jp/opensource/js_tomcat2.htm のページのHelloServlet.javaをコピーしてコンパイルをしようとしたらエラーが、、、。 import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<BODY>"); out.println(new java.util.Date()); out.println("</BODY>"); out.println("</HTML>"); } } ーーーーーーーーーーーーーーーーーーーーーーーーーーー HelloServlet.java:7: エラー: パッケージjavax.servletは存在しません import javax.servlet.*; ^ HelloServlet.java:8: エラー: パッケージjavax.servlet.httpは存在しません import javax.servlet.http.*; ^ HelloServlet.java:10: エラー: シンボルを見つけられません public class HelloServlet extends HttpServlet { ^ シンボル: クラス HttpServlet HelloServlet.java:11: エラー: シンボルを見つけられません public void doGet(HttpServletRequest request, ^ シンボル: クラス HttpServletRequest 場所: クラス HelloServlet HelloServlet.java:12: エラー: シンボルを見つけられません HttpServletResponse response) ^ シンボル: クラス HttpServletResponse 場所: クラス HelloServlet HelloServlet.java:13: エラー: シンボルを見つけられません throws IOException, ServletException { ^ シンボル: クラス ServletException 場所: クラス HelloServlet エラー6個 エラー

    • ベストアンサー
    • Java
  • importエラー

    JAVAサーブレットでjavax.servletとjavax.servlet.httpをimportすると自分で用意したクラスをimportすることができなくなります。 参考にしている書籍と見比べて違いがないと思いますが。 ちなみに、上記の二つをimportしなければ、 問題無くimportされます。 よろしくおねがいします。

    • ベストアンサー
    • Java
  • サーブレットがコンパイルできません。

    サーブレット内で自作のクラスを使っています。 自作クラスの名前は、Daigakuでパッケージ名はkansaiです。 ですので、サーブレット内で package kansai; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import kansai.*; としてちゃんとkansaiをimportしていますが、 src\kansai\Uni.java:20: シンボルを見つけられません。 シンボル: クラス Daigaku 場所 : kansai.Uni の クラス Daigaku dai2 = new Daigaku(); というエラーメッセージが出てしまいます。 classes\kansaiディレクトリにちゃんとDaigaku.classはあります。 それ以外のエラーは発生していません。原因はなんでしょうか?

  • Javaによる現在時刻の表示について

    Javaで現在時刻を表示するプログラムを作りました。 今のままだと 2009/8/26(木) 15:8:7となり、 月日・時間分秒が一桁のときは前に0をつけて二桁(15:08:07のように)表示にしたいと思います。 何かいい方法はないでしょうか? if文で作成するとなると、かなりたくさんのコードを書かないといけない気がします。 良い案があれば是非ご教授頂ければと思います。 import java.util.Calendar; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Servlet_106 extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{ res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); String title = "現在時刻:"; Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; int day = cal.get(Calendar.DATE); StringBuffer dow = new StringBuffer(); switch (cal.get(Calendar.DAY_OF_WEEK)){ case Calendar.SUNDAY: dow.append("日"); break; ~~~(略)~~~ } int hour = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE); int second = cal.get(Calendar.SECOND); out.println("<html lang=\"ja\">"); out.println("<head><title></title></head>"); out.println("<body>"); out.println("<p>現在時刻:" + year + "/" + month + "/" + day + "(" + dow + ")" + hour + ":" + minute + ":" + second + "</p>"); out.println("</body></html>"); out.close(); } }

    • ベストアンサー
    • Java

専門家に質問してみよう