강의 정리_new 연산자, throw와 throws, MVC패턴, Dispatcher-Servlet

김재현·2023년 11월 1일
0

TIL

목록 보기
20/88
post-thumbnail

new 연산자

클래스 객체 변수 = new 클래스();

인스턴스(객체)를 생성할 때 사용하는 코드이며 객체 변수가 실제 데이터가 아닌 참조 값을 갖는다는 내용이 포함되어 있다. 그렇다면 new라는 것은 무엇일까!

new는 클래스 타입의 인스턴스(객체)를 생성해주는 역할.
new 연산자를 통해 메모리(Heap 영역)에 데이터를 저장할 공간을 할당받고, 그 공간의 참조값(reference value /해시코드)을 객체에게 반환하여 준다. 그 뒤 이어서 생성자를 호출하는 것임.

인스턴스를 핸들하기 위해서는 new 연산자를 통해 참조값을 저장한 객체로만 접근이 가능하다.
[출처] [JAVA/자바] new 연산자|작성자 JOKER


throw와 throws

throw: 예외를 강제로 발생시키는것

코드를 작성하는 프로그래머가 강제로 예외를 발생시키는 것이다.
throw의 문법은 다음과 같다.

throw new 발생시킬 예외;

public class java30 {
 
    public static void main(String[] args) {
        
        try {
            throw new Exception(); // 강제로 Exception 객체를 생성하였습니다.
        } catch (Exception e) {
            System.out.println("예외를 강제로 발생했습니다.");
        }
        
    }
    
}

throws

public class java30 {
 
    public static void main(String[] args) {
        
        Test test = new Test();
        
        try {
            test.test("1", "ㄱ"); // 숫자를 넘겨주어야 하지만 숫자와 문자를 넘겨준다.
        } catch (NumberFormatException e) {
            System.out.println("입력하신 값은 숫자가 아닙니다..."); //NumberFormatException 발생시 실행시킴
        }    
    }
    
}
 
class Test {
    
    public void test(String a, String b) throws NumberFormatException{
        int sum = Integer.parseInt(a) + Integer.parseInt(b); // 문자로 받은 a와 b의 문자를 숫자로 변환하여 더한다. (하지만 문자를 받을시 형변환과정에서 NumberFormatException 이 발생한다.)
        System.out.println("문자로 입력받은 " +a+ "," +b+ "의 합은 " + sum + "입니다."); // 문자로 받은 숫자 2개의 합을 출력한다.
    }
    
}
![](https://velog.velcdn.com/images/jeiho/post/d0bf4a4e-b411-4a3d-9d27-a78cb8863e7e/image.png)


Test 클레스의 test 메소드에 try catch 로 예외를 처리.
catch 문에 예외를 발생한 이유를 출력.
그리고..! throw 를 통해 다시한번 NumberFormatException 을 발생시킴.
다시한번 발생된 NumberFormatException 의 예외는 메인에서 처리.
메인쪽도 동일.
실행 결과를 보면 출력이 2번된것을 확인할수 있다. 예외가 2번 실행되는 것!!
메소드에서 예외를 처리하고 실행한 메인쪽에서도 예외를 추가적으로 처리할수 있게된다는 것이다.

[출처] https://bvc12.tistory.com/196


MVC패턴

컨트롤러(CONTROLLER) : 클라이언트(http)의 요청을 받아서 파라미터를 검증, 비지니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다

모델(MODEL) : 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아 전달해주는 덕분에 뷰는 비지니스 로직이나 데이터 접근을 몰라도 되고 화면을 렌더링 하는 일에 집중할 수 있다
(예시: 데이터베이스 ,Sql, JPA, ...)

뷰(VIEW) : 모델에 담겨있는 데이터를 사용하여 화면을 그림


Spring Web MVC

Servlet API를 기반으로 구축된 독창적인 웹 프레임워크로, 처음부터 Spring Framework에 포함되어 왔으며, 정식 명칭인 "Spring Web MVC"는 소스 모듈(spring-webmvc)의 이름에서 따왔으나, "Spring MVC"로 더 일반적으로 알려져 있습니다.

Spring MVC는 중앙에 있는 DispatcherServlet이 요청을 처리하기 위한 공유 알고리즘을 제공하는 Front Controller 패턴을 중심으로 설계되어 있으며 이 모델은 유연하고 다양한 워크 플로우를 지원합니다.

[출처]https://docs.spring.io/spring-framework/reference/web/webmvc.html (Spring 공식 문서)


Dispatcher-Servlet(디스패처 서블릿)의 개념

디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있습니다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다.
이것을 보다 자세히 설명하자면, 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 그리고 이 모든 요청을 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 됩니다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 컨트롤러를 찾아서 작업을 위임합니다.
여기서 Front Controller(프론트 컨트롤러)라는 용어가 사용되는데, Front Controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러로써, MVC 구조에서 함께 사용되는 디자인 패턴입니다.

[출처]https://mangkyu.tistory.com/18

profile
I live in Seoul, Korea, Handsome

0개의 댓글