Java23 [Spring] Spring MVC 구조(2) Eception 처리 @ExceptionHandler와 @ControllerAdvice를 이용한 처리 @ControllerAdvice 예외 사항을 전부 핸들링 해야 한다면 중복적이고 많은 양의 코드를 작성해야 한다 따라서 공통적인 예외사항에 대해서는 별도로 @ControllerAdvice를 이용해서 분리한다. 따로 예외들만 분리해서 관리할 수 있게 되고 이것이 AOP를 이용하는 방식이다. @ResponseEntity를 이용해서 예외 메세지를 구성할 수 있다. 스프링 MVC 프로젝트의 기본 구성 스프링 MVC에서 어떤 단계를 거쳐서 실행되는지를 이해해야 문제 발생시 빠른 대처와 대안을 찾을 수 있다. 슬프링 웹 프로젝트는 3-Tier(티어) 방식으로 구성한다. Presentation Tier - Busin.. 2022. 3. 30. [Spring] Spring MVC 구조 (1) 스프링 MVC 기본 구조 스프링 프레임워크는 하나의 기능을 위해서만 만들어진 프레임워크가 아닌 '코어'라고 할 수 있는 어려 서브 프로젝트를 결합해서 다양한 상황에 대처할 수 있도록 개발되었다. 그 중 하나가 스프링 MVC이다. 스프링 MVC Spring MVC - WEB 관령 영역 Spring Core - 일반 Java 영역(POJO) Spring MyBatis Mybatis DB 프로젝트의 구동은 web.xml에서 시작한다. web.xml의 상단에는 가장먼저 구동되는 context Listener가 등록되어 있다. 1. ContextLoaderListener는 해당 웹 어플리케이션을 구동하게 되면 같이 작동이 시작되므로 해당 프로젝트를 실행하면 가장 먼저 로그를 출력하면서 실행된다. 2. root-c.. 2022. 3. 24. [Spirng] Spring-MyBatis Spring - MyBatis SQL이 복잡하거나 길어지는 경우에는 어노테이션보다 XML을 이용하는 것이 좋다 MyBatis-Spring의 경우 Mapper 인터페이스와 XML을 연동하여 동시에 이용할 수 있다. 인터페이스 객체,메소드() 를 사용하는 순간 해당하는 인터페이스의 경로를 namespace로 가지고 있는 xml mapper를 찾아가서 메소드명과 동일한 id의 쿼리문을 수행하여 결과를 돌려준다 MyBatis는 내부적으로 JDBC의 Preparedstatement 를 이용하여 SQL을 처리한다 따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 ?로 치환되어서 처리한다 복잡한 SQL의 경우 ?로 나오는 값이 제대로 전달 되었는지 확인하기가 쉽지 않다 실핸한 SQL의 내용을 정확히 확인하기 어.. 2022. 3. 22. [Spring] 의존성 주입(Dependency Injection) DI(의존성 주입) - Dependency Injection 의존성(Dependency)이란 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미한다. 예를들어 A 객체가 B객체 없이 동작이 불가능한 상황을 'A가 B에 의존적이다'라고 표현한다. 주입(Injection)은 말 그대로 외부에서 밀어 넣는 것을 의미한다. 예를 들어 어떤 객체가 필요한 객체를 외부에서 넣어주는 것을 의미한다. 주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없고 어떤 객체에 의존하든 자신의 역할은 변하지 않게 된다. 의존 a ----> b a객체에서 b객체를 직접생성 의존성 주입 a ----> ?? Eclipce Marketplace -> STS검색 -> 설치 -> 전부 동의, 다음 ... -> re.. 2022. 3. 21. [Spring]스프링 프레임워크란 ? 스프링 프레임워크(Spring Framework) 스프링 프레임워크를 이용해서 '의존성 주입'에 대한 이해와 테스트 스프링에서 xml을 이용하는 객체 관리 방법 스프링의 테스트 환경 구축 프레임 워크(Framework) 뼈대나 근간을 이루는 코드들의 묶음 개발자는 각 개개인의 능력차이가 큰 직종이고, 개발자 구성에 따라 프로젝트 결과 역시 큰차이를 낳는다. 이런 상황을 극복하기 위한 코드의 결과물이 바로 프레임워크이다. 프로그램의 기본 흐름이나 구조를 정하고 모든 팀우너들이 이 구조에 자신의 코드를 추가하는 방식으로 개발하게 된다. 프레임워크의 장점 개발에 필요한 구조를 이미 코드로 만들어 놓았기 떄문에 실력이 부족한 개발자라 하더라도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다... 2022. 3. 18. [JSP]Front-Controller 패턴 실전 흐름 파악(로그인 기능) Front-Controller 패턴 사용 a.jsp -> web.xml -> servlet(UserFrontController) -> if,switch -> controller -> c.jsp(forward, redirect) 위의 루트만 생각하고 있으면 크게 어렵지 않다. 1. a.jsp 단계에서 loginview.jsp를 만들어 낸다 아이디 비밀번호 회원가입 2. 로그인 버튼을 누르게 되면 UserLoginOk.us로 이동하도록 링크를 걸어주고, 클릭시 web.xml파일에 들어가 .us가 나타내는 front-controller를 검색한다. board_mvc2 index.html index.htm index.jsp default.html default.htm default.jsp UserFrontCon.. 2022. 2. 15. [JSP]Front-Controller 패턴 Front-Controller 패턴 a.jsp -> web.xml -> servlet(UserFrontController) -> if,switch -> controller -> c.jsp(forward, redirect) 개발자가 정의한 확장자(.us, .do, .bo, ...)를 페이지 이동 주소에 작성하게 되면 파일이 아니기 때문에 web.xml에 가서 매핑되어 있는 서블릿으로 찾는다. 각 URL(UserJoin.us, UserLogin.us,...)을 전부 web.xml에 하나씩 매핑 해 놓게 되면 코드가 길어지기 떄문에 \*.us 형태로 하나의 서블릿에 매핑을 해놓는다. (어떤것이든 .us가 붙은 요청은 하나의 경로로 보내주도록 한다.) 이러한 경로를 통해 가게되는 서블릿 파일을 프론트 콘트롤러 .. 2022. 2. 9. [JSP] DB연결 ) Mybatis DBCP (DataBase Connection Pool) 사용자의 요청이 있을 때마다 DB 연결을 한다면 코드가 복잡해지며 많은 요청이 있을 때 연결속도가 저하될 수 있다 따라서 미리 Connection을 만들어 두고 필요시 저장된 공간에서 가져다 쓰고 반납하는 기법이다. JNDI(Java Naming and Directory Interface) 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API이며 외부에 있는 객체를 가져오기 위한 기술이다 Ferrari Red MyBatis 모델과 DB의 매개체 JAVA 소스코드 안에 SQL문을 작성하면 코드가 길어지고 섞여 있어서 유지보수 및 분업이 쉽지 않아 진다. MyBatis는 기존 JDBC 방식과는 달리 SQL문을 XML 파일에.. 2022. 1. 31. [JSP] 스크립트 태그 / 디렉티브 태그 /액션 태그 스크립트 태그 HTML 내부에 자바 코드를 넣어 프로그래밍이 가능하도록 만들 수 있다 1. 선언문 (Declaration) 자바의 변수나 메소드를 정의하는데 사용되는 태그 2. 스크립틀릿 (Scriptlet) 자바 변수 선언 및 자바 로직 코드를 작성하는데 사용되는 코드 3. 표현문 (Expression) 변수, 계산식, 메소드 호출의 리턴값 등을 표현해주는 태그 HTML 문서에 안에 작성한 값이 그대로 표현된다. 타입은 문자열이다 scriptTag1 sayHello("JSP")의 결과 : 2022. 1. 25. 이전 1 2 3 다음