Shop [ 회원가입 ]

양혜정·2024년 4월 28일
0

javascript_web

목록 보기
79/81

MemberVO

// === Field === //
~~
// === Getter, Setter === //

Controller

private MemberDAO mdao = null;

// === 기본생성자 === //
public MemberRegister(){
	mdao = new MemberDAO_imple();
}

@Override
public void execute(HttpServletRequest request, HttpServletResponse response) throws Exception{
	String method = request.getMethod();
    if("GET".equalsIgnoreCase(method)){
    	super.setRedirect(false);
        super.setViewPage("/WEB-INF/member/memberRegister.jsp"); 
    }
    else{	// "POST"
    	String name = request.getParameter("name");
        String userid = request.getParameter("userid");
        String pwd = request.getParameter("pwd");
        ...
        
        MemberVO member = new MemberVO();
        member.setUserid(userid);
        member.setPwd(pwd);
        member.setName(name);
        ...
        
        // === 회원가입 성공/실패 시 메시지와 이동 === //
        String message = "";
        String location = "";
        
        try{
        	int n = mdao.registerMember(member);
            
            if(n==1){
            	message = "회원가입 성공^-^";
                location = request.getContextPath() + "/index.do";
            }
        } catch(SQLException e) {
        	message = "회원가입 실패ㅠㅠ";
            location = "javascript:history.back()";	// 자바스크립트 : 이전페이지 이동
            e.printStackTrace();
        }	// end of try~catch--------------------
        
        request.setAttribute("message",message);
        request.setAttribute("location",location);
        
        super.setRedirect(false);	// forward
        super.setViewPage("/WEB-INF/msg.jsp");
        
    }	// end of if~else--------------
}	// end of public void execute(HttpServletRequest request, HttpServletResponse response) throws Exception------

JSP ( Get - Register)

<%
	String ctxPath = request.getContextPath();
%>

<%-- 직접 만든 CSS --%>
<link rel="stylesheet" type="text/css" href="<%= ctxPath%>/css/member/memberRegister.css" />

<script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>

<%-- 직접 만든 JS --%>
<script type="text/javascript" src="<%= ctxPath%>/js/member/memberRegister.js"></script>

<jsp:include page="../header.jsp" />
... ( 내용물 )
<jsp:include page="../footer.jsp" />

JSP ( Post - Message )

<script type="text/javascript">
	// === 메시지 출력 === //
    alert("${requestScope.message}");
    // === 페이지 이동 === //
    location.href = "${requestScope.location}";
</script>

Security

- Sha256 ( 암호화 )

- AES256 ( 암호화 - 복호화 )

- SecretMyKey


DAO

// === 회원가입 === //
int registerMember(MemberVO member) throws SQLException;

DAO_imple

  • 기본 세팅
private DataSource ds;
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;

private AES256 aes;		// 암호화-복호화

// === 기본 생성자 === //
public  MemberDAO_imple(){
	try{
    	Context initContext = new InitialContext();
        Context envContext = (Context)initContext.lookup("java:/comp/env");
        ds = (DataSource)envContext.lookup("jdbc/myoracle");
        aes = new AES256(SecretMyKey.key);
    } catch(NamingException e){
    	e.printStackTrace();
    } catch(UnsupportedEncodingException e){
    	e.printStackTrace();
    }	// end of try~catch--------------------------
}

// === 자원반납 메소드 === //
private void close(){
	try{
    	if(rs != null){
        	rs.close();
            rs=null;
        }
        if(pstmt != null){
        	pstmt.close();
            pstmt=null;
        }
        if(conn != null){
        	conn.close();
            conn=null;
        }
    } catch(SQLException e){
    	e.printStackTrace();
    }	// end of try~catch--------
}	// end of close()----------------
  • 회원가입 메소드
public int registerMember(MemberVO member) throws SQLException{
	int result = 0;
    try{
    	conn = ds.getConnection();
        String sql = " insert into 테이블명(userid, pwd, name, ... 컬럼명) "
        		+ " values( ?, ?, ? ...) ";
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, member.getUserid());
        
        // === SHA256 ( 암호화 ) === // 
        pstmt.setString(2, Sha256.encrypt(member.getPwd()));
        
        pstmt.setString(3, member.getName());
        
        // === AES256 ( 암호화 - 복호화 ) === //
        pstmt.setString(4, aes.encrypt(member.getEmail()));
        
        ...
        
        result = pstmt.executeUpdate();
    } catch(UnsupportedEncodingException | GeneralSecurityException e){
    	e.printStackTrace();
    } finally{
    	close();
    }	// end of try~catch~finally-----------------
    return result;
}	// end of public int registerMember(MemberVO member) throws SQLException------

0개의 댓글

관련 채용 정보