목록분류 전체보기 (451)
코딩항해기
org.springframework.web.servlet.view.InternalResourceViewResolver DispatcherServlet이 의존성을 가지고 있는 두 가지 객체 중 하나인 ViewResolver는 포워드랑 리다이렉트에 따라 path를 완성해준다. ViewResolver는 DispatcherServlet xml에 태그로 정의할 수 있다. 이 구조를 풀어보면 이러한 형태가 된다.package com.koreait.app.view.controller;public class ViewResolver { private String prefic; private String suffix; //단어의 앞 뒤에 S..
Spring Boot에서 지원하는 내장 서버 말고 로컬 서버를 추가하는 방법이다.JSP 기반 웹프로젝트를 진행할 때(eclipse에서 Servers) 사용한 아파치톰캣이다. 먼저 상단의 Run/Debug Configuration에 있는 Edit Configurations를 연다. Edit Configuration에서 +를 눌러 서버를 추가할 수 있다. 그 중 이번에 연결할 톰캣 local를 고른다. Configure...를 눌러 서버 폴더를 연결해주면 되며, 포트 번호는 HTTP port에서 설정할 수있다.Name은 자유롭게 설정할 수 있지만 Application server이름과 동일하게 하는 것을 권장하고 있다. 이 때 VM options에 -Dfile.encoding=UTF-8 를 작성하면 한글..
현재 배운 내용으로 board insert 구현하기 1. 글 작성 페이지로 사용자의 요청 받기2. 요청 추출하기 (/boardWrite)3. 요청 처리하기 (boardWriteController)4. 응답하기 (메인페이지로 이동, main.do) 톰캣 서버 세팅을 해본다고 했는데, 서버는 켜지는데 페이지 접근이 되지 않는다..ㅠ 해서 테스트를 해보지 못했기 때문에 오류가 있을 수 있다. 1번을 수행하기 위해서는 사용자로부터 입력을 받을 페이지가 필요하다.게시글 작성 페이지 글 작성을 완료하면 boardwrite.do요청이 POST형식으로 가게 된다.이 요청은 web.xml에 작성된 .do로 끝나는 모든 요청을 받는 DispatcherServlet인 ds로 가게 된다.여기에 사용된..
org.springframework.web.servlet.DispatcherServlet DispatcherServlet은 이름에도 쓰여있듯이 Servlet 파일이다. Spring에서는 페이지 이동 구분을 ViewResolver가 해주기 때문에 ViewResolver에 대한 의존성을 가지고 있으며, 객체관리를 위해 HandlerMapping을 사용하기 때문에 HandlerMapping에 대한 의존성도 가지고 있다. 그 외의 형태는 JSP기반 FrontController와 유사한 형태를 가지고 있다. 1. 사용자의 요청을 추출2. 요청에 해당하는 기능을 수행 (HandlerMapping사용)3. 응답 (ViewResolver사용) Servlet으로 구조를 보면 이러한 형태를 가지고 있다고 볼 수 있다.@W..
org.springframework.web.servlet.mvc.Controller 구조분석 JSP 기반 프로젝트에서 oooAction으로 사용자의 요청을 처리했던 것처럼 Spring에서도 oooController가 사용자의 요청을 처리한다. oooController는 스프링 프레임워크에서 제공하는 Controller를 구현한다. Controller를 구현하는 이유는 메서드 시그니처, 즉 선언부를 통일해 HandlerMapping을 사용할 수 있도록 하기 때문이다. 다 각기 다른 메서드 시그니처를 사용하면 한 번에 사용할 수도 없고, 다른 객체이기 때문에 업캐스팅 할 수도 없다. //메서드 오버라이딩 강제 == 메서드 시그니처 (선언부) 강제public interface Controller { //Act..
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping DispatcherServlet이 의존성을 가지고 있는 두 가지 객체 중 하나인 HandlerMapping은 팩토리 패턴을 지킬 수 있도록 new를 줄여주고 호출 시 해당 객체를 반환해주는 역할을 한다. DispatcherServlet xml에 태그로 정의할 수 있는데, 이러한 구조를 가진다. 밸류 값--> login main 이 구조를 java Class로 풀어보면 JSP 기반 프로젝트에서 사용했..
IoCInversion of Control 제어의 역전역전이 일어나기 전에는 직접 객체를 생성해 코드를 제어했다. 즉, 직접 관리하는 것을 의미한다. 제어의 역전이란 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다. IoC 필요성직접 객체를 생성해 내부에서 관리하게 되면 변동이 생길 때마다 코드에 큰 변화가 생기게 된다. 그러나 외부에서 관리하게 되면, 제어의 역전이 일어나게 되면 외부에서 객체를 관리하므로 값이 변동되어도 코드에는 변화가 생기지 않는다. 객체 지향의 원칙을 잘 지키기 위해 필요하며, 역할과 관심을 분리해 응집도를 높이고 결합도를 낮추며, 이에 따라 변경이 유연한 코드를 성할 수 있는 구조가 되기 때문이다. 할리우드 법칙 Hollywood Principl..
Spring 생태계 스프링이란 하나의 기술이 아닌 여러가지 스프링 프로젝트들의 모음이다. 스프링에는 다양한 프로젝트가 있다. 이 모든 스프링 프로젝트는 스프링 프레임워크를 기반으로 동작한다. 이 때 생태계가 확장됨에 따라 사용에 어려움이 생겼다. 이 때 문제를 도와주기 위해 등장한 서브 프로젝트가 스프링 부트이다. Spring Framwork스프링 프레임워크를 사용하면 자바 기반의 어플리케이션을 만들 수 있고, 개발자들은 비즈니스 로직에 집중할 수 있는 장점이 있다. 스프링 이전에는 EJB라는 프레임워크가 있었다. EJB는 2000년대 초반 등장했고 비즈니스 로직과 앤터프라이즈 기술의 분리를 통해 편리한 애플리케이션을 개발하고자하는 목적을 가지고 있었다. 그러나 EJB는 가격이 높았고 비즈니스 로직보다..
기존 memberDAO와 boardDAO에 Service와 ServiceImpl 추가하기Client(Class)에서 new 지시자 사용없이 출력하기 아직 DAO에 new가 가득한데 이 new를 제거하는 진도까지 나가진 않았다.기존 DAO까지는 동일하며 이번 과제에서 DAO에 추가된 부분은 @Repository 어노테이션 뿐이었다.따라서 Service와 ServiceImpl만 추가된 형태이다. 먼저 ServiceImpl의 메서드 시그니처가 DAO와 통일되는 것이 중요하기 때문에 구현할 인터페이스 Service를 만들었다.public interface MemberService { List selectAll(MemberDTO memberDTO); MemberDTO selectOne(MemberDTO membe..
DB연결을 하려고 하니 Connection 객체를 만들 때 에러가 발생했다.DB가 바뀌어서 drivername 잘못 작성한 줄 알았는데 pom.xml을 보니 의존성 주입을 안했다....너무 당연한 건데 buildpath에 너무 익숙해졌던 것 같다. 바로 pom.xml dependencies Edit Starters(intellij)에 들어가서 mysql의존성을 추가했다. com.mysql mysql-connector-j runtime 추가한 후에는 maven 새로고침 잊지않기