본문 바로가기

Study/Java

자바스크립트로 서블릿 요청(Request)하기

반응형

일반적으로 HTML의 form 태그를 이용해서 서블릿을 호출한다.

하지만 아이디, 비밀번호 검증 등 프론트엔드 영역에서 추가 동작을 필요로 하는 경우가 있다.

이 경우 자바스크립트를 이용해 서블릿을 호출하는 순서를 변경할 수 있다.

먼저 HTML의 form 태그에서 <input type="submit" .../> 호출하는 대신 onClick 속성을 이용해 함수를 호출한다.
호출한 함수에서 필요로 하는 동작(아이디, 비밀번호 입력 여부)을 수행한 뒤 자바스크립트의 document 객체를 활용해서 서블릿을 호출한다.


login_form.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>로그인 테스트</title>
        <script type="text/javascript">
            function fn_validate() {
                // <form> 태그의 name 속성으로 <form> 태그 객체를 받아온다.
                var frmLogin = document.frmmLogin;    
                var user_id = frmLogin.user_id.value;
                var user_pw = frmLogin.user_pw.value;

                if ((user_id.length == 0 || user_id == "") 
                    || (user_pw.length == 0 || user_pw == "")) {
                    alert("아이디와 비밀번호는 필수입니다.");
                } else {
                    frmLogin.method = "post";
                    frmLogin.action = "login";
                    frmLogin.submit();    // 자바스크립트에서 서블릿으로 전송
                }
            }
        </script>
    </head>
    <body>
        <form name="frmLogin" method="post" action="login" encType="UTF-8">
            아이디 : <input type="text" name="user_id" /><br />
            비밀번호 : <input type="password" name="user_pw" /><br />
            <input type="button" onClick="fn_validate()" value="로그인" />
            <input type="reset" value="다시 입력" />
        </form>
    </body>
</html>

LoginServlet.java

package com.study {

    @WebServlet("/login")
    public class LoginServlet extendhs HttpServlet {
        public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            request.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter writer = response.getWriter();

            String id = request.getParameter("user_id");
            String pw = request.getParameter("user_pw");

            System.out.println("아이디 : " + id);
            System.out.println("비밀번호 : " + pw);

            writer.print("<!DOCTYPE html>");
            writer.print("<html>");
            writer.print("    <head>");
            writer.print("        <meta charset=\"UTF-8\" />");
            writer.print("        <title>결과</title>");
            writer.print("    </head>");
            writer.print("    <body>");
            writer.print("        아이디 : " + id + "<br />");
            writer.print("        비밀번호 : " + pw + "<br />");
            writer.print("    </body>");
            writer.print("</html>");
        }
    }
}
반응형