前提・実現したいこと
私は、JSPとサーブレットで社員を登録するシステムを作っています。
社員登録確認画面まではいくのですが、社員完了画面にいく際に、500エラーが発生してしまいます。
コンソールで原因を調べてみると、DAOのps.setString(7, employee.getDepartment().getDeptId());
というコードでエラーが出ていました。
実現したいことは、社員完了画面までいって社員登録ができていることと、パスワードの表示を・・・・という表示にしたいです。
該当のソースコード
JSP
ソースコード
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
サーブレット
ソースコード
package jp.co.sss.servlet.regist;
import java.io.IOException;
import java.sql.SQLException;
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 jp.co.sss.crud.bean.Department;
import jp.co.sss.crud.bean.Employee;
import jp.co.sss.crud.db.DepartmentDAO;
import jp.co.sss.crud.db.EmployeeDAO;
@WebServlet("/Insert")
public class Insert extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String empPass = request.getParameter("empPass"); String empName = request.getParameter("empName"); String gender = request.getParameter("gender"); String address = request.getParameter("address"); String birthday = request.getParameter("birthday"); String authority = request.getParameter("authority"); String deptId = request.getParameter("deptId"); Department department = null; try { department = DepartmentDAO.findByDepartment(deptId); } catch (SQLException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } Employee employee = new Employee(); employee.setEmpPass(empPass); employee.setEmpName(empName); employee.setGender(gender); employee.setAddress(address); employee.setBirthday(birthday); employee.setAuthority(authority); employee.setDepartment(department); EmployeeDAO.insert(employee); request.getRequestDispatcher("/jsp/sample01/regist_complete.jsp").forward(request, response); }
}
DAO
ソースコード
package jp.co.sss.crud.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import jp.co.sss.crud.bean.Department;
import jp.co.sss.crud.bean.Employee;
public class EmployeeDAO {
/** * 社員を登録 * * @return 社員登録 * @throws SQLException * データベース操作失敗時に送出 */ public static void insert(Employee employee) { Connection con = null; PreparedStatement ps = null; try { con = DBManager.getConnection(); ps = con.prepareStatement("INSERT INTO EMPLOYEE(EMP_PASS,EMP_NAME," + "GENDER,ADDRESS,BIRTHDAY,AUTHORITY,DEPT_ID)VALUES(?, ?, ?, ?, ?, ?, ?)"); ps.setString(1, employee.getEmpPass()); ps.setString(2, employee.getEmpName()); ps.setString(3, employee.getGender()); ps.setString(4, employee.getAddress()); ps.setString(5, employee.getBirthday()); ps.setString(6, employee.getAuthority()); ps.setString(7, employee.getDepartment().getDeptId()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { DBManager.close(ps, con); } }
}
試したこと
ps.setString(7, employee.getDepartment().getDeptId());のコードを消すと社員完了画面まではいくのですが、社員登録はされませんでした。
また、パスワードの表示もどうしたら・・・・という表示にできるのか分からず、2日間考えたり調べたりしたのですが、解決できなかったので、アドバイス等頂けると大変助かります。
ソースコードが多く、大変ご迷惑だと思いますが、宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー