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;

사실 내 블로그에 코딩 초보들이 유입이 될지, 안 될지는 잘 모르겠지만, 내 수준이 하물며 그들과 비교했을 때 뛰어난 것도 아니고...... 혹시라도 방문하는 사람들이 도움이 되었으면 싶어 최대한 자세히 작성해 보았습니다.

 

혹여라도 이해가 가지 않는 부분은 댓글 남겨 주세요! 피드백도 언제나 환영입니다. 감사합니다!

Share Link
reply
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31