■ 스프링

 

  • * 스프링은 애플리케이션 프레임워크라는 특징을 가진다. 애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말한다.
  • 스프링빈팩토리(BeanFactory), 빈(Bean)은 웹에서 객체이다.
  • 빈(Bean)에서 멤버필드를 property 라고도 한다.
  • 빈(Bean) 끼리 의존성을 주입하는 것을 빈 와이어링(Bean Wiring) 이라고 한다.
  • 스프링의 주요기능은 DI(Dependency Injection) : 의존성주입AOP(Aspect Oriented Programing) : 관점지향프로그래밍이라고 한다.
  • 스프링의 설정은 applicationContext.xml에서 설정한다.
  • mybatis와의 연동은 VO, DAO, mapper, Service
  • Service 객체비즈니스로직(Businesslogic)을 담당하고, 트랜젝션(transaction)의 처리 때문에 : 나중에 AOP 설정으로 한다. * 이부분 자세히 찾아보자.
  • 웹개발 방식중 모델(Model) 방식은 MVC 패턴을 웹에 적용하는 방식이다.
  • MVCModelViewControll 로 기능을 나눠 개발하는 방식이다.
  • M모델(Model) 은 데이터 그 자체를 의미한다. View: 정확히는 jsp view 에서 출력할 데이터가 있으면 Controller 에서 그 데이터를 Model 에 attribute 로 등록한다
  • V뷰(View)는 클라이언트에 응답하는 것이다. 대표적으로 JSP View 리다이렉트뷰(Redirect View) / JsonView
  • JSP View = InternalResourceViewResolver
  • Spring MVC 에서 View 는 사용자에게 결과를 렌더링하여 보여주는 Bean 이다.

 

InternalResourceViewResolver

- DispatcherServlet 은 기본적으로 뷰 리졸버(View Resolver) 인 InternalResourceViewResolver 를 사용한다.

- 기본 뷰 리졸버(View Resolver) 는 JSP View 로 사용할 때 쓰인다.

- DispatcherServlet 에게 아무런 뷰 리졸버를 등록하지 않으면, 기본적으로 동작하는 뷰가 뷰 리졸버(View Resolver)이다.

 

 

  • C컨트롤(Controll)은 유저의 요청(url 주소)을 받고, 비지니스 로직(Businesslogic) 을 수행하며 (Service 의 Method 를 호출) View 를 선택하고 Model 을 넘긴다. 여기 한 번더 보기. 머리아파서 나중에 
  • 스프링(Spring)은 프런트 컨트롤러(Front Controller) 패턴을 이용 : 모든 요청을 한 곳에서 처리한다. 
  • 프런트 컨트롤러(Front Controller) 서블릿의 이름은 DispatcherServlet 이다.

 

DispatcherServlet

출처:https://www.slideshare.net/AnselmKim/3-mvc-77568773

- DispatcherServlet 란 한마디로 웹에서의 모든 요청을 받아서 결과로 되돌려준다.  

  이런 DispatcherServlet 이 바로 Front Controller Pattern 기반으로 Front Controller 란 모든 리소스의 요청을 처리하는 하나의 대표 컨트롤러를 두는 패턴을 말한다.

 

  • 모델2(Model2) 로 개발하기 위해서는 설정 파일이 2개이다.
  1. applicationContext.xml : 스프링의 설정
  2. xxxx-servlet.xml : Spring WEB MVC 설정
  • EL(Expression Language)은 attribute 를 출력하기 위한 표현언어이다.
  • EL(Expression Language)은 ${} 로 사용한다.
  • JSTL(Jsp Strandard Tag Library)은 jsp(View) 에서 '<% %>' 을 사용하지 않기 위해 사용하는 태그 라이브러리다.
  • JSTL을 사용하기 위해서는 lib 폴더에 library 를 복사해야 한다.
  • JSTL은 여러가지 중 Core 에서 for문, if문을 태그로 사용 가능하다.

 

EL(Expression Language) JSTL(Jsp Strandard Tag Library)

- 해석 그대로 표현 언어를 인해

- 속성 값들을 편리하게 출력하기 위해 제공된 언어이다

- <%= zxc %> 를 ${zxc} 로 간단하게 사용할 수 있다. 

- 표준 액션 태그이다.

- if문 / for문 / DB 를 편하게 처리할 수 있다.

 

■ Spring WEB MVC + mybatis 로 웹 개발하기(MODEL2 방식)

 

  1. lib 폴더에 .jar 파일을 전부 복사한다.
  2. applicationContext.xml 을 WEB-INF 폴더에 생성한다.
  3. web.xml에 applicationContext.xml을 읽어들이는 ContextLoaderListener 를 설정한다.
  4. web.xml에 dispatcherServlet 을 servlet 으로 설정 / 맵핑도 설정한다.
  5. web.xml 의 servlet-name 으로 WEB-INF 폴더에 'xxx-servlet.xml' 파일을 생성한다.
  6. post 방식의 한글처리를 위해 필더를 web.xml 에 설정한다.
  7. META-INF 폴더에 context.xml 을 복사 *커넥션풀 설정한다.
  8. controller, dao, service, mapper, vo 패키지 만들기 

만약 Members 테이블을 이용해서 멤버정보를 출력하고 싶다면
  1. vo 패키지에 Member 클래스를 생성한다.
  2. dao 패키지에 MembersDAO 인터페이스와 그를 구현하는 MembersDAOImpl 클래스를 총 2개 생성한다.
  3. mapper 패키지에 members.xml 만든다.
  4. service 패키지에 MembersService 인터페이스와 MembersServiceImpl 클래스를 총 2개 생성한다.
  5. WEB-INF 폴더에 mybatis-config.xml 파일을 복사한 후 mapper 와 typeAlias 를 설정한다.
  6. applicationContext.xml 에 커넥션풀 설정 *JNDI로 (Java Naming  and Directory Interface) 
  7. applicationContext.xml 에 sqlSessionFactory 설정한다.
  8. applicationContext.xml 에 sqlSession 설정한다.
  9. applicationContext.xml 에 DAO 설정한다. *sqlSession 의존성 주입
  10. applicationContext.xml 에 service 설정한다. *dao 의존성 주입
만약 'http://localhost/member.jbp' 에서 모든 멤버정보를 모두 출력한다면

 

  1. controller 패키지에 MemberController 클래스 생성한다.
  2. Controller 에 Controller 어노테이션 설정한다. *@Controller
  3. memberList() 라는 이름의 메서드를 생성한다. *@RequestMapping 주소 설정
  4. Controller 를 'xxx-servlet.xml' 에 bean 으로 등록한다.
  5. '/WEB-INF/view'와 '.jsp' 설정을 편하게 하기 위해 view-resolvers 설정
  6. Controller 는 Service 에 의존적이다.
  7. Controller 에 멤버필드로 service 인터페이스를 선언한다.
  8. 의존성 주입을 위해 setter 선언
  9. bean 에 'p-xxxx-ref' 로 service 의존성 주입 *빈 와이어링(Bean Wiring) = 빈 묶기
  10. SELECT 구문을 maper 파일에 설정한다.
  11. DAO 에 추상메서드를 선언한다.
  12. DAO 구현 클래스에서 구현메서드를 만든다.
  13. Service 에 추상메서드를 선언한다.
  14. Service 구현 클래스에서 구현메서드를 만든다.
  15. Controller 에서 Model 이 필요하기 때문에 Model 을 인자로 받는다. *jsp 출력을 하기 위해 사용
  16. Controller 에서 Serivce 의 method 를 호출하여 List 객체를 얻고 그 list 객체를 Model 에 attribute 로 세팅한다.
  17. WEB-INF 폴더에 view 폴더를 생성후 jsp 파일을 생성한다.
  18. jsp 에서 JSTL 과 EL 을 이용해서 출력한다.

POJO
POJO(Plain Old Java Object)로 구현하지 않거나 상속 받지 않는 것을 말한다.

 

최근 글