You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
회원 저장소 hello/servlet/domain/member/MemberRepository
packagehello.servlet.domain.member;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
/*** 동시성 문제가 고려되어 있지 않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려 */publicclassMemberRepository {
privateMap<Long, Member> store = newHashMap<>();
privatestaticlongsequence = 0L; // id 가 하나씩 증가하는 시퀀스로 사용함privatestaticfinalMemberRepositoryinstance = newMemberRepository();
//싱글톤 만들 때는 private로 생성자를 막아야한다. -> 아무나 생성하지 못하게 해야한다.// 무조건 이걸로 조회할 수 밖에 없다.publicstaticMemberRepositorygetInstance() {
returninstance;
}
privateMemberRepository() {
}
publicMembersave(Membermember) {
member.setId(++sequence);
store.put(member.getId(), member);
returnmember;
}
publicMemberfindById(Longid) {
returnstore.get(id);
}
publicList<Member> findAll() {
returnnewArrayList<>(store.values()); // store 자체를 보호하기 위함
}
publicvoidclearStore() {
store.clear();
}
}
회원 저장소는 싱글톤 패턴을 적용했다.
스프링을 사용하면 스프링 빈으로 등록하면 되지만, 지금은 최대한 스프링 없이 순수 서블릿 만으로 구현하는 것이 목적이다.
싱글톤 패턴은 객체를 단 하나만 생성해서 공유해야 하므로 생성자를 private 접근자로 막아둔다.
회원 저장소 테스트 코드(test) hello/servlet/domain/member/MemberRepositoryTest
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
✏️ 회원 관리 웹 애플리케이션 요구사항
회원 정보
usernameage기능 요구사항
회원 도메인 모델
hello/servlet/domain/member/Memberhello/servlet/domain/member/MemberRepositoryhello/servlet/domain/member/MemberRepositoryTest✏️ 서블릿으로 회원 관리 웹 애플리케이션 만들기
hello/servlet/web/servlet/MemberFormServlethello/servlet/web/servlet/MemberSaveServlethttp://localhost:8080/servlet/members/new-formhello/servlet/web/servlet/MemberListServletMemberListServlet은 다음 순서로 동작한다.memberRepository.findAll()를 통해 모든 회원을 조회한다.실행
📍 참고
main/webapp/index.html✏️ JSP로 회원 관리 웹 애플리케이션 만들기
JSP 라이브러리 추가
build.gradle의dependencies에 추가회원 등록 폼 JSP
main/webapp/jsp/members/new-form.jsp<% page contentType = "text/html;charset=UTF-8" language="java" %>main/webapp/jsp/members/save.jsp<%@ page import="hello.servlet.domain.member.MemberRepository" %><% ~~ %><%= ~~ %>main/webapp/jsp/members.jsp🔍 서블릿과 JSP의 한계
🔍 MVC 패턴의 등장
🔗출처
All reactions