본문 바로가기

전체 글160

[Servlet] 회원 관리 웹 애플리케이션 만들기2 (프론트 컨트롤러 패턴) https://wngml56.tistory.com/237 회원관리 웹 애플리케이션 만들기 (서블릿, JSP, MVC 패턴) 서론 서블릿, JSP, MVC 패턴으로 회원 관리 웹 애플리케이션을 만들어 봅시다. 본론 회원 관리 웹 애플리케이션 요구사항 회원 정보 이름: username 나이: age 기능 요구사항 회원 저장 회원 목록 조회 wngml56.tistory.com 이어지는 글입니다. 이번에는 프론트 컨트롤러 패턴을 도입해 회원 관리 애플리케이션을 만들어보겠습니다. 목차 프론트 컨트롤러 패턴 소개 프론트 컨트롤러 도입 전 컨트롤러에 공통된 중복 코드들이 포함되어 있습니다. 프론트 컨트롤러 도입 후 공통 부분을 프론트 컨트롤러에서 처리합니다. FrontController 패턴 프론트 컨트롤러 서블릿으.. 2023. 8. 18.
[Servlet] 회원관리 웹 애플리케이션 만들기1 (+JSP, MVC 패턴) 목차 서론 서블릿, JSP, MVC 패턴으로 회원 관리 웹 애플리케이션을 만들어 봅시다. 회원 관리 웹 애플리케이션 요구사항 회원 정보 이름: username 나이: age 기능 요구사항 회원 저장 회원 목록 조회 회원 도메인 모델 @Getter @Setter public class Member { private Long id;// Member를 회원 저장소에 저장하면 회원 저장소가 할당 private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } 회원 저장소 /** * 동시성 문제가 고려되어 있지 .. 2023. 8. 17.
[Servlet] HttpServletRequest, HttpServletResponse 목차 서론 Servlet이 제공하는 HttpServletRequest와 HttpServletResonse에 대해 알아봅시다. HttpServletRequest HttpServletRequest의 역할 HTTP 요청 메시지는 텍스트 형태로 되어 있습니다. 이를 개발자가 직접 파싱해서 원하는 데이터를 뽑아낼 수도 있지만, 매우 번거롭습니다. 서블릿은 개발자를 대신하여 HTTP 요청 메시지를 파싱합니다. 그리고 그 결과를 HttpServletRequest 객체에 담아 제공합니다. HttpServletRequest를 이용하여 다음과 같은 HTTP 요청 메시지를 편리하게 사용할 수 있습니다. HTTP 요청 메시지 POST /save HTTP/1.1 //Start-line Host: localhost:8080 //.. 2023. 8. 17.
[Servlet] Hello 서블릿 목차 서론 첫 서블릿을 만들어봅시다. 서블릿을 실행하기 위해서는 톰캣과 같은 WAS를 직접 설치 WAS에 서블릿 코드를 클래스 파일로 빌드한 후 업로드 톰캣 서버 실행 과정을 거쳐야 합니다. 이 과정은 너무 번거롭고 불필요합니다. 스프링 부트는 톰캣 서버를 내장하고 있으므로 톰캣 서버의 설치없이 서블릿 코드를 실행할 수 있습니다. 따라서 현재 예제에서는 스프링 부트를 사용하여 구현합니다. 스프링 부트 서블릿 환경 구성 @ServletComponentScan 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan 어노테이션을 지원합니다. @ServletComponentScan @SpringBootApplication public class ServletApplicat.. 2023. 8. 17.
[effective java] item 18. 상속보다는 컴포지션을 사용하라 결론 상속은 강력하지만 캡슐화를 깨뜨린다는 단점이 있습니다. 대안책으로 컴포지션과 전달을 사용할 수 있습니다. 특히 래퍼 클래스로 구현할 적당한 인터페이스가 있다면 더욱 좋습니다. 핵심 코드 public class CustomHashSetByComposition { private final HashSet hashSet; private int addCount = 0; public CustomHashSetByComposition(HashSet hashSet) { this.hashSet = hashSet; } public boolean add(E e) { addCount++; return hashSet.add(e); } public boolean addAll(Collection c) { return s.con.. 2023. 8. 7.
[effective java] item 17. 변경 가능성을 최소화하라 결론 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전합니다. 단점이라곤 특정 상황에서의 잠재적 성능 저하뿐입니다. getter가 있다고 해서 무조건 setter를 만들지 말고, 다른 합당한 이유가 없다면 모든 필드는 private final로 선언합시다. 설명 참고 불변 클래스? 불변 클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스입니다. 불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않습니다. 자바 플랫폼 라이브러리에도 다양한 불변 클래스가 있습니다. String, 기본 타입의 박싱된 클래스들, BigInteger, BigDecimal이 여기에 속합니다. 클래스를 불변으로 만들기 위한 5가지 규칙.. 2023. 8. 7.