MVC를 이해하기 위한 댄서정보 등록 서비스 실습

실습 1. 서블릿만으로 구성하는 경우


package com.jsp.entity;

import java.util.List;
import java.util.Objects;

public class Dancer {

    public enum DanceLevel {
        BEGINNER("초보", 50000),
        AMATEUR("아마추어", 100000),
        PROFESSIONAL("프로페셔널", 200000)
        ;
        private final String levelDescription; // 레벨 설명
        private final int payPerEvent; // 공연당 페이

        DanceLevel(String levelDescription, int payPerEvent) {
            this.levelDescription = levelDescription;
            this.payPerEvent = payPerEvent;
        }

        public String getLevelDescription() {
            return levelDescription;
        }

        public int getPayPerEvent() {
            return payPerEvent;
        }
    }

    public enum Genre {
        HIPHOP("힙합"),
        STREET("스트릿"),
        KPOP("케이팝"),

        ;

        private final String genreDescription; // 장르 설명

        Genre(String genreDescription) {
            this.genreDescription = genreDescription;
        }

        public String getGenreDescription() {
            return genreDescription;
        }
    }

    private String name; // 댄서 이름

    private String crewName; // 댄서 팀 이름

    private DanceLevel danceLevel; // 댄서 실력 등급

    private List<Genre> genres; // 댄서의 장르리스트

    public Dancer() {
    }

    public Dancer(String name, String crewName, DanceLevel danceLevel, List<Genre> genres) {
        this.name = name;
        this.crewName = crewName;
        this.danceLevel = danceLevel;
        this.genres = genres;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCrewName() {
        return crewName;
    }

    public void setCrewName(String crewName) {
        this.crewName = crewName;
    }

    public DanceLevel getDanceLevel() {
        return danceLevel;
    }

    public void setDanceLevel(DanceLevel danceLevel) {
        this.danceLevel = danceLevel;
    }

    public List<Genre> getGenres() {
        return genres;
    }

    public void setGenres(List<Genre> genres) {
        this.genres = genres;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Dancer dancer = (Dancer) o;
        return Objects.equals(name, dancer.name) && Objects.equals(crewName, dancer.crewName) && danceLevel == dancer.danceLevel && Objects.equals(genres, dancer.genres);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, crewName, danceLevel, genres);
    }

    @Override
    public String toString() {
        return "Dancer{" +
                "name='" + name + '\\'' +
                ", crewName='" + crewName + '\\'' +
                ", danceLevel=" + danceLevel +
                ", genres=" + genres +
                '}';
    }
}
package com.jsp.chap02;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/chap02/dancer/register")
public class DancerRegisterViewServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

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

        PrintWriter w = resp.getWriter();

        w.write("<!DOCTYPE html>\\n");
        w.write("<html>\\n");
        w.write("<head>\\n");
				w.write("<style>\\n");
        w.write("label { display: block; }\\n");
        w.write("</style>\\n");
        w.write("</head>\\n");
        w.write("<body>\\n");
        w.write("<form action=\\"/chap02/dancer/reg-process\\" method=\\"post\\" id=\\"reg-form\\">");
        w.write("<label># 이름 : <input type=\\"text\\" name=\\"name\\"></label>");
        w.write("<label># 크루이름 : <input type=\\"text\\" name=\\"crewName\\"></label>");
        w.write("<label># 레벨 :<input type=\\"radio\\" name=\\"danceLevel\\" value=\\"PROFESSIONAL\\"> 프로 <input type=\\"radio\\" name=\\"danceLevel\\" value=\\"AMATEUR\\"> 아마추어 <input type=\\"radio\\" name=\\"danceLevel\\" value=\\"BEGINNER\\"> 초보자 </label>");
        w.write("<label># 장르 :<input type=\\"checkbox\\" name=\\"genres\\" value=\\"HIPHOP\\"> 힙합 <input type=\\"checkbox\\" name=\\"genres\\" value=\\"STREET\\"> 스트릿 <input type=\\"checkbox\\" name=\\"genres\\" value=\\"KPOP\\"> 케이팝 </label>");
        w.write("<label><button id=\\"reg-btn\\" type=\\"submit\\">등록</button></label>");
        w.write("</form>");
        w.write("</body>\\n");
        w.write("</html>");

        w.flush(); 
        w.close(); 

    }
}