현의 개발 블로그

[Servlet, JSP, MVC 패턴] 서블릿으로 웹 어플리케이션 만들기 본문

스프링부트 이론/MVC

[Servlet, JSP, MVC 패턴] 서블릿으로 웹 어플리케이션 만들기

hyun2371 2023. 6. 19. 21:43

Servlet으로 회원 관리 웹 어플리케이션을 만들어보자.

 

회원 저장 폼 만들기

HttpServlet.service()를 재정의 해준다.

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

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

회원 저장 폼을 만들어준다.

자바로 html 코드를 직접 작성해야 하므로 오타날 확률이 높다.

 

전송 버튼을 누르면 /servlet/members/save로 post 요청을 한다.

해당 url을 매핑하는 서블릿을 아직 생성하지 않았기 때문에 오류가 난다.

 

white label error 페이지에서 개발자 모드로 열면 form data를 확인할 수 있다.

 

 

회원 저장하기

member를 저장하는 servlet을 만들어 /servlet/members/save로 매핑시키자.

 

MemberSaveServlet을 만들고 HttpServlet.service()를 오버라이딩 해줬다.

@WebServlet(name="memberSaveServlet", urlPatterns = "/servlet/members/save")
public class MemberSaveServlet extends HttpServlet {
    
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}

 

사용자가 입력한 form-data를 받아오자.

request.getParameter()는 String을 반환하므로 Integer로 변환해야 한다.

//form-data 받아옴
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));

 

입력 폼으로 받아온 값을 넣고 Member 객체를 생성한다.

Member member = new Member(username, age);
memberRepository.save(member);

 

Member 객체의 필드를 html로 응답해준다.

response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter w = response.getWriter();

w.write(....
        "    <li>id=" + member.getId() + "</li>\n" +
        "    <li>username=" + member.getUsername() + "</li>\n" +
        " <li>age=" + member.getAge() + "</li>\n" + "</ul>\n" +
        "</html>");

 

form-data에 값을 넣어 전송하면 아래와 같이 response를 받아올 수 있다.

 

 

회원 목록 조회하기

회원 목록을 조회하는 MemberListServlet을 만들자.

 

HttpServlet.Service를 재정의 해주자.

@WebServlet(name = "memberListServlet", urlPatterns="/servlet/members")
public class MemberListServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

저장된 모든 멤버를 조회하는 비즈니스 로직을 작성한다.

List<Member> members = memberRepository.findAll();

 

회원 목록을 응답해주는 코드를 작성한다.

response.setContentType("text/html");
response.setCharacterEncoding("utf-8");

PrintWriter w = response.getWriter();

...
for (Member member : members) {
    w.write("    <tr>");
    w.write("        <td>" + member.getId() + "</td>");
    w.write("        <td>" + member.getUsername() + "</td>");
    w.write("        <td>" + member.getAge() + "</td>");
    w.write("    </tr>");
	}
...
}

 

아래처럼 Member를 조회해 출력해준다.

http://localhost:8080/servlet/members

 

 

정리

서블릿과 자바 코드만으로 HTML을 만들었다.

서블릿 덕분에 동적인 HTML을 만들 수 있었다.

그러나, 자바 내에서 HTML 코드를 작성하는 건 복잡하고 비효율적이다.

 

 

HTML 문서에 동적으로 변경되는 부분만 자바 코드로 작성하는게 편리할 것이다.

 

템플릿 엔진을 사용하면 HTML 내에서 필요한 곳만 코드를 적용해 동적으로 바꿀 수 있다.

이러한 템플릿 엔진에는 JSP, Thymeleaf 등이 있다.

 

다음 글에서는 JSP로 웹 어플리케이션을 만들 것이다.

 

 

 


Reference

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

Comments