ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서블릿을 이용한 회원가입 만들기
    스프링/스프링 MVC 패턴 2023. 2. 10. 15:55

    서블릿을 이용해서 회원가입을 해볼 것이다.

    new-form

    @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form")
    public class MemberFormServlet extends HttpServlet {
    
        private MemberRepository memberRepository = MemberRepository.getInstance();
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
    
            PrintWriter w = response.getWriter();
            w.write("<!DOCTYPE html>\n" +
                    "<html>\n" +
                    "<head>\n" +
                    " <meta charset=\"UTF-8\">\n" +
                    " <title>Title</title>\n" +
                    "</head>\n" +
                    "<body>\n" +
                    "<form action=\"/servlet/members/save\" method=\"post\">\n" +
                    " username: <input type=\"text\" name=\"username\" />\n" +
                    " age: <input type=\"text\" name=\"age\" />\n" +
                    " <button type=\"submit\">전송</button>\n" +
                    "</form>\n" +
                    "</body>\n" +
                    "</html>\n");
        }
    }

    member라는 변수를 사용해서 회원가입을 하면 저장이 되는 코드이다.

    localhost:8080/servlet/members/new-form을 입력하면 이름과 나이를 입력할 수 있는 창이 생기고 입력을 하면 아직은 아무 일도 일어나지 않는다.

    저장을 했을 때 저장이 되었는지 확인해주는 클래스를 아래에 만들면 된다.

     

     

     

    save

    @WebServlet(name = "memberSaveServlet", urlPatterns = "/servlet/members/save")
    public class MemberSaveServlet extends HttpServlet {
    
        private MemberRepository memberRepository = MemberRepository.getInstance();
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("MemberSaveServlet.service");
            String username = request.getParameter("username");
            int age = Integer.parseInt(request.getParameter("age"));
            // getParamater는 string밖에 인식 못하기 때문에 Integer.parseInt를 써야지 int로 넣을 수 있다.
    
            Member member = new Member(username, age);
            memberRepository.save(member);
    
            response.setContentType("text/html"); // 저장되면 결과를 html로 응답해줌
            response.setCharacterEncoding("utf-8");
    
            PrintWriter w = response.getWriter();
            w.write("<html>\n" +
                    "<head>\n" +
                    " <meta charset=\"UTF-8\">\n" +
                    "</head>\n" +
                    "<body>\n" +
                    "성공\n" +
                    "<ul>\n" +
                    " <li>id="+member.getId()+"</li>\n" +
                    " <li>username="+member.getUsername()+"</li>\n" +
                    " <li>age="+member.getAge()+"</li>\n" +
                    "</ul>\n" +
                    "<a href=\"/index.html\">메인</a>\n" +
                    "</body>\n" +
                    "</html>");
        }
    }

    new-form에서 회원 정보를 입력하면 입력이 되었다는 것을 확인시켜주는 페이지로 이동하는 코드이다.

    new-form 페이지에서 이름과 나이를 입력하고 전송을 누르면

    localhost:8080/servlet/members/save 페이지로 이동하고 id와 username, age를 출력하면서 성공이 되었다는 것을 확인 시켜주는 페이지이다.

     

     

    List

    @WebServlet(name = "memberListServlet", urlPatterns = "/servlet/members")
    public class MemberListServlet extends HttpServlet {
    
        private MemberRepository memberRepository = MemberRepository.getInstance();
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            List<Member> members = memberRepository.findAll();
    
            response.setContentType("text/html"); // 저장되면 결과를 html로 응답해줌
            response.setCharacterEncoding("utf-8");
    
            PrintWriter w = response.getWriter();
            w.write("<html>");
            w.write("<head>");
            w.write(" <meta charset=\"UTF-8\">");
            w.write(" <title>Title</title>");
            w.write("</head>");
            w.write("<body>");
            w.write("<a href=\"/index.html\">메인</a>");
            w.write("<table>");
            w.write(" <thead>");
            w.write(" <th>id</th>");
            w.write(" <th>username</th>");
            w.write(" <th>age</th>");
            w.write(" </thead>");
            w.write(" <tbody>");
    
            for (Member member : members) { // for문으로 member들을 동적으로 돌리기
                w.write(" <tr>");
                w.write(" <td>" + member.getId() + "</td>");
                w.write(" <td>" + member.getUsername() + "</td>");
                w.write(" <td>" + member.getAge() + "</td>");
                w.write(" </tr>");
            }
            w.write(" </tbody>");
            w.write("</table>");
            w.write("</body>");
            w.write("</html>");
        }
    }

    회원 목록을 보여주는 코드이다.

    위에서 회원가입을 하고 localhost:8080/servlet/members로 들어가면 지금까지 회원가입을 한 사람들이 보이는 페이지이다.

    물론 메모리에 저장되어있기때문에 지금 intellij에서 실행하고 있는 프로그램을 종료시키거나 intellij를 종료하면 데이터가 다 날아갈것이다.

    member list를 보여주는 페이지는 위와 같다.

    kim과 spring이라는 사람이 회원가입을 했을 때 위와 같이 id, username, age가 출력된다.

     

     

     

    서블릿을 이용하면 동적으로 코드를 짤 수 있다는 장점이 있다.

    하지만 서블릿에는 가장 큰 단점이 있다.

    html 코드가 매우 길며 오타가 났을 때에도 어디서 났는지 확인할 방법이 적다는 오류가 있다.

    '스프링 > 스프링 MVC 패턴' 카테고리의 다른 글

    MVC 패턴  (0) 2023.02.10
    JSP를 이용한 회원가입  (0) 2023.02.10
    서블릿 HTTP 응답 데이터  (0) 2023.02.10
    서블릿 HTTP 요청 데이터  (0) 2023.02.10
    HTML, HTTP API, CSR, SSR  (0) 2023.02.07
Designed by Tistory.