- PR -

Actionの結果が正しく返ってきません?

1
投稿者投稿内容
イマ
会議室デビュー日: 2004/06/18
投稿数: 7
投稿日時: 2004-06-21 16:21
初めまして。
最近eclipseを使い始めたんですが、皆さんの投稿スレッドがとても参考になり
大変感謝しています。

今回データベースから情報を引き出し表示させるプログラムを作成したところ
一向にactionへの読み込みが去れずエラーが返ってきます解決方法をぜひ教えて下さい。

エラー文↓
HTTP Status 404 - /show_database.do.
type Status report

message /show_database.do.

description The requested resource (/show_database.do.) is not available.

コンパイルはエラーしていないので多分struts-config
の書き方に問題があるんでしょうか?

以下struts-config↓
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config (View Source for full doctype...)>
- <struts-config>
- <!-- ========= Data Souce Configuration ==========================-->
- <!-- ========= Form Bean Definitions =============================-->
- <form-beans>
<form-bean name="showDatabaseForm" type="databaes.ShowDatabaseForm" />
</form-beans>
- <!-- ========= Global Forward Definitions ========================-->
- <!-- ========= Action Mapping Definitions ========================-->
- <action-mappings>
- <action path="/showDatabase" type="database.ShowDatabaseAction" name="showDatabaseForm" scope="request">
<forward name="success" path="/ShowDatabase.jsp" />
</action>
</action-mappings>
- <!-- ========== Message Resources Definitions ====================-->
<message-resources parameter="ApplicationResources" />
- <!-- ========== Plug Ins Configuration ===========================-->
</struts-config>

一応FormとActionも掲載します。
ShowDatabaseForm.java
package database;

import org.apache.struts.action.ActionForm;

/**
* @author Administrator
*
* この生成されたコメントの挿入されるテンプレートを変更するため
* ウィンドウ > 設定 > Java > コード生成 > コードとコメント
*/
public class ShowDatabaseForm extends ActionForm{
private String year;
private String subject;
private String kind;
private String keyword;

public String getYear()
return year;
}

public void setYear(String year){
this.year = year;
}

public String getSubject(){
return subject;
}

public void setSubject(String subject){
this.subject = subject;
}

public String getKind(){
return kind;
}

public void setKind(String kind){
this.kind = kind;
}

public String getKeyword(){
return keyword;
}

public void setKeyword(String keyword){
this.keyword = keyword;
}
}

ShowDatabaseAction.java
package database;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.sql.*;


import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
* @author Administrator
*
* この生成されたコメントの挿入されるテンプレートを変更するため
* ウィンドウ > 設定 > Java > コード生成 > コードとコメント
*/
public final class ShowDataBaseAction extends Action {


private Connection con;
private Statement stmt;
private ResultSet rs;




public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res)
throws Exception {
ShowDatabaseForm queryForm = (ShowDatabaseForm)form;
String yaer = queryForm.getYear();
String subject = queryForm.getSubject();
String kind = queryForm.getKind();
String keyword = queryForm.getKeyword();
try
{
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forest?useUnicode=true&characterEncoding=Shift_JIS","forest","forest");
Statement stmt = con.createStatement();
String sql = "select * from MATERIAL "+yaer+" "+subject+" "+kind+" ";
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);

while(rs.next()){
// 言語を取得
String ID = rs.getString("ID"); // メンバー名(学年)を取得
String gyear = rs.getString("YEAR"); // メンバー名(学年)を取得
String gsubject = rs.getString("SUBJECT"); // メンバー名(科目)を取得
String type = rs.getString("TYPE"); // メンバー名(種類)を取得
String url = rs.getString("URL"); // メンバー名(URL)を取得
String comment = rs.getString("TITLE"); // メンバー名(タイトル)を取得
String time = rs.getString("TIME"); // メンバー名(時間)を取得
String HTML = rs.getString("content"); // メンバー名(内容)を取得
}



//データベースから切断
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return(mapping.findForward("success"));
}



}

長い文になりましたがよろしくお願いします。

nil
会議室デビュー日: 2003/06/17
投稿数: 14
投稿日時: 2004-06-21 16:27
404ならweb.xmlを疑うべきではないですかね。

それよりもまず、最後のピリオドがとっても怪しく思えますが。
> /show_database.do.
イマ
会議室デビュー日: 2004/06/18
投稿数: 7
投稿日時: 2004-06-21 16:55
nilさんお早い返事ありがとうございます。
まずご指摘道理、最後のピリオドを消してみたところ、エラーの文が
全く変わってしまいました。

新エラー↓
HTTP Status 400 - Invalid path /showDatabase was requested

--------------------------------------------------------------------------------

type Status report

message Invalid path /showDatabase was requested

description The request sent by the client was syntactically incorrect (Invalid path /showDatabase was requested).

>404ならweb.xmlを疑うべきではないですかね。

大変若輩もので申し訳ないのですが
私の参考にしている書などでは、とりたてて
web.xmlについて変更箇所などが書かれていなかったため
全て初期パラムになっています。
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-06-21 20:09
showDatabaseですかね? show_databaseですかね?

あと、type="databaes.ShowDatabaseForm" ってのがとっても気になるのですが・・・
hypergori
会議室デビュー日: 2004/01/20
投稿数: 19
投稿日時: 2004-06-22 19:54
アクセス先のURLが、
直接指定のhttp://xxxxxxxxxxxxx/showDatabase.do であるもしくは、 ← .do有
JSPのhtml:formのactionが action="/showDatabase" ← .doなし

であれば(web.xmlの設定にもよりますが、Defaultだとすると)、

struts-configのactionのpathは、
action path="/showDatabase" type="database.ShowDatabaseAction"

ですね。呼び出しのURLはなんですか?もしくは、HTML orJSPのformのaction
には何が書いてあります?

最初の投稿では、
/show_database.do.
で2回目は、
/showDatabase
になってますが。。
1

スキルアップ/キャリアアップ(JOB@IT)