본문 바로가기

코딩도전기/MVC12

프론트 컨트롤러(DispatcherServlet) 프론트 컨트롤러 패턴 도입 전 : 공통로직 => 각 컨트롤러 (공통로직이 계속 반복됨) 도입 후 : 프론트 컨트롤러 => 각 컨트롤러 (하나의 프론트 컨트롤러로 반복 사용 가능) FrontController 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러 찾아서 호출 입구를 하나로 통합하여 공통 처리 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 Spring Web MVC와 FrontController 스프링 웹 MVC의 핵심이 FrontController DispatcherServlet이 FrontController 패턴으로 구현되어있음 요청 처리 단계 클라이언트 HTTP 요청 FrontController(DispatcherS.. 2023. 12. 14.
Servlet 웹 애플리케이션 서버의 요청 응답 구조 웹 브라우저(클라이언트)에서 요청 전송 웹 애플리케이션 서버에서 MetaData(Request, Response) 생성 서블릿 컨테이너로 전달 서블릿 컨테이너에서 전달받은 MetaData의 요청 정보 확인 및 작업 수행 작업 결과를 Response에 담아서 웹 애플리케이션으로 전달 웹 애플리케이션에서 응답값 웹 브라우저(클라이언트)로 전달 HttpServletRequest HTTP 요청 메시지를 편리하게 조회할 수 있도록 지원 임시 저장소 기능 ex) request.setAttribute(), request.getAttribute() 세션 관리 기능 ex) request.getSession() 2023. 12. 14.
CODO Day26_JAVA_MVC(Map – Hash Map) Map – Hash Map Map 인터페이스로 구현한 대표적 Map 컬렉션 key와 value로 이루어진 자료 구조 Key는 순서가 없으며 중복도 허용되지 않음(중복된 key 값이 들어오면 value 값만 덮어씀) Collection interface를 구현하지 않기 때문에 기존과는 조금 다른 method를 사용 Hash Map에서 단일값을 검색할 경우 key를 통해 value를 찾음 index가 없기 때문에 내용을 하나씩 꺼내는 방법을 제공 keySet : key값만 가져와서 value값을 찾음 entrySet : key와 value를 같이 가져와서 각각 뽑 모든 값을 가져 올 경우는 두가지 방법을 사용 모든 Key를 Set으로 가져와 key를 iterator() 2. Map을 Set으로 가져와 key.. 2023. 3. 9.
CODO Day25_JAVA_MVC(Linked List/Set Collection(HashSet)) Linked List 사용방법은 Array List와 같음 Array List와 달리 Linked List는 좌우 데이터의 주소를 기억하는 구조 전체 index가 움직이지 않고 좌우 주소값만 기억하기 때문에 중간 index에 데이터 추가/삭제 시 효율적임 중간에 값을 넣을 경우 속도가 빠르지만 마지막 위치에 넣을 경우 Array List보다 느림 index.jsp(AraayList와 LinkedList의 속도 비교) 동기방식 : 서버에서 응답이 올 때까지 아무것도 할 수 없음(반복실행시키면 사) 테스트의 결과가 나올 때까지 브라우저의 로딩바가 계속 돌아감 AraayList와 LinkedList의 속도 비교 개의 데이터를 끝 부분 중간 부분 에 넣기 시작 ArrayList : ${arrList} Linke.. 2023. 3. 8.
CODO Day24~25_JAVA_MVC(Generic) Generic() 배열의 타입을 지정해줌 클래스타입을 generic에 넣어주거나, 선언 시 특정 타입을 지정해주지 않으면 객체화시 마다 타입변경 가능 클래스를 타입으로 넣어줄 경우 한번에 여러 값을 넣어줄 수 있음 ex) 타입이 인 ArrayList 안에 있는 모든 멤버는 BoardBean타입임 객체화 시 안에 값이 바뀔 때마다 변경됨 list.jsp(게시판 만들기) 글쓰기 no 제목 작성자 삭제 작성된 글이 존재하지 않습니다. ${stat.index} ${board.subject} ${board.user_name} 삭제 # el태그(${})에서는 객체 내 private 필드를 getter()를 사용하지 않고 꺼내올 수 있음 BoardController package kr.co.web.control.. 2023. 3. 7.
CODO Day23~24_JAVA_MVC(Collection Framework - ArrayList/Vector) Collection Framework(interface) Collection interface를 최상위로 하는 자료구조 interface List, Set, Map interface를 implements하여 각 collection으로 사용 다양한 자료구조를 가짐 초기선언 시 크기를 지정하지 않아 유동적으로 사용가능(크기 무한) 최상위 collection과 하위 List, Set, Map interface를 구현하기 때문에 Collection Framework에서 데이터 추가,삭제, 검색 방법은 거의 비슷 List Collection - ArrayList Array List는 index로 객체를 관리한다는 점에서는 Array와 유사 But Array와 달리 index가 유연(지정한 크기 넘어도 됨) 크기가.. 2023. 3. 6.
CODO Day23_JAVA_MVC(Exception) Exception & Error(면접질문*) Error : 문법문제로 실행에 문제가 생겨 발생하는 오류(실행되지 않음) Exception : 사용자의 오조작이나 외부문제로 발생하는 오류(실행은 시작되나 오류가 발견되면 멈춤) Exception의 종류 일반예외(Exception) : Compile time에 실행되는 exception으로 coding 중에 알 수 있음(이클립스에서 잡아줌) JVM에서 필요하다고 판단하면 자동으로 예외처리를 해주기 때문에 Runtime Exception만 신경쓰면됨 실행예외(Runtime Exception) : Run time에 실행되는 exception으로 실행해봐야 알 수 있음 Runtime Exception의 종류 NullPointException : 객체가 없는 상태에.. 2023. 3. 6.
CODO Day22_JAVA_MVC(String) String(문자열) Programming에서 문자열은 다루는 것은 byte와 char가 유일 본래 문자열(string)은 char의 배열(array) String 은 char 배열을 다루기 위한 class char a = 'a'; / String a = "a"; Char[] a = a b c d // String a = “abcdefg”; public class HomeController extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //문자열 만드는 방식 1 String str = "Hello S.. 2023. 3. 6.
CODO Day20~21_JAVA_MVC(추상화의 장점/다형성) 추상화의 장점 인터페이스와 추상화는 개발 시 전체적인 규격을 만들어 줌 추상화를 하지 않을 경우 중복코드가 발생하기 때문에 번거로움을 감소시키기 위해 추상화 사용 인터페이스와 추상화를 활용하면 모듈 간의 결합도(coupling)를 감소시킴(면접질문*) 규격이 있으면 서로 다른 것들끼리 충돌없이 사용 할 수 있음 ex) C타입 충전기 결합도 : 서로 다른 모듈 간에 상호의존하는 정도/연관된 관계 변형을 줄 때 주변에 손상을 미치는 정도(분리했을 때 리스크가 큰 것을 결합도가 높다고 함) ex) 결합도가 높은 것(신체) VS 결합도가 낮은 것(로봇) 응집도 : 결합도에 대응 / 응집도는 한 모듈 내부의 처리요소들이 서로 관련되어 있는 정도 응고결저 : 응집도는 높고 결합도는 낮은 것이 좋음 Vingsu jd.. 2023. 2. 28.