👏
【初心者向け/ITスクール51日】JSPで会員登録の修正と削除
はじめに
今日は、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