Spring MVC 1편 서블릿 JSP 웹

신재원·2023년 6월 17일
0

Spring MVC 1편

목록 보기
35/35

📣 도메인 Repository

 *
 * 동시성 문제가 고려되지않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려
 * */
public class MemberRepository {

    // static을 사용 했기 때문에, 
    // MemberRepository가 new 인스턴스를 사용해도 메모리 상 한개만 등록된다.
    private static Map<Long, Member> store = new HashMap<>();
    private static long sequence = 0L;

    // servlet으로 만들기 때문에 Singleton 직접 선언
   private static final MemberRepository instance = new MemberRepository();


    public static MemberRepository getInstance() {
        return instance;
    }

    // Singleton을 사용하기 위해 private으로 막아준다.
    private MemberRepository() {

    }

    public Member save(Member member) {
        member.setId(sequence++);
        store.put(member.getId(), member);
        return member;
    }

    public Member findById(Long id) {
        return store.get(id);
    }

    public List<Member> findAll() {
        // private static Map<Long, Member> store = 
        		new HashMap<>(); , Member가 values 값임으로 반환
        return new ArrayList<>(store.values());
    }

    public void clearStore() {
        store.clear();
    }
}
  • static 으로 선언한다는것은 new 인스턴스로 객체를 생성해도 static 메소드는 메모리에 한 개만 등록됩니다.

▶ 서블릿으로 회원 관리 웹

( 템플릿 엔진 없이 html 코드를 관리해야 함으로, 유지보수성이 엄청 떨어지게 됩니다. )

  • 이전 블로그와 똑같이 html 코드를 자바 코드로 작성해줘야합니다.
    (실수가 발생할수 있습니다.)

✔ 입력을 받을수 있는 Form 형식의 html 코드

( 추가로 repository를 사용한 save 코드를 작성해줘야 웹 페이지에 보이게 됩니다. )

▶ JSP로 회원 관리 웹

  • JSP 사용시 필요한 라이브러리 추가
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
  • JSP 파일은 webapp 폴더에서 생성해야 합니다.
  • JSP 파일 생성후
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

라는 코드가 반드시 존재 해야 합니다.

JSP 작성

  • 자바코드를 그대로 다 사용할수 있습니다. (import 사용 등)
  • <% %> 이 부분에는 자바 코드를 작성할수 있으며, %> 밖에 있는 html 코드들은 println 으로 그냥 출력됩니다.

정리

  • 서블릿과 JSP의 한계

📣 서블릿의 한계

서블릿으로 개발할 경우에 View 화면을 위한 html 을 만드는 코드들이 자바 코드에 뒤섞여 가독성이 떨어지고 복잡했습니다.

📣 JSP 적용 및 JSP의 한계

JSP 를 사용하면서 View의 html 코드를 깔끔하게 따로 작업하고, 중간중간 동적으로 변경이 필요한 부분을 자바 코드로 적용 했습니다.
이렇게 해도 문제점이 있습니다. ➡ JSP 파일에 레포지토리등 다양한 코드가 노출되어있습니다. (너무 많은 책임) (유지 보수성이 좋지 않음)

👀 MVC 패턴의 등장 배경

0개의 댓글