MVC를 이해하기 위한 댄서정보 등록 서비스 실습
실습 1. 서블릿만으로 구성하는 경우
- src/main/java 디렉토리에 com.jsp.entity패키지 아래에 Dancer.java클래스를 만들고 아래 코드를 작성해주세요.
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 +
'}';
}
}
- src/main/java 디렉토리에 com.jsp.chap02 패키지를 생성하고 DancerRegisterViewServlet 클래스를 생성하세요
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();
}
}