👏

【初心者向け/ITスクール51日】JSPで会員登録の修正と削除

2023/09/21に公開

はじめに

今日は、ITスクールに通った51日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。

50日目は、CookieとSessionを活用することで、直接DBと連携して、DB上に登録された情報を修正し、削除することを練習しました。

Update

基本的なテキスト情報は簡単でしたが、写真を削除するプロセスが相当複雑でした。
写真をアップロードして、新しい写真にする場合、既存の写真をそのまま使用する二つのパータンがあり、ポイントとしては、既存のファイル名をSessionからもってきて、オブジェクトのgetterを活用することでした。

public static void update(HttpServletRequest req) {

String path = null;
MultipartRequest mr = null;

/* Point1 
Sessionから情報をゲットすること!*/
Member m = (Member) req.getSession().getAttribute("loginMember");

/* Point2
新しいファイル名、以前のファイル名を宣言すること!
既存のファイル名をSessionから持ってくることが重要です*/

String old_m_photo = m.getM_photo();
String new_m_photo = null;

  try {
	path = req.getServletContext().getRealPath("img");
	System.out.println(path);
	mr = new MultipartRequest(req, path, 30 * 1024 * 1024, "UTF-8",
					new DefaultFileRenamePolicy());

	// 新しいファイルに変更する場合
	new_m_photo = mr.getFilesystemName("m_photo");
	if (new_m_photo != null) {
	new_m_photo = URLEncoder.encode(new_m_photo, "UTF-8").replace("+", " ");
	} else { 
	//既存のファイルを維持する場合、nullをもらいます。
	// new_m_photoにSWAPします!
	new_m_photo = old_m_photo;
	
	Connection con = null;
	PreparedStatement pstmt = null;

	con = BeaverDBManager.connect("beaverPool");

	String m_id = mr.getParameter("m_id");
    String m_pw = mr.getParameter("m_pw");
	String m_name = mr.getParameter("m_name");
	String m_phone = mr.getParameter("m_phone");
	String m_y = mr.getParameter("m_y");
	int m_m = Integer.parseInt(mr.getParameter("m_m"));
	int m_d = Integer.parseInt(mr.getParameter("m_d"));
	String m_birthday = String.format("%s%02d%02d", m_y, m_m, m_d);

	String sql = "update sns_member set m_pw=?, m_name=?, m_phone=?, "
	+ "m_birthday=to_date(?, 'YYYYMMDD'), m_photo=? where m_id=?";

	pstmt = con.prepareStatement(sql);
	pstmt.setString(1, m_pw);
	pstmt.setString(2, m_name);
	pstmt.setString(3, m_phone);
	pstmt.setString(4, m_birthday);
	pstmt.setString(5, new_m_photo);
	pstmt.setString(6, m_id);

	if (pstmt.executeUpdate() == 1) { 
		req.setAttribute("r", "정보수정 성공");
		if (!new_m_photo.equals(old_m_photo)) {
	    new File(path + "/" + URLDecoder.decode(old_m_photo, "UTF-8")).delete();
	   }

	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
	m = new Member(m_id, m_pw, m_name, m_phone, sdf.parse(m_birthday),
	URLDecoder.decode(new_m_photo, "UTF-8"));
	req.getSession().setAttribute("loginMember", m);

	} else { 
	req.setAttribute("r", "정보 수정 실패");
		if (!new_m_photo.equals(old_m_photo)) {
	new File(path + "/" + URLDecoder.decode(new_m_photo, "UTF-8")).delete();
			}
		}

		} catch (Exception e) {
		e.printStackTrace();
		req.setAttribute("r", "정보 수정 실패(DB연결 실패)");
		if (!new_m_photo.equals(old_m_photo)) {
		try {
		new File(path + "/" + URLDecoder.decode(new_m_photo, "UTF-8")).delete();
			} catch (UnsupportedEncodingException e1) {
				e1.printStackTrace();
				}
			}
		}

		BeaverDBManager.close(con, pstmt, null);
	}

Discussion