Spring??
- Rod Johnson이 만든 오픈소스 프레임워크
- 복잡한 엔터프라이즈 애플리케이션 개발을 겨냥하였음
- 단순성, 테스트 용이성, 느슨한 결합성의 측명이 스프링의 이점을 제시하고 있음
경량화된 제어 역행(DI)과 관점지향(AOP) 컨테이너를 구성되어 있는 프레임워크
스프링 모듈
- core
- 프레임워크에서 가장 기본적인 부분이고, 의존성 삽입(Dependency Injecton) 기능을 제공한다.
- DAO
- jdbc 코딩과 데이터베이스 업체별 특정 처리할 필요가 없는 jdbc 추상화 레이어를 제공
- ORM
- 객체 관계 매핑 API를 위한 통합 레이어를 제공
Mybatis를 활용해서 DB 처리를 효율화 한다. - Web
- 화면 View 뿐만 아니라, 웹에서 파일 업로드, 다운로드
- MVC
- 웹 애플리케이션의 모델 2 패턴을 스프링에서 지원
spring MVC
- dispatcher.xml에서 controller 등록
- controller
- 스프링의 공통 servlet인 DispatcherServlet의 다음 단계의 내용을 처리..
- 요청된 내용을 받고, model 단으로 요청 처리에 필요한 business logic을 처리
Service, DAO - view 단에 넘겨줄 model
web.xml 설정
- url을 통해서 웹서버를 호출할 때 가장 먼저 호출되는 곳
- http://localhost:8080/springweb
- front단 controller 선언(DispatcherServlet)
- 공통적으로 스프링에서 지원하는 servlet을 선언합니다
- 어떤 url 패턴으로 스프링의 servlet이 호출되는지도 선언합니다
- *.do ==> 스프링에서 사용하는 servlet을 선언
- default 스프링 컨테이너 설정파일
<servlet-name>으로 설정한 이름 dispatcher.xml - 스프링에서 지원하는 한글 encodingFilter 선언(CharacterEncodingFilter)
DI(Dependency Injection)
- 의존 주입
- 조립기를 사용하여, 기존 클래스에 영향이 없이 서로 간에 type을 확인하여 해당 객체를 삽입하는 code 처리 방식을 말한다.
spring 조립기
- dispatcher-servlet.xml에서 정의된 클래스는 WAS 로딩 시, 사용자 정의 클래스나 프레임웍 기반을 클래스가 실제 객체가 메모리에 로딩하는 처리
- 조립기에 객체 생성으로 할당 하기에, 실제 클래스 코드에서는 new XXX 코드가 사라지게 된다.
조립기에서 클래스 선언, 데이터 할당
- 객체 생성
- Person p= new Person();
- p.setName("홍길동"); - 조립기
- < bean id= "p" class = "패키지명...Person" />
- < property name = "name" value = "홍길동" />
- < property name = "age" value= "25" />
</bean>
컨테이너 내용 확인
- xml 로딩
- Resource rs = new ClassPathResource("경로/diexp01.xml"); - xml에 있는 bean을 호출..
- BeanFactory: bean 객체 호출
- XmlBeanFactory: Resource에 있는 xml bean 객체 호출
- .getBean("xml에 선언된 id")
- Person p= (Person)bean.getBean("p");
- p.getName(), p.getAge()
생성자를 통한 할당
- DTO: 생성자를 통하여 데이터를 할당 할 수 있도록 선언
- Person(String name, int age) - xml bean 선언
객체에 객체 할당 처리..
- 클래스 선언
- 조립기(Container) 처리
type casting 없이 bean 활용
- main()
1:N에 대한 조립기 처리
- DTO
Controller를 통한 요청 처리
- 요청
- http://localhost:8080/springweb/callctrl.do - 자바 Controller
요청 처리를 해주는 여러 객체들
- public String call(@@@, Model d) { }
- 클래스 선언
Member m : ?id=himan&pass=7777 - 한개 단위 입력값 처리
@RequestParam(value="id", defaultValue="")
- value: query string key를 지칭
- defaultValue: 실제 string key가 없거나, 데이터를 할당하지 않은 경우 초기치 설정
- start.do?XXXX
get/post 처리
- Controller에 공통 RequestMapping annotation 설정, get/post 방식 처리
- @RequestMapping( value = "요청 주소", method=RequestMethod.GET)
- 해당 요청 주소로 get방식을 처리했을 때 - @RequestMapping( value = "요청주소", method=RequestMethod.POST)
- 해당 요청 주소로 post 방식을 처리 했을 때
@ModelAttribute
- 요청 처리 객체의 내용을 모델로 데이터를 넘길 때, 요청 + model 기능을 하는 객체를 말한다.
- 해당 클래스를 controller에서 공통으로 활용할 수 있다.
- Controller
@ModelAttribute("모델이름선언")
public Product getProduct(){
return new Product();
}
'programming > web' 카테고리의 다른 글
[spring]ViewResolver (0) | 2017.06.07 |
---|---|
[spring]ModelAndView, redirect, forward, session (0) | 2017.06.07 |
AJAX (0) | 2017.05.30 |
커넥션 풀(connection pool) (0) | 2017.05.29 |
[jsp] 쿠키 (0) | 2017.05.25 |