6-2) 글로 적는 웹개발 - 스프링(Spring)
2019. 9. 28. 15:37
■ 스프링
- * 스프링은 애플리케이션 프레임워크라는 특징을 가진다. 애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말한다.
- 스프링은 빈팩토리(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 패턴을 웹에 적용하는 방식이다.
- MVC란 Model 과 View 와 Controll 로 기능을 나눠 개발하는 방식이다.
- 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 |
- DispatcherServlet 란 한마디로 웹에서의 모든 요청을 받아서 결과로 되돌려준다. 이런 DispatcherServlet 이 바로 Front Controller Pattern 기반으로 Front Controller 란 모든 리소스의 요청을 처리하는 하나의 대표 컨트롤러를 두는 패턴을 말한다. |
- 모델2(Model2) 로 개발하기 위해서는 설정 파일이 2개이다.
- applicationContext.xml : 스프링의 설정
- 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 방식)
- lib 폴더에 .jar 파일을 전부 복사한다.
- applicationContext.xml 을 WEB-INF 폴더에 생성한다.
- web.xml에 applicationContext.xml을 읽어들이는 ContextLoaderListener 를 설정한다.
- web.xml에 dispatcherServlet 을 servlet 으로 설정 / 맵핑도 설정한다.
- web.xml 의 servlet-name 으로 WEB-INF 폴더에 'xxx-servlet.xml' 파일을 생성한다.
- post 방식의 한글처리를 위해 필더를 web.xml 에 설정한다.
- META-INF 폴더에 context.xml 을 복사 *커넥션풀 설정한다.
- controller, dao, service, mapper, vo 패키지 만들기
만약 Members 테이블을 이용해서 멤버정보를 출력하고 싶다면 |
- vo 패키지에 Member 클래스를 생성한다.
- dao 패키지에 MembersDAO 인터페이스와 그를 구현하는 MembersDAOImpl 클래스를 총 2개 생성한다.
- mapper 패키지에 members.xml 만든다.
- service 패키지에 MembersService 인터페이스와 MembersServiceImpl 클래스를 총 2개 생성한다.
- WEB-INF 폴더에 mybatis-config.xml 파일을 복사한 후 mapper 와 typeAlias 를 설정한다.
- applicationContext.xml 에 커넥션풀 설정 *JNDI로 (Java Naming and Directory Interface)
- applicationContext.xml 에 sqlSessionFactory 설정한다.
- applicationContext.xml 에 sqlSession 설정한다.
- applicationContext.xml 에 DAO 설정한다. *sqlSession 의존성 주입
- applicationContext.xml 에 service 설정한다. *dao 의존성 주입
만약 'http://localhost/member.jbp' 에서 모든 멤버정보를 모두 출력한다면 |
- controller 패키지에 MemberController 클래스 생성한다.
- Controller 에 Controller 어노테이션 설정한다. *@Controller
- memberList() 라는 이름의 메서드를 생성한다. *@RequestMapping 주소 설정
- Controller 를 'xxx-servlet.xml' 에 bean 으로 등록한다.
- '/WEB-INF/view'와 '.jsp' 설정을 편하게 하기 위해 view-resolvers 설정
- Controller 는 Service 에 의존적이다.
- Controller 에 멤버필드로 service 인터페이스를 선언한다.
- 의존성 주입을 위해 setter 선언
- bean 에 'p-xxxx-ref' 로 service 의존성 주입 *빈 와이어링(Bean Wiring) = 빈 묶기
- SELECT 구문을 maper 파일에 설정한다.
- DAO 에 추상메서드를 선언한다.
- DAO 구현 클래스에서 구현메서드를 만든다.
- Service 에 추상메서드를 선언한다.
- Service 구현 클래스에서 구현메서드를 만든다.
- Controller 에서 Model 이 필요하기 때문에 Model 을 인자로 받는다. *jsp 출력을 하기 위해 사용
- Controller 에서 Serivce 의 method 를 호출하여 List 객체를 얻고 그 list 객체를 Model 에 attribute 로 세팅한다.
- WEB-INF 폴더에 view 폴더를 생성후 jsp 파일을 생성한다.
- jsp 에서 JSTL 과 EL 을 이용해서 출력한다.
POJO |
POJO(Plain Old Java Object)로 구현하지 않거나 상속 받지 않는 것을 말한다. |
'개발자의 길 > 글로 적는 웹개발' 카테고리의 다른 글
6-3) 글로 적는 웹개발 공부 - 스프링(Spring) (1) | 2019.09.28 |
---|---|
6) 글로 적는 웹개발 - 스프링(Spring) (0) | 2019.09.23 |
5-3) 글로 적는 웹개발 공부 - 복습 (0) | 2019.09.22 |
5-2) 글로 적는 웹개발 공부 - 복습 (0) | 2019.09.18 |
5) 글로 적는 웹개발 공부 - 복습 (0) | 2019.09.17 |