Louchura
@Louchura

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

サーブレットでpartをインポートできない

問題

JSPからフォームで送られたCSVファイルを受け取って表示するアプリケーションを作成しているのですが、ファイルを受け取る処理を行うpartを実装できません。

言語:Java
開発環境:Eclipse2020_12
サーバー:Apache Tomcat v6.0

発生している問題・エラー

出ているエラーメッセージを入力

例)

NameError (uninitialized constant World)

該当するソースコード

package servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;//エラーはここで発生。エラ〜メッセージは
//以下の通り。
//インポートされた javax.servlet.http.Part は見つかりません

/**
 * Servlet implementation class CsvImportServlet
 */
@WebServlet("/CsvImportServlet")
@MultipartConfig(location = "c:/temp")
public class CsvImportServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/p7/csvImport.jsp");
        dispatcher.forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // リクエストからファイル情報を取得
        request.setCharacterEncoding("UTF-8");
        Part part = request.getPart("file");
        InputStream csvStream = part.getInputStream();
        InputStreamReader fr = new InputStreamReader(csvStream);
        BufferedReader bf = new BufferedReader(fr);

        //内容を読み込み、画面に表示するためリクエストスコープセット
        String line = null;
        StringBuilder sb = new StringBuilder();
        while((line = bf.readLine()) != null) {
            sb.append(line + "<br>");
        }
        request.setAttribute("result", sb.toString());

        // 結果画面へフォワード
        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/p7/csvImport.jsp");
        dispatcher.forward(request, response);
    }
}

自分で試したこと

サーブレット系のインポートができない時によく抜けているとされる「servlet-api.jar」は最初から追加済みです。

0

1Answer

ぱっと調べた感じですと

PartはServlet 3.0から導入で、
Servlet 3.0に対応したのはTomcat 7からのようです。

0Like

Comments

  1. @Louchura

    Questioner

    なんと、それではいくらコードを書き直してもできないわけです。
    早々にご回答いただき、ありがとうございました。

Your answer might help someone💌