서블릿으로 만들기

  • 회원 저장

  • 회원 목록 조회

회원 도메인 모델

@Getter @Setter
@NoArgsConstructor
public class Member {
    private Long id;
    private String username;
    private int age;

    public Member(String username, int age) {
        this.username = username;
        this.age = age;
    }
}

회원 등록 폼

@WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form")
public class MemberFormServlet extends HttpServlet {

    @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");
    }
}

HTML을 자바 코드로 작성해야 해서 불편하다.

회원 저장

  1. 파라미터를 조회해서 Member 객체를 만든다.

  2. Member 객체를 MemberRepository를 통해 저장한다.

  3. Member 객체를 사용해 결과 화면용 HTML을 동적으로 만들어서 응답한다.

회원 목록

  1. memberRepository.findAll()로 모든 회원을 조회한다.

  2. 회원 목록 HTML을 for 루프로 회원 수 만큼 동적으로 생성하고 응답한다.

템플릿 엔진

서블릿과 자바 코드만으로 HTML을 만들어보았다. 서블릿 덕에 동적으로 원하는 HTML을 만들 수 있었다. 정적인 HTML은 회원의 저장 결과나 회원 목록같이 계속 바뀌는 결과를 HTML로 만들지 못할 것이다.

하지만 코드는 굉장히 복잡하다. 이때 템플릿 엔진을 이용하면 HTML 문서에서 필요한 곳만 코드를 적용해 동적으로 변경할 수 있다. 여기서는 스프링과 잘 통합되는 Thymeleaf를 사용한다.

Last updated

Was this helpful?