목차)

1. 기본 정의

2. Spring Legacy Project 설치방법

(Spring framework를 사용한 프로젝트) : spring tool과는 다름

3. Dependency Injection (의존성 주입 3가지 타입): 

    gmlwjd9405.github.io/2018/11/09/dependency-injection.html

 

기본 정의)

  • JSP Model1 architecture 동작방식:

    기존의 모델은 JSP 안에 controller(자바 bean 클래스) + view (JSP 페이지)를 이용하여 웹 페이지를 만들었다. 여기서는 사용자의 요청을 JSP 가 전부 처리했습니다.

  • JSP Model2(MVC) architecture 동작방식:

    새로운 방식은 Controller 를 새로 추가하고, 그 안에서 model.addAttribute()를 사용하는 것입니다. 모델 1 과 달리 웹브라우저 사용자의 요청을 서블릿이 받습니다. 그리고 서블릿은 웹브라우저의 요청을 받아 View 로 보여줄것인지 Model 로 보내줄것인지 정하여 전송해줍니다. 여기서
    view 페이지는 사용자에게 보여주는 역할만 담당하고 실질적인 기능의 부분은 Model 에서 담당합니다.

  • Model/View/Controller 의 역할:
    Model:
    웹페이지에 필요한 기능(Java bean 소스)
    View:
    실질적으로 보여지는 페이지
    Controller: View Model 을 연결시켜주는 역할을 수행

  • Spring framework ?
    Java
    기반 플랫폼을 위한 오픈소스로 제공되는 어플리케이션 개발 프레임워크입니다.

  • Spring framework 장점:
    POJO Based: Plain Old Java Object
    라는 뜻으로, POJO 구성만으로도 프로젝트 제작이 가능하여

    따로 프레임워크에 대해 공부할 필요가 없습니다
    Lightweight: 경량화된 소프트웨어
    Modular: 모듈화를 통해 패키지와 클래스와 상관없이 필요한 부분만 코딩 가능

  • IoC(Inversion of Control):
    제어의 역전: 객체의 생성부터 소멸까지 생명주기를 개발자가 아니라 컨테이너가 대신 관리해준다. 

    • 이렇게 말하는 것보돠 IOC는 DI를 통해 이루어 지는데, 둘다 같은 뜻으로 사용되기도 한다. 관리의 주체가 개발자가 아닌 프레임워크로, container가 알아서 중간단계 역할을 하여 파일들끼리 연결해주고, 개발자는 프레임워크 안에서 개발만 하면 되는것이다. 특정 파일이 필요하면 그 파일을 호출하도로고 하는게 아니라 프레임워크를 통해서 호출이 되게끔 만드는것이다. (Hollywood principle) 
  • POJO: Plain Old Java Object 라는 뜻으로, 자바 객체를 생성할때 특정 '기술'에 종속되어 동작하는 것이 아닌 순수한 자바 객체를 말하는 겁니다. 특정 기술의 객체를 사용할때 특정 기술을 지원해주는 프레임워크가 필요하지 않도록 hibernate 프레임워크를 의존하도록 합니다.

  • Spring project 의 폴더 구조 설명:
    src/main/java: controller
    위치함.
    src/main/webapp/resources :
    필요한 리소스 (파일, 이미지 등) .
    src/main/webapp/WEB-INF: servlet-context.xml + views + web.xml
    target: deploy에 필요한 war 파일 위치

  • DTO는 Data Transfer Object의 약자로서,VO ( Value Object )랑 혼용해서 쓴다.
    보통은 DTO와 VO를 혼용해서 사용들 하지만,\ 필자는 용어를 정확히 구분해서 쓰는걸 중요하다고 생각한다.

AOP란?

Spring의 핵심 개념중 하나인 DI가 애플리케이션 모듈들 간의 결합도를 낮춰준다면, AOP는 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원하는 것입니다.

AOP (Aspect-Oriented Programming) 란 단어를 번역하면 관점(관심) 지향 프로그래밍으로 됩니다.

jojoldu.tistory.com/71?category=635883

 

 

1. Spring Tool3설치)

Help > Eclipse MarketPlace 에서 Spring Tools3 Add-on설치 확인

2. 프로젝트 생성:

File > new > Spring Legacy Project > Spring MVC Project

3. 라이브러리 확인 실행

BuildPath에서 환경설정을 자기 것에 맞게 맞춰준다.~

저는 현재:

그래서 아래도 마찬가지로~

처음 Spring Legacy 프로젝트 생성시에 HomeController.java 자동으로 생성 됐을 겁니다.

src/main/java/com.mycompany.myapp/HomeController.java

 

4. 새로운 url 처리하는 Controller 추가(BoardController, /boardlist)

 

저희는 여기에서 새로운 controller BoardController, , “/boardlist” 라는 url 입력했을시에 보여질 페이지를 위해 controller 추가해줍니다.

 

src/main/java/com.mycompany.myapp/BoardController.java

여기서 노란 부분 처음에 프로젝트 패키지 이름을 지으실때 만드신거로 하다고 생각하면 됩니다222223dfd!!

 

내용은 HomeController 비슷하게 해주시되, 여기서 BoardContoller니까 이름을 먼저 변경해줍니다.

여기서 바뀌어야 부분은 3부분인데요,

1) 먼저 BoardController.class logger 지정해주시구요

2) 새로운 url “/boardlist” 처리해주기 위해 HandlerMapping 주소를 “/boardlist” 만들어줍니다.

3) 그리고 요청페이지를 위한 jsp파일의 위치를 return해주는데 (View 위한 작업) 그곳이 “board/list”라는 곳이라고 알려주면서 return 합니다.

 

5. JSP 페이지 추가(board/list.jsp 페이지)

 

이제 “/boardlist” url 위한 jsp페이지를 생성해봅니다.

중요!!) 만약에 새로운 파일 생성시 jsp 파일 옵션이 안뜬다면 당황하지 말고 우클릭한 상태에서 밑에 others 옵션을 클릭하고 jsp 추가해줍니다.

여기서 주의할 점은 jsp파일이름은 개발자가 임의로 정해줘도 된다. 그래서 개발자가 url 다르게 지정해줄 있다는 점이 유의할 점이다.

 

6. jsp페이지에 목록이 나오도록 Controller jsp 페이지 수정

 

list.jsp 만들어줬는데 여기에 특정 데이터를 보여주고 싶다면 BoardController.java에서 controller 특정 데이터를 준비해서 보내줍니다.

예시)

 

 

model.addAttribute(“list”, posts);

 

줄의 대한 해석을 하자면, “list”라는 이름으로 데이터를 보내는데, 데이터가 posts라는 이름을 가진 List<String> 타입 데이터입니다.

여기서 보내지는 데이터는 2개입니다. 그래서 list.jsp에서 ${serverTime} , ${list} 값을 접근할 있습니다.

7. jsp 페이지에 이미지 넣기

 

만약에 이미지를 추가해주고 싶다면, servlet-context.xml 에서 이미지에 대한 매핑을 해줘야합니다. 아래 사진과 같이 매핑(mapping) url 실제 jsp저장 장소 location 지정해줍니다.

list.jsp 에서 이미지 나오게 하기

 

'웹캠프2021' 카테고리의 다른 글

Spring3 1월/27일 (Spring MVC Lifecycle + 2 return types of Spring Controller)  (0) 2021.01.31
웹캠프:Spring2 1/26  (0) 2021.01.31
웹캠프: JSP5 1/22  (0) 2021.01.24
웹 캠프: JSP4 1/21  (0) 2021.01.23
웹캠프: JSP3 1/20  (0) 2021.01.23

+ Recent posts