jsp 코드

회원가입 기능 구현 예시 - JSP로 간단한 회원가입 폼 만들기

sw-it 2023. 3. 14. 12:06
반응형

회원가입 폼 (register.jsp):

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>회원가입</title>
</head>
<body>
    <h1>회원가입 페이지</h1>
    <form action="registerProcess.jsp" method="post">
        <p>아이디 : <input type="text" name="id"></p>
        <p>비밀번호 : <input type="password" name="password"></p>
        <p>이름 : <input type="text" name="name"></p>
        <p>이메일 : <input type="text" name="email"></p>
        <p><input type="submit" value="회원가입"></p>
    </form>
</body>
</html>

위 코드에서는 회원가입 폼을 제공합니다. 폼은 form 태그를 사용하여 생성하며, action 속성과 method 속성을 사용하여 폼이 전송될 경로와 방식을 지정합니다. 여기서는 registerProcess.jsp 페이지로 POST 방식으로 전송되도록 설정되어 있습니다.

그리고 폼 내부에는 아이디, 비밀번호, 이름, 이메일을 입력할 수 있는 입력란이 제공됩니다. 여기서는 이메일 입력란에 type="email" 속성을 사용하여 이메일 형식의 입력을 쉽게 할 수 있도록 했습니다.

마지막으로 폼 하단에는 회원가입 버튼이 제공되며, 이 버튼을 클릭하면 입력된 내용이 registerProcess.jsp 페이지로 전송됩니다.

다음으로는 registerProcess.jsp 파일에서 회원가입 처리를 구현합니다. 이를 위해 registerProcess.jsp 파일을 다음과 같이 작성합니다.

 

 

회원가입 처리 (registerProcess.jsp):

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    // 데이터베이스 연결
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC", "root", "password");

        // 입력된 회원 정보를 가져옴
        String id = request.getParameter("id");
        String password = request.getParameter("password");
        String name = request.getParameter("name");
        String email = request.getParameter("email");

        // 아이디 중복 검사
        String sql = "SELECT COUNT(*) FROM user WHERE id = ?";
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, id);
        ResultSet rs = pstmt.executeQuery();
        rs.next();
        int count = rs.getInt(1);
        rs.close();
        pstmt.close();
        if (count > 0) { // 이미 존재하는 아이디인 경우
            out.print("<p>이미 존재하는 아이디입니다.</p>");
        } else { // 새로운 아이디인 경우
            // 회원 정보를 데이터베이스에 저장
            sql = "INSERT INTO user (id, password, name, email) VALUES (?, ?, ?, ?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, id);
            pstmt.setString(2, password);
            pstmt.setString(3, name);
            pstmt.setString(4, email);
            pstmt.executeUpdate();
            pstmt.close();
            out.print("<p>회원가입이 완료되었습니다.</p>");
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 자원 해제
        if (pstmt != null) try { pstmt.close(); } catch (SQLException ex) {}
        if (conn != null) try { conn.close(); } catch (SQLException ex) {}
    }
%>

 

위 코드에서는 먼저 데이터베이스에 연결하고, 입력된 회원 정보를 가져옵니다. 그리고 아이디 중복 검사를 수행합니다. 이미 존재하는 아이디인 경우에는 오류 메시지를 출력하고, 그렇지 않은 경우에는 회원 정보를 데이터베이스에 저장합니다.

데이터베이스 연결에 사용되는 정보는 Class.forName과 DriverManager.getConnection 메서드를 사용하여 지정합니다. 이때, JDBC 드라이버의 클래스 이름과 데이터베이스 접속 URL, 사용자 이름, 비밀번호 등을 지정합니다.

그리고 입력값의 유효성 검사나 암호화 등의 작업이 더 필요합니다. 회원가입 기능은 보안성이 매우 중요한 작업입니다. 따라서, 실제 서비스에서 사용하기 위해서는 보안성을 고려한 코드를 작성해야 합니다.

 

registerSuccess.jsp 파일을 만들어서 회원가입에 성공했다는 메시지를 출력해보겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>회원가입 완료</title>
</head>
<body>
    <h1>회원가입이 완료되었습니다.</h1>
    <p>로그인 페이지로 이동하여 로그인해주세요.</p>
    <p><a href="login.jsp">로그인 페이지로 이동</a></p>
</body>
</html>

위 코드에서는 회원가입이 성공했다는 메시지를 출력하고, 로그인 페이지로 이동할 수 있는 링크를 제공합니다.

이제 간단한 회원가입 기능을 구현하는 예제 코드를 통해 JSP를 이용하여 회원가입 기능을 구현하는 방법을 알아보았습니다. 하지만 이 예제 코드는 보안에 취약하므로, 실제 서비스에서 사용할 때에는 보안에 대한 고민을 해야합니다. 더불어, 입력값의 유효성 검사, SQL 인젝션 방어 등도 고려해야 합니다.

반응형