質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

in context with path とエラーが出る

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 702

mutani

score 17

最近JSP/Servletの勉強を始めました。
エラーがでて行き詰まっているので質問します。

以下のようなエラーが出ます。
Servlet.service() for servlet [servlet.TEST] in context with path [/sample001] threw exception [サーブレットの実行により例外を投げました] with root cause

Servlet

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.t_productDAO;
import model.t_product;

@WebServlet("/TEST")
public class TEST extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public TEST() {
        super();

    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().append("Served at: ").append(request.getContextPath());

        t_productDAO t_product = new t_productDAO();
        List<t_product>productList = t_product.findAll();
        request.setAttribute("productList", productList);

        RequestDispatcher rd = request.getRequestDispatcher("/test2.jsp" );
         rd.forward(request,response);

    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
        request.setCharacterEncoding("UTF-8");
    }
}

DAO

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.t_product;

public class t_productDAO {

    private final String driver = "com.mysql.jdbc.Driver";
    private final String url = "jdbc:mysql://localhost/wbr_inventory_control?characterEncoding=UTF-8&serverTimezone=JST";
    private final String user = "testuser";
    private final String password = "pass";

    public List<t_product> findAll() {
        Connection conn = null;
        List<t_product>productList = new ArrayList<t_product>();//リスト名(リスト作成

        try {
            //JDBCドライバを読み込み
            Class.forName(driver);

            //データベースへの接続
            conn = DriverManager.getConnection(url,user,password);

            //SELECT文を準備
            String sql = "SELECT * FROM t_product";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            //SElECT文を実行し、結果を取得
            ResultSet rs = pstmt.executeQuery();

            while(rs.next()) { //select文の結果をArrayListに格納
                int product_id = rs.getInt("product_id");
                String product_genre_code = rs.getString("product_genre_code");
                String product_name = rs.getString("product_name");
                String product_maker = rs.getString("product_maker");
                int product_price = rs.getInt("product_price");
                int product_stock = rs.getInt("product_stock");
                int product_sales = rs.getInt("product_sales");
                String product_remarks = rs.getString("product_remarks");

                t_product T_product = new t_product(product_id,product_genre_code,product_name
                        ,product_maker,product_price,product_stock,product_sales,product_remarks);
                productList.add(T_product);

            }

        }catch(SQLException e) { 
            e.printStackTrace();
            return null;
        } catch (ClassNotFoundException e) { 
            e.printStackTrace();
            return null;
        }finally { //catchがなくても必ず実行
            //データベース切断
            if(conn != null) {
                try {
                    conn.close();
                }catch(SQLException e) {
                    e.printStackTrace();
                    return null;
                }
            }
        }
        return productList;
    }
}

model

import java.io.Serializable;

public class t_product implements Serializable{

    private int product_id;
    private String product_genre_code;
    private String product_name;
    private String product_maker;
    private int product_price;
    private int product_stock;
    private int product_sales;
    private String product_remarks;

    public t_product(int product_id
            ,String product_genre_code,String product_name
            ,String product_maker, int product_price,int product_stock,int product_sales,String product_remarks) {


        this.product_id = product_id;
        this.product_genre_code = product_genre_code;
        this.product_name = product_name;
        this.product_maker = product_maker;
        this.product_price = product_price;
        this.product_stock = product_stock;
        this.product_sales = product_sales;
        this.product_remarks = product_remarks;


    }
    public int getproduct_id() {return product_id;}
    public String getproduct_genre_code() {return product_genre_code;}
    public String getproduct_name() {return product_name;}
    public String getproduct_maker() {return product_maker;}
    public int getproduct_price() {return product_price;}
    public int getproduct_stock() {return product_stock;}
    public int getproduct_sales() {return product_sales;}
    public String getproduct_remarks() {return product_remarks;}

    }

ご回答いただけると幸いです。
何卒宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • A-pZ

    2018/09/14 19:41

    エラーが出ているときのスタックトレースがあると回答が得られるかもしれません。コンパイルエラーがある場合はコンパイルエラーを解消してください。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る