View
이번에는 substring() 메서드에 대해 자세히 알아볼 수 있는 계기가 되었다.
회원가입할 때, email 을 합쳐서 넘기는 것까지는 성공했는데 만약 회원 정보를 수정하게 된다면 합친 이메일을 @로 나누어 프론트에 보여 주어야 한다.
우선 내 정보 수정에 관련된 정보를 DB 에서 모두 가지고 와야 한다.
public MemberDTO getMember(String memId){
MemberDTO dto=null;
try{
con=getCon();
pstmt=con.prepareStatement("select * from tbmember where memId=?");
pstmt.setString(1, memId);
rs=pstmt.executeQuery();
if(rs.next()){
dto=new MemberDTO();
dto.setMemId(rs.getString("memId"));
dto.setMemPw(rs.getString("memPw"));
dto.setMemName(rs.getString("memName"));
dto.setMemPhone(rs.getString("memPhone"));
dto.setMemEmail(rs.getString("memEmail"));
dto.setMemZipCode(rs.getString("memZipCode"));
dto.setMemAddr(rs.getString("memAddr"));
dto.setMemAddr2(rs.getString("memAddr2"));
}
}catch(Exception ex){
System.out.println("getMember() 예외: "+ex);
}finally{
try{
if(rs!=null){rs.close();}
if(pstmt!=null){pstmt.close();}
if(con!=null){con.close();}
}catch(Exception ex2){}
}//finally end
return dto;
}
순수 JDBC 로 작업했었기 때문에 엄청나게 복잡해 보이지만(...) 쿼리로만 보면 단순하다.
memId 가 유일한 조건이고, 즉 유저의 아이디가 같을 시 멤버 테이블에 담긴 정보들이 보일 수 있도록 했다.
그리고 그 정보들을 DTO 에 저장하며, 반환해 준다. 그 반환한 정보들은 EditFormAction 이 받는다.
package action.member;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import member.MemberDAO;
import member.MemberDTO;
import command.CommandAction;
public class UpdateFormAciton implements CommandAction {
public String requestPro(HttpServletRequest request,
HttpServletResponse response) throws Throwable {
String memId=request.getParameter("memId");
if(memId==null){
}
if(memId!=null){
MemberDAO dao=MemberDAO.getInstance();
MemberDTO dto=dao.getMember(memId);
request.setAttribute("dto", dto);
//[ex] email=test1234@daum.net
String email=dto.getMemEmail();
int idx=email.indexOf("@");
//@ 기준으로 자름
String email1 = email.substring(0, idx);
String email2 = email.substring(idx+1);
request.setAttribute("email1", email1);
request.setAttribute("email2", email2);
}
return "/member/updateForm.jsp";
}//requestPro-end
}//class-end
우선 조건은 memId 가 있어 정보가 불러질 수 있을 때로 설정하였고, 받은 memId 를 dto 에 등록해 주었다.
그리고 변수 email 을 DTO 에 저장된 email 로 설정해 주었고, 이메일을 자르는 기준을 @로 설정해 주었다.
email1 을 아이디 영역 (@ 전)만 보일 수 있게 했고, email2 @ 를 제외한 도메인 영역만 보일 수 있게 하여
따로 set 해 주었다.
※ 다른 정보들은 dto 에 들어가 있기 때문에 이미 저장되어 있음!
이렇게 하면 백 단에서의 이메일 분리 작업은 끝이다. 이제 프론트 화면을 보자.
<tr>
<td>이메일</td>
<td>
<input type="text" name="email1" id="email1" value="${email1}">@
<input type="text" name="email2" id="email2" value="${email2}">
<input type="hidden" name="memEmail" id="memEmail">
</td>
</tr>
이렇게 보여 주면 이메일 나누어 뿌리기는 끝!
만약 이 나누어 뿌린 이메일을 다시 합치고 싶다면 해당 게시물을 참고해 보자.
소스 코드는 이렇다.
String email1=request.getParameter("email1");
String email2=request.getParameter("email2");
String memEmail=email1+"@"+email2;
사실 내 블로그에 코딩 초보들이 유입이 될지, 안 될지는 잘 모르겠지만, 내 수준이 하물며 그들과 비교했을 때 뛰어난 것도 아니고...... 혹시라도 방문하는 사람들이 도움이 되었으면 싶어 최대한 자세히 작성해 보았습니다.
혹여라도 이해가 가지 않는 부분은 댓글 남겨 주세요! 피드백도 언제나 환영입니다. 감사합니다!