-1

私はサーブレットに少し慣れていません。NetBeansを使用しています。ユーザーから数値を受け取り、乗算表を出力するサーブレットがあります。
私はTableServlet.java次のように持っています-->

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class TableServlet extends HttpServlet
{
    @Override
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
    {
        PrintWriter out=response.getWriter();
        response.setContentType("text/html");
        String s=request.getParameter("t1");
        int x= Integer.parseInt(s);
        for(int i=1;i<=10;i++)
        {
            out.println(x+"x"+i+"="+i*x);
        }
        out.close();
    }    
}

私はnewhtml.html次のように持っています-->

<html>
    <body>
        <form action="TableServlet" method="get">
            Enter any number
            <input type="text" name="t1" />
            <input type="submit" value="GetTable"/>
        </form>
    </body>
</html>

正常に展開されていますが、このプロジェクトを実行した後、ブラウザーに出力が見つかりません..代わりに、ブラウザーでこれしか表示されません-->

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NumberFormatException: null
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.2.2 logs.

GlassFish Server Open Source Edition 3.1.2.2

何が原因でしょうか?

4

1 に答える 1

3

例外は、次の行によってスローされる可能性が最も高いです。

int x = Integer.parseInt(s);

sの値が有効な整数ではないことが原因です。

確かに、このメッセージ:

java.lang.NumberFormatException: null

の値snull! これは、処理中のリクエストにパラメータがないことを意味し"t1"ます。何が原因なのかはすぐにはわかりませんが、一番疑わしいのは HTML フォームです。

ここにいくつかのアイデアがあります:

  • ブラウザの URL バーでリクエスト URL を作成してみてください。
  • ブラウザーの Web デバッガーを使用して、フォームを使用するときにサーバーに送信される要求 URL を確認します。
于 2013-06-29T15:29:38.947 に答える