본문 바로가기

Spring 프레임워크54

Spring 프레임워크 Controller 파트 설계 메모 [ 참고 ] Controller 파트 설계 할 때, 1) View 에게 전달 해야할 데이터가 있어 ? 그러면 메서드의 리턴타입을 Spring에서 기본 제공 해주는, ModelAndView 자료형으로 반환 하기. 2) View 에게 전달 해야할 데이터가 없어 ? 그러면 메서드의 리턴타입을 단순하게 String 자료형으로 반환 하기. 3) Command 객체 개념을 사용 하기에, View에서 넘겨주는 VO의 인자의 파라미터명을 고려할 필요가 없다. Command 객체가 setter 호출 까지 깔끔 하게 다 해주기 때문에 이다. 그래도 CRUD 메서드를 수행 하기 위해, 필요한 데이터를 잘 받아야 하기 때문에, View에게 이러한 파라미터명으로 데이터 줘 ~ 라고 잘 말해야 한다. 그래야 Command 객체가.. 2023. 8. 4.
Spring MVC 패턴의 구조 파악 3 (Controller 파트) 1. 컨테이너 (Container) == 객체를 생성하는 주체. == 개발자가 (.xml) 설정만 해주면, new를 스스로 관리 한다. == "객체 생성 및 관리를 스스로 처리" 한다. 컨테이너는 인공지능이 아니기 때문에, 개발자가 반드시 .xml 파일 내부에서 기능 설정을 작성해 줘야 한다. 2. web.xml 톰캣 == 서블릿 컨테이너 에게 설정을 알려주는 파일 이다. 서블릿 컨테이너니까, 서블릿 관련 설정을 모두 web.xml 에서 할 수 있다. 그래서, 필터 서블릿도 여기서 등록 한다. encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encoding *.do 3. 서블릿 클래스에 대한 설정은 아래와 같이 .. 2023. 8. 4.
Spring MVC 패턴의 구조 파악 2 (Controller 파트) 1. Spring 에서는, 기존의 Action 인터페이스를 의미하는 인터페이스를 Controller 인터페이스로 이름을 사용. 또한, 기존의 excute() 메서드를 의미하는 메서드는 handleRequest() 메서드로 이름을 사용. 기본적으로 Spring 에서는, 어디로 갈지에 대한 경로값을 String 타입으로 해서 반환 한다. FrontController 때 처럼, ActionForward 타입의 actionforward 객체를 반환 하는것 보다, 상대적으로 String 타입의 데이터를 반환 하는게 가볍기 때문이다. 암튼, String 타입으로 경로를 반환 하게 되면, 이 페이지의 확장자가 뭔지, 어떻게 갈지, 어디로 갈지 "주체"를 알 수 있다. https://hwanii96.tistory.co.. 2023. 8. 3.
Spring MVC 패턴의 구조 파악 (Model 파트) 1. Controller 파트에서 Service 레이어가 관념적으로 존재 한다. XxxServiceImpl 은 Service 레이어를 구현한 클래스 이다. 정석적인 개념은 아니고, 이해를 위해 정리. Impl은 Implements를 의미 한다. ("무언가의 개념을 해당 클래스에서 구현 했다" 라는 의미) Service 레이어 : DAO를 사용하는 "주체" 가 되는 공간. 즉, DAO를 열심히 사용 하기 때문에, Controller 파트 이다. 이때, Controller 가 DAO를 열심히 사용 하기 위해서, DAO의 메서드 시그니쳐를 잘 맞춰서 사용 하면 좋다. 맞춘다 ? 메서드 시그니쳐를 강제한다 ? >> XxxService 인터페이스를 생성 해서, 그 인터페이스를 구현 하기 ! 2. C에서 M의 DA.. 2023. 8. 2.
Spring MVC 패턴의 구조 파악 (Controller 파트) 스프링 에서는 기존 서블릿 파일 이름이였던, FrontController를 DispatcherServlet 로 사용 한다. 1. 기존, controller.jsp의 코드를 FrontController.java 서블릿으로 옮겨 왔다. >> 유지 보수 불리 2. 그래서, XxxAction 클래스로 모듈화를 진행 했다. XxxAction 클래스 내부에는, execute(request, response) 메서드가 있었다. 이러한 Action 류 클래스는 공통적으로 execute() 메서드를 사용하기도 하고, 하드 코딩 하는것을 줄이기 위해서, Action 인터페이스를 생성 했고, Action류 클래스들은 이 Action 인터페이스를 구현 했다. 3. Spring 에서는 이 XxxAction 클래스를, XxxCo.. 2023. 8. 2.
Oracle 로 DBMS 변경 하기 0. CMD 창에서 Oracle 접속 하는 방법 : >> SQLPLUS 작성 하고 엔터 누르기. ============================================================= 1. 오라클 설치 하기 2. 설치 하고 cmd 열기 3. cmd 창에 sqlplus sys/oracle as sysdba 입력 4. 계정 만들기 CREATE USER HWAN IDENTIFIED BY 1234 ACCOUNT UNLOCK; 잘되면, User created 가 뜬다. 5. 권한 주기 GRANT CONNECT, RESOURCE TO HWAN; 잘되면, Grant succeeded 가 뜬다. 5-2. 에러 나면, 아래의 권한 주는 쿼리문 작성. 테이블 스페이스에 권한이 없다고 뜰때. 계정을 .. 2023. 8. 2.
스프링 컨테이너 어노테이션 메모 1. com.spring.biz 하위 폴더에, 모든 자료형을 (클래스 파일) 대상으로 객체화를 해주게 하는 코드 이다. 위와 같이 applicationContext.xml 기능 설정 파일 내부에, 코드를 작성 하고, 자바에서 @ (어노테이션) 을 명시 하면 된다. 해당 컨테이너는, 스프링 컨테이너 이므로, 위의 경로에 저장 생성 한다. 해당, .xml 파일을 생성 하기 위해서 아래와 같이 하면 된다. 1-2. 23.08.07 추가. 1) 위에서, Java Resources - src/main/resources 폴더에, applicationContext.xml 설정 파일을 생성 하고, 위의 .xml 파일에, 코드를 작성해서, Spring이 해당 하위 폴더에서 사용되는 객체들을 관리한다고 했다. @Servi.. 2023. 8. 2.
예제 06 의존 주입 (Setter Injection) 1. TV 인터페이스 2. RemoteControl 인터페이스 3. 각 인터페이스를 구현한 클래스 4. TV 인터페이스를 구현한 LgTV 클래스는, RemoteControl 인터페이스의 참조변수 remoteControl를 멤버 (변수) 로 두고 있다. 즉, 둘은 의존 관계 이며, 의존 주입을 setter 을 통해 주입 시키기 위해, setter 메서드를 작성 했다. 5. applicationContext.xml 의 코드를 확인 할 수 있다. setter로 의존주입을 하기 위해서는, .xml 파일 내부에서, 태그를 사용한것이 과의 차이점 이다. 위의 name 속성의 값이 setter 메서드의 이름과 동일 해야 한다. 예를들어, setter 메서드의 메서드명이, setHwan 이면, 이어야 한다는 말이다. .. 2023. 8. 1.
예제 05 의존 주입 (Contructor Injection) 1. TV 인터페이스 RemoteControl 인터페이스 2. 각각의 인터페이스들을 구현한 SamsungTV, LgTV, SamsungRC, LgRC 클래스 3. applicationContext.xml 1) lazy-init = "true" 를 하면, LookUp 했을 때만, 스프링 컨테이너가 해당 자료형의 객체를 인스턴스화 해준다. lazy-init은 디폴트 값이 "false" 이다. 그래서, lazy-init = "true" 명시 해놓지 않으면, 스프링 컨테이너가 시작될 때, 해당 자료형의 객체를 즉각 인스턴스화 해준다. [ 참고 ] lazy-init = "true" 속성이 설정되어 있으면, 해당 객체는 스프링 컨테이너에서 처음으로 사용되는 시점에 초기화 된다. 즉, getBean() 메서드가 호출.. 2023. 8. 1.