MVC 패턴이란?

MVC 패턴(Model-View-Controller)은 소프트웨어 디자인 패턴 중 하나로, 소프트웨어를 세 가지 부분으로 나누어 개발하는 방법론이다. MVC 패턴은 소프트웨어를 Model, View, Controller 세 가지 부분으로 나누어 개발함으로써 소프트웨어의 유지보수성과 확장성을 높이고, 개발자들이 소프트웨어를 더 쉽게 이해하고 개발할 수 있도록 도와준다. Model Model은 소프트웨어의 데이터를 담당하는 부분으로, 데이터의 구조와 데이터를 다루는 로직을 담당한다. View View는 소프트웨어의 사용자 인터페이스를 담당하는 부분으로, 사용자에게 데이터를 보여주는 역할을 한다. Controller Controller는 소프트웨어의 비즈니스 로직을 담당하는 부분으로, 사용자의 입력을 받아 Model과 View를 제어한다. ...

6월 5, 2024 · 2 분 · 248 단어 · In-Jun Hwang

모든 http 상태코드 알아보기

1xx (Informational) : 요청이 수신되었으며 프로세스가 계속 진행 중 100 Continue : 서버가 요청의 일부를 받았으며 클라이언트가 요청을 계속해도 됨을 알림 101 Switching Protocols : 서버가 업그레이드 요청을 수락하고 프로토콜 변경을 알림 102 Processing : 서버가 요청을 수신하고 처리 중임 103 Early Hints : 서버가 일부 응답을 보냈으며 클라이언트가 요청을 계속해도 됨을 알림 2xx (Successful) : 요청이 성공적으로 수신되었으며 이해되었고 수락되었음 200 OK : 요청이 성공적으로 수신되었으며 이해되었음 201 Created : 요청이 성공적으로 수신되었으며 새로운 리소스가 생성되었음 202 Accepted : 요청이 수신되었으며 처리가 완료되지 않았음 203 Non-Authoritative Information : 요청이 성공적으로 수신되었으며 응답은 프록시에서 제공됨 204 No Content : 요청이 성공적으로 수신되었으며 응답에 컨텐츠가 없음 205 Reset Content : 요청이 성공적으로 수신되었으며 사용자 에이전트가 문서 뷰를 재설정해야 함 206 Partial Content : 요청이 성공적으로 수신되었으며 일부 응답이 전송됨 207 Multi-Status : 요청이 성공적으로 수신되었으며 여러 상태 코드가 반환됨 208 Already Reported : 요청이 성공적으로 수신되었으며 멀티-상태 응답이 반환됨 226 IM Used : 요청이 성공적으로 수신되었으며 인스턴스가 멀티 상태 응답을 반환함 3xx (Redirection) : 클라이언트는 추가 작업이 필요함 300 Multiple Choices : 요청이 여러 옵션을 가지고 있음 301 Moved Permanently : 요청한 리소스가 새로운 URL로 영구적으로 이동됨 302 Found : 요청한 리소스가 일시적으로 다른 URL로 이동됨 303 See Other : 요청한 리소스가 다른 URL로 이동됨 304 Not Modified : 요청한 리소스가 수정되지 않았음 305 Use Proxy : 요청한 리소스는 프록시를 사용해야 함 306 Switch Proxy : 요청한 리소스는 다른 프록시를 사용해야 함 307 Temporary Redirect : 요청한 리소스가 일시적으로 다른 URL로 이동됨 308 Permanent Redirect : 요청한 리소스가 새로운 URL로 영구적으로 이동됨 4xx (Client Error) : 클라이언트에 오류가 있음 400 Bad Request : 요청이 잘못되었음 401 Unauthorized : 인증이 필요함 402 Payment Required : 결제가 필요함 403 Forbidden : 요청이 거부됨 404 Not Found : 요청한 리소스가 없음 405 Method Not Allowed : 요청된 메소드가 허용되지 않음 406 Not Acceptable : 요청된 리소스가 클라이언트가 허용하지 않음 407 Proxy Authentication Required : 프록시 인증이 필요함 408 Request Timeout : 요청 시간이 초과됨 409 Conflict : 요청이 충돌함 410 Gone : 요청한 리소스가 더 이상 사용되지 않음 411 Length Required : Content-Length 헤더가 필요함 412 Precondition Failed : 요청 전제 조건이 실패함 413 Payload Too Large : 요청이 너무 큼 414 URI Too Long : URI가 너무 김 415 Unsupported Media Type : 지원하지 않는 미디어 타입 416 Range Not Satisfiable : 범위가 만족되지 않음 417 Expectation Failed : 요청이 실패함 418 I’m a teapot : 나는 주전자입니다 421 Misdirected Request : 잘못된 요청 422 Unprocessable Entity : 처리할 수 없는 엔티티 423 Locked : 잠김 424 Failed Dependency : 의존성 실패 425 Too Early : 너무 이른 요청 426 Upgrade Required : 업그레이드 필요 428 Precondition Required : 전제 조건 필요 429 Too Many Requests : 요청이 너무 많음 431 Request Header Fields Too Large : 요청 헤더 필드가 너무 큼 451 Unavailable For Legal Reasons : 법적 이유로 사용할 수 없음 5xx (Server Error) : 서버에 오류가 있음 500 Internal Server Error : 서버에 오류가 있음 501 Not Implemented : 요청이 구현되지 않음 502 Bad Gateway : 게이트웨이가 잘못됨 503 Service Unavailable : 서비스를 사용할 수 없음 504 Gateway Timeout : 게이트웨이 시간 초과 505 HTTP Version Not Supported : HTTP 버전이 지원되지 않음 506 Variant Also Negotiates : 변형도 협상함 507 Insufficient Storage : 저장 공간이 부족함 508 Loop Detected : 루프가 감지됨 510 Not Extended : 확장되지 않음 511 Network Authentication Required : 네트워크 인증이 필요함 599 Network Connect Timeout Error : 네트워크 연결 시간 초과 오류 참고 https://developer.mozilla.org/ko/docs/Web/HTTP/Status 418 I’m a teapot : 이 상태 코드는 1998년 4월 1일에 IETF에 의해 정의되었으며, Hyper Text Coffee Pot Control Protocol (HTCPCP)의 확장으로서, 커피포트가 차 있는지 확인하는 데 사용됩니다. 이것은 농담이며 실제로 사용되지 않습니다. ...

6월 5, 2024 · 3 분 · 603 단어 · In-Jun Hwang

디스패처 서블릿(Dispatcher Servlet) 알아보기

디스패처 서블릿이란? 디스패처 서블릿은 스프링 MVC의 핵심이다. 클라이언트의 요청을 전달받아 적절한 컨트롤러로 요청을 전달하고, 컨트롤러가 반환한 결과를 View로 전달하는 역할을 한다. 디스패처 서블릿은 웹 애플리케이션에서 하나만 존재하며, 클라이언트의 모든 요청을 처리한다. 디스패처 서블릿의 동작 과정 클라이언트의 요청을 전달받는다. Handler Mapping을 통해 클라이언트의 요청을 처리할 컨트롤러를 찾는다. Handler Adapter를 통해 컨트롤러를 실행한다. 컨트롤러가 반환한 결과를 View Resolver를 통해 View로 변환한다. View를 클라이언트에게 전달한다. RestController를 사용할 경우 View Resolver를 사용하지 않는다. 대신에 객체를 JSON 형태로 변환하여 클라이언트에게 전달한다. ...

6월 5, 2024 · 2 분 · 318 단어 · In-Jun Hwang

스프링 인터셉터란 무엇인가?

스프링 인터셉터 인터셉터는 서블릿 필터와 비슷한 역할을 한다. 서블릿 필터는 서블릿 컨테이너에서 요청이 들어오기 전, 후에 요청을 가로채어 처리할 수 있는 기능을 제공한다. 스프링 인터셉터는 스프링 MVC에서 컨트롤러에 요청이 들어가기 전, 후에 요청을 가로채어 처리할 수 있는 기능을 제공한다. 인터셉터는 HandlerInterceptor 인터페이스를 구현하여 사용한다. HandlerInterceptor 인터페이스는 세 가지 메소드를 제공한다. preHandle : 컨트롤러에 요청이 들어가기 전에 실행되는 메소드 postHandle : 컨트롤러에 요청이 들어간 후, 뷰가 렌더링 되기 전에 실행되는 메소드 afterCompletion : 뷰가 렌더링 된 후에 실행되는 메소드 인터셉터 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 컨트롤러에 요청이 들어가기 전에 실행되는 코드 // 만약 false를 반환하면 컨트롤러에 요청이 들어가지 않음 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 컨트롤러가 정상적으로 실행된 이후에 실행되는 코드 // 예외가 발생하면 실행되지 않음 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 뷰가 클라이언트에 응답을 보낸 후에 실행되는 코드 // 예외가 발생한다면 Exception 객체를 통해 예외 정보를 확인할 수 있음 // 예외 정보를 확인해서 로깅할 수 있음 } } 인터셉터 등록 인터셉터를 등록하기 위해서는 WebMvcConfigurer 인터페이스를 구현하여 addInterceptors 메소드를 오버라이딩한다. ...

6월 4, 2024 · 3 분 · 478 단어 · In-Jun Hwang

서블릿 filter란 무엇인가?

서블릿은 클라이언트의 요청을 처리하는 자바 클래스이다. 서블릿은 HTTP 요청을 처리하고, HTTP 응답을 생성하는 데 사용된다. 서블릿 필터란? 서블릿 필터는 서블릿 컨테이너에서 서블릿이 요청을 처리하기 전이나 응답을 보내기 전에 요청이나 응답을 수정할 수 있는 기능을 제공한다. 요청이나 응답을 수정하는 이유가 무엇일까? 다음과 같은 이유로 요청이나 응답을 수정한다. 인증: 사용자가 로그인했는지 확인 로깅: 요청과 응답을 로깅 암호화: 요청과 응답을 암호화 헤더 추가: 요청이나 응답에 헤더 추가 이미지 변환: 이미지 요청을 다른 형식으로 변환 데이터 압축: 요청이나 응답을 압축 사용자 정의 인셉션 처리: 예외 발생 시 사용자 정의 인셉션 처리 이러한 기능을 필터로 사용하여 구현할 수 있다. ...

6월 4, 2024 · 4 분 · 687 단어 · In-Jun Hwang