전체 글
-
[김영한 스프링] 13. MVC 프레임워크 만들기 - 프론트 컨트롤러 소개&도입Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 6. 29. 00:26
프론트 컨트롤러 패턴 소개 프론트 컨트롤러 도입 전 프론트 컨트롤러 도입 후 FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로! 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC의 핵심도 바로 FrontController 스프링 웹 MVC의 DispatcherServlet이 FrontController 패턴으로 구현되어 있음 프론트 컨트롤러 도입 - v1 V1 구조 ControllerV1 package hello.servlet.web.frontcontroller.v1; import javax.servle..
-
[김영한 스프링] 12. MVC 패턴Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 6. 28. 02:29
개요 너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게 되고, 결과적으로 유지보수가 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 한다. 변경의 라이프 사이클 진짜 문제는 둘 사이에 변경의 라이프 사이클이 다르다는 점이다. 예를 들어서 UI를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높고 대부분 서로에게 영향을 주지 않는다. 이렇게 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. (물론 UI가 많이 변하면 함께 변경될 가능성도 있다.) ..
-
SetJava 2023. 6. 27. 22:49
Set 인터페이스 중복X 저장 순서X Iterator를 사용하여 데이터 조작 주요 클래스 HashSet LinkedSet TreeSet HashSet Set hashSet = new HashSet(); hashSet.add("apple"); hashSet.add("tomato"); hashSet.add("apple"); hashSet.add("banana"); System.out.println("데이터 수 : " + hashSet.size()); Iterator iterator = hashSet.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } 데이터 수 : 3 banana apple tomato apple 중복X..
-
ListJava 2023. 6. 27. 21:51
List 인터페이스 배열과 유사하지만 크기 지정X 중복 허용 저장 순서O 주요 클래스 ArrayList LinkedList ArrayList List arrayList = new ArrayList(); arrayList.add("apple"); arrayList.add("tomato"); arrayList.add("banana"); System.out.println(arrayList); [apple, tomato, banana] LinkedList 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당 출처 : https://coding-factory.tistory.com/552
-
날짜 클래스 (자바 8 이후)Java 2023. 6. 27. 00:44
LocalDate 로컬 날짜 클래스 LocalDate nowDate = LocalDate.now(); LocalDate date = LocalDate.of(int year, int month, int dayOfMonth) now() : 기본 시간대의 시스템 시계에서 현재 날짜를 가져옴 of() : 년, 월, 일에서 인스턴스를 가져옴 LocalDate nowDate = LocalDate.now(); LocalDate date = LocalDate.of(2023, 1, 1); System.out.println(nowDate); System.out.println(date); 2023-06-26 2023-01-01 LocalTime 로컬 시간 클래스 LocalTime nowTime = LocalTime.now(..
-
MapJava 2023. 6. 26. 03:04
Map 인터페이스 키와 값을 하나의 쌍으로 저장하는 방식(key-value) 키는 중복을 허용하지 않지만, 값은 중복을 허용 요소의 저장 순서를 유지X 주요 클래스 HashMap LinkedHashMap TreeMap HashMap HashMap hashMap = new HashMap(); Hashtable의 개선버전 배열 + 링크드 리스트의 구조 HashMap hashMap = new HashMap(); hashMap.put("apple", "apple"); hashMap.put("tomato", "tomato"); hashMap.put("banana", "banana"); System.out.println(hashMap.toString()); {banana=banana, apple=apple, tom..
-
[김영한 스프링] 11. JSP로 회원 관리 웹 애플리케이션 만들기Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 6. 22. 00:06
build.gradle //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP 추가 끝 JSP 추가 코드 추가 -> 오른쪽 상단의 코끼리 클릭 회원 등록 폼 JSP username: age: 전송 main/webapp/jsp/members/new-form.jsp 생성 첫 줄은 JSP문서라는 뜻이다. JSP 문서는 이렇게 시작해야 한다. 회원 등록 폼 JSP를 보면 첫 줄을 제외하고는 완전히 HTML와 똑같다. JSP는 서버 내부에서 서블릿으로 변환되는데, 우리가 만들었던 MemberFormServlet과 거의 비슷한 모습으로 변환된다. 실행 http://l..
-
[김영한 스프링] 10. 서블릿으로 회원 관리 웹 애플리케이션 만들기, Welcome 페이지 변경Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 6. 19. 22:49
MemberFormServlet - 회원 등록 폼 main/java/hello.servlet/web/servlet/MemberFormServlet 생성 package hello.servlet.web.servlet; import hello.servlet.domain.member.MemberRepository; 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 jav..