1. ホーム
  2. java

[解決済み】「Error 500: java.lang.NullPointerException」Javaサーブレットが表示されるのはなぜか?

2022-02-02 05:32:04

質問

html ページからサーブレット側のコードにファイルをアップロードして、それを配列リストに格納しようとしています。

ここに私のhtmlがあります。

<pre>
<!DOCTYPE HTML>
<html>
<head>
<title>file upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="url to my servlet java code" method="post"  ENCTYPE="multipart/form-data">
<input type="file" value="browse..."/>
<br/>
<input type="submit" value="Upload File" />
</form>
</body>
</html>
</pre>

. .

. .

サーブレットページのdoGet()メソッドにあるのは、こんな感じです。

Part p1 = request.getPart("textfile.txt");
Scanner in = new Scanner(p1.getInputStream());
ArrayList<String> newList = new ArrayList<String>();
while(in.hasNextLine()){
     newList.add(in.nextLine());
}
Collections.shuffle(newList);

で、テキストファイルを選択してアップロードを押すと、nullpointerexceptionエラーが発生します。

ヘルプ

解決方法は?

なぜなら、ユーザーがページに到着したとき、それは GET という操作を行うので、ページにデータが提供されている必要はまったくないのです。しかし、あなたはコードの中で、次のように想定しています。 getPart が返されるわけではありません。 null . それなのに getPart を返すと明確に定義されています。 null もし このリクエストのタイプはmultipart/form-dataですが、要求されたPartを含んでいません。 ( レフ ).

あなたのフォームは POST で処理したいので doPost 関数ではなく doGet 関数を使用します。