IT/JSP

[쉽게 배우는 JSP 웹 프로그래밍 개정2판] 8장 설명, 연습 문제

곰탱이들 2024. 6. 6.

8장 연습 문제 소스코드

8장 연습문제

 

1. 사용자가 폼 페이지에서 입력한 데이터 값이 서버로 전송되기 전에 특정 규칙에 맞게 입력되었는지 검증하는 것은 무엇인가?

  • 1번 유효성 검사

2. 유효성 검사가 필요한 이유에 해당하지 않는 것은 무엇인가?

  • 4번 예외처리 방지

3. 유효성 검사로 옳지 않은 것은 무엇인가?

  • 2번 예외처리 확인하기

4. 숫자 여부를 확인하는 유효성 검사의 메소드는 무엇인가?

  • 1번 isNaN()

5. 사용자가 폼 페이지의 입력 항목에 입력한 데이터 값이 특정 형태에 적합한지 검사하는 것은 무엇인가?

  • 2번 데이터 형식 유효성 검사

6. 정규 표현식의 표현으로 잘못 짝지어진 것은 무엇인가?

  • 3번 x*: x가 1번 이상 반복된다

7. 정규 표현식을 이용한 유효성 검사로 데이터 형식과 패턴이 잘못 짝지어진 것은 무엇인가?

  • 3번 휴대전화: ^\d{2.3}-\d{3,4}-\d{4}$
  • 4번 주민등록번호: \d{6} - [1-4]\d{6}

소스 코드

8.

<!DOCTYPE html>
<html>
<head>
    <title>Validation</title>
    <script type="text/javascript">
        function validateForm() {
            var username = document.forms["validationForm"]["username"].value;
            var password = document.forms["validationForm"]["password"].value;
            
            if (username == "") {
                alert("아이디를 입력해주세요.");
                return false;
            }
            
            if (password == "") {
                alert("비밀번호를 입력해주세요.");
                return false;
            }
            
            if (password.includes(username)) {
                alert("비밀번호는 아이디를 포함할 수 없습니다.");
                return false;
            }
            
            return true;
        }
    </script>
</head>
<body>
    <h2>Validation Example</h2>
    <form name="validationForm" action="validation_process.jsp" method="post" onsubmit="return validateForm()">
        아이디: <input type="text" name="username"><br>
        비밀번호: <input type="password" name="password"><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Validation Processing</title>
</head>
<body>
    <h2>Validation Processing</h2>
    <% 
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        out.println("아이디: " + username + "<br>");
        out.println("비밀번호: " + password + "<br>");
    %>
</body>
</html>

9.

<!DOCTYPE html>
<html>
<head>
    <title>Validation Example</title>
    <script type="text/javascript">
        function validatePassword(password) {
            var pattern = /([a-zA-Z0-9])\1\1/;
            return pattern.test(password);
        }

        function validateForm() {
            var username = document.forms["validationForm"]["username"].value;
            var password = document.forms["validationForm"]["password"].value;
            var confirmPassword = document.forms["validationForm"]["confirmPassword"].value;
            
            if (username == "") {
                alert("아이디를 입력해주세요.");
                return false;
            }
            
            if (password == "") {
                alert("비밀번호를 입력해주세요.");
                return false;
            }

            if (confirmPassword == "") {
                alert("비밀번호 확인을 입력해주세요.");
                return false;
            }

            if (password !== confirmPassword) {
                alert("비밀번호와 비밀번호 확인이 일치하지 않습니다.");
                return false;
            }

            if (validatePassword(password)) {
                alert("비밀번호는 연속 3자 이상의 영문 또는 숫자를 포함할 수 없습니다.");
                return false;
            }
            
            return true;
        }
    </script>
</head>
<body>
    <h2>Validation Example</h2>
    <form name="validationForm" action="validation_process.jsp" method="post" onsubmit="return validateForm()">
        아이디: <input type="text" name="username"><br>
        비밀번호: <input type="password" name="password"><br>
        비밀번호 확인: <input type="password" name="confirmPassword"><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Validation Processing</title>
</head>
<body>
    <h2>Validation Processing</h2>
    <% 
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String confirmPassword = request.getParameter("confirmPassword");

        boolean hasConsecutiveChars(String str) {
            for (int i = 0; i < str.length() - 2; i++) {
                if (str.charAt(i) == str.charAt(i+1) && str.charAt(i+1) == str.charAt(i+2)) {
                    return true;
                }
            }
            return false;
        }

        if (username == null || username.isEmpty()) {
            out.println("<script>alert('아이디를 입력해주세요.'); history.back();</script>");
        } else if (password == null || password.isEmpty()) {
            out.println("<script>alert('비밀번호를 입력해주세요.'); history.back();</script>");
        } else if (confirmPassword == null || confirmPassword.isEmpty()) {
            out.println("<script>alert('비밀번호 확인을 입력해주세요.'); history.back();</script>");
        } else if (!password.equals(confirmPassword)) {
            out.println("<script>alert('비밀번호와 비밀번호 확인이 일치하지 않습니다.'); history.back();</script>");
        } else if (hasConsecutiveChars(password)) {
            out.println("<script>alert('비밀번호는 연속 3자 이상의 영문 또는 숫자를 포함할 수 없습니다.'); history.back();</script>");
        } else {
        
            out.println("아이디: " + username + "<br>");
            out.println("비밀번호: " + password + "<br>");
        }
    %>
</body>
</html>

10.

<!DOCTYPE html>
<html>
<head>
    <title>Validation Example</title>
    <script type="text/javascript">
        function validatePassword(password) {
            var hasLetter = /[a-zA-Z]/.test(password);
            var hasDigit = /\d/.test(password);
            var hasSpecialChar = /[!@#$%^&*(),.?":{}|<>]/.test(password);
            var isValidLength = password.length >= 8;
            
            return hasLetter && hasDigit && hasSpecialChar && isValidLength;
        }

        function validateForm() {
            var username = document.forms["validationForm"]["username"].value;
            var password = document.forms["validationForm"]["password"].value;
            var confirmPassword = document.forms["validationForm"]["confirmPassword"].value;
            
            if (username == "") {
                alert("아이디를 입력해주세요.");
                return false;
            }
            
            if (password == "") {
                alert("비밀번호를 입력해주세요.");
                return false;
            }

            if (confirmPassword == "") {
                alert("비밀번호 확인을 입력해주세요.");
                return false;
            }

            if (password !== confirmPassword) {
                alert("비밀번호와 비밀번호 확인이 일치하지 않습니다.");
                return false;
            }

            if (!validatePassword(password)) {
                alert("비밀번호는 영문, 숫자, 특수기호를 포함하여 8자리 이상으로 구성되어야 합니다.");
                return false;
            }
            
            return true;
        }
    </script>
</head>
<body>
    <h2>Validation Example</h2>
    <form name="validationForm" action="validation_process.jsp" method="post" onsubmit="return validateForm()">
        아이디: <input type="text" name="username"><br>
        비밀번호: <input type="password" name="password"><br>
        비밀번호 확인: <input type="password" name="confirmPassword"><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Validation Processing</title>
</head>
<body>
    <h2>Validation Processing</h2>
    <% 
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String confirmPassword = request.getParameter("confirmPassword");

        boolean isValidPassword(String password) {
            boolean hasLetter = password.matches(".*[a-zA-Z].*");
            boolean hasDigit = password.matches(".*\\d.*");
            boolean hasSpecialChar = password.matches(".*[!@#$%^&*(),.?\":{}|<>].*");
            boolean isValidLength = password.length() >= 8;
            return hasLetter && hasDigit && hasSpecialChar && isValidLength;
        }

        if (username == null || username.isEmpty()) {
            out.println("<script>alert('아이디를 입력해주세요.'); history.back();</script>");
        } else if (password == null || password.isEmpty()) {
            out.println("<script>alert('비밀번호를 입력해주세요.'); history.back();</script>");
        } else if (confirmPassword == null || confirmPassword.isEmpty()) {
            out.println("<script>alert('비밀번호 확인을 입력해주세요.'); history.back();</script>");
        } else if (!password.equals(confirmPassword)) {
            out.println("<script>alert('비밀번호와 비밀번호 확인이 일치하지 않습니다.'); history.back();</script>");
        } else if (!isValidPassword(password)) {
            out.println("<script>alert('비밀번호는 영문, 숫자, 특수기호를 포함하여 8자리 이상으로 구성되어야 합니다.'); history.back();</script>");
        } else {
        
            out.println("아이디: " + username + "<br>");
            out.println("비밀번호: " + password + "<br>");
        }
    %>
</body>
</html>

댓글