0

こんにちは、私は Apache Tomcat v7.0 サーブレットに取り組んでおり、ユーザーがいくつかの値を入力すると、ページに送信されてプレビューされ、送信されます。問題は、送信にヒットすると、ファイルが存在しないという 404 が表示されることです。

プロジェクトのセットアップ -

WebContent フォルダーには、プレビューする roster.js ファイルに送信されるwelcome.js ファイルがあります - roster.js ファイル内で送信をクリックすると、このリンクに移動します -src/bandServ/BandListServ.javaこのリンクは、WebContent フォルダーと共に Java Resources フォルダー内に含まれています。 . Java Resources フォルダーにはパッケージが含まれており、roster.js ファイルのフォームからデータを送信したい場所です。

roster.js ファイルのコード:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
   <%@ include file="/includes/header.html" 

   %>

</head>
<body>
    <h1>Battle Of Bands</h1>

    <p>Here is our band roster:</p>


    <table cellspacing="5" cellpadding="5" border="1">
        <tr>
            <td align="right">Band1:</td>
            <td><%= request.getParameter("Band1name")  %></td>
        </tr>
        <tr>
            <td align="right">Band2:</td>
            <td><%= request.getParameter("Band2name") %></td>
        </tr>
        <tr>
            <td align="right">Band3:</td>
            <td><%= request.getParameter("Band3name") %></td>
        </tr>
        <tr>
            <td align="right">Band4:</td>
            <td><%= request.getParameter("Band4name") %></td>
        </tr>
        <tr>


    </table>

    <p>Ready to Rock</p>

    <form action="src/bandServ/BandListServ.java" method="post">
        <input type="submit" value="submit">
    </form>

</body>
</html>
<%@ include file="/includes/footer.jsp" %>
4

3 に答える 3

2

Java クラスをフォームから直接呼び出すことはできません。クラスは、 HttpServletクラスを拡張するサーブレットとして作成する必要があります。次に、配置記述子(/Project/WEB-INF/web.xml) を変更して、サーブレット クラスの詳細とそれにマップされた URL を含める必要があります。

<servlet>
  <servlet-name>BandListServ</servlet-name>
  <servlet-class>bandServ.BandListServ</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>BandListServ</servlet-name>
  <url-pattern>/list-bands</url-pattern>
</servlet-mapping>

JSP の from を変更して、web.xml で定義された URL パターンを呼び出します。

<form action="/list-bands" method="post">
    <input type="submit" value="submit">
</form>
于 2012-12-14T10:10:44.560 に答える
1

この行

<form action="src/bandServ/BandListServ.java" method="post">

私は信じています。

action = ""には、サーブレットの完全修飾クラス名にインターンマップされたweb.xmlの論理サーブレット名にマップされたURIが含まれている必要があります。代わりに、アクションでサーブレット名を指定することはできません。

web.xmlには次のようなものが含まれている必要があります

<servlet>
  <servlet-name>BandServlet</servlet-name>
  <servlet-class>com.band.BandServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>BandServlet</servlet-name>
  <url-pattern>/getBands</url-pattern>
</servlet-mapping>

フォームタグでこれを行います

<form action="getBands" method="post">
于 2012-12-14T10:10:47.827 に答える
1

URL 要求をメソッド呼び出しに変換するサーブレット マッピングを提供する必要があります。 http://docs.oracle.com/cd/E11035_01/wls100/webapp/configureservlet.html

より簡単な方法は、コードを変換し、サーブレットのマッピングを自動的に行う Java Server Pages を使用することです。

[編集]

サーブレットに関するチュートリアルへのリンクを追加:

http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

于 2012-12-14T09:32:20.957 に答える