Web Io C web xml Context Loader Listener
Web Io. C 컨테이너 계층구조 web. xml Context. Loader. Listener application. Context*. x ml l Context. Loader. Listener와 Dispatcher. Servlet는 각각 별도의 Web. Applicaton. Context 인스턴스를 생성 l Context. Loader. Listener가 root 가 되고 Dispatcher. Servlet는 자식이 되어 빈을 상 속 [servlet-name]servlet. xml …
애플리케이션 컨텍스트 계층구조 Web. xml 파일에 계층구조 등록 <listener> <listenerclass>org. springframework. web. context. Context. Loader. Listener</listener-class> </listener> <servlet-name>Spring. Hello</servlet-name> <servlet-class>org. springframework. web. servlet. Dispatcher. Servlet</servletclass> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring. Hello</servlet-name> <url-pattern>*. html</url-pattern> </servlet-mapping>
MVC 모델 97 p JSP간 복잡한 이동 http 요청 http 응답 JSP JSP HTML+Ja va db JSP서 DB 직접 접근 http 요청 http 응답 JSP JSP Java JSP Bean db MVC 모델 1 일관된 응답요청관리 http 요청 Servlet JSP (Controlle r) http 응답 MVC 모델 2 JSP JSP (View) Bean JSP (Model ) db
Spring framework와 MVC 모델- p. 98 -99 Controlle r Model View (1)HTTP 요청 HTTP 응 답 (5)모델 전달 (2)요 청 (4)모델 (6)데이터 과 뷰 반환 생성 (3)생성
Spring MVC 처리의 흐름-p. 100 : 웹요청 URL과 컨트롤러 매핑 웹브라우져 Handler. Mapping 컨트롤러 선택 요청 2 1 URL 처리요청 /hello. do 3 Dispatcher Servlet 처리위임 Model. And. View 5 결과물 출력 View (*. jsp) Controller 4 Model 뷰 선택요청 Model. And. View 6 Controller View. Resolver
Spring 프로젝트 환경 구성-p. 26 JRE JDK(Java Development Kit) PATH 설정 : C: ₩Program Files₩Java₩jdk 1. 8. 0₩bin CLASSPATH 설정 : C: ₩Program Files₩Java₩jre 8₩lib Jre는 바이트코드(xxx. class)를 찾아 실행한다. 바이트코드를 찾을 위치나 파일을 모두 등록한다. JAVA_HOME 설정 : C: ₩Program Files₩Java₩jdk 1. 8. 0₩ Apache 웹 서버 설치(개발 환경에서는 불필요) Tomcat JSP 컨테이너 설치 Eclipse에 tomcat 서버 연동 ⑦ ⓛ http: //168. 126. 141. 3/lee. jsp Web 서버 웹 서버 엔진 -apache -IIS ② ⑤ 웹 컨테 이너 Tomcat ④ - resin ③ ⑥ lee. html lee. jsp DB서버
Web Io. C 컨테이너 계층구조 web. xml Context. Loader. Listener application. Context*. x ml l Context. Loader. Listener와 Dispatcher. Servlet는 각각 별도의 Web. Applicaton. Context 인스턴스를 생성 l Context. Loader. Listener가 root 가 되고 Dispatcher. Servlet는 자식이 되어 빈을 상 속 [servlet-name]servlet. xml …
Spring MVC 프로젝트 시작 helloworld! 프로젝트 - DB 연동(model )부분이 없음 1. File > new > Dynamic Web Project 2. Project name : Webhello 입력
Spring MVC의 환경 구성 1. http: //repo. springsource. org/release/org/springframework/spring/ 에서 Spring Framework의 다운로드 2. 압축을 풀고 lib 폴더를 프로젝트 lib 폴더에 import 3. 기타 의존관계에 있는 필요한 library 파일 import
Spring MVC 프로젝트 생성 Web project를 Spring Project로 전환 1. 오른쪽 클릭>Spring Tools > Add Spring Project Nature
Spring Project의 전체 구성 1. java Bean(소스코 드) - Controller - Model 2. jsp 파일 - View web root 4. Spring 4. 0 Library 파일 3. Spring(Io. C) 컨테이 너 구성 파일
Io. C 컨테이너 설정(web. xml) Context. Loader. Listener 와 Dispatcher. Servlet 설정 1. 오른쪽 클릭>new>XML파일 2. web. xml 입력
Io. C 컨테이너 설정 web. xml Web. Application 컨테이너 Context. Loader. Listener application. Context*. x ml Dao data. Source Message. Sour ce [servlet-name]servlet. xml
application. Context. xml 작성 <? xml version="1. 0" encoding="UTF-8"? > <beans xmlns="http: //www. springframework. org/schema/beans" xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance" xsi: schema. Location="http: //www. springframework. org/schema/beans/springbeans. xsd"> <!-- Root Context: defines shared resources visible to all other web components --> </beans>
Dispatcher. Servlet 어플리케이션 컨텍스트 설정 [servlet-name]-servlet. xml 파일에 Io. C 컨테이너(어플리케이션 컨텍스트)에 생성 되어야하는 객체(beans)를 선언한다. 요청에 대응하는 컨트롤러 처리기를 선택(Handler. Mapping ) 컨트롤러 처리 결과를 View. Resolver를 통하여 처리 결과를 View에 전송 컨트롤러 선택 요청 Handler. Mapping 2 Dispa tcher Servlet 3 처리위임 Model. And. View 5 Controller 뷰 선택요청 Model. And. View 6 message: 결과물 출력 message: View (*. jsp) Controller View. Resolver 4 Model
Spring Controller Class 생성
Controller 생성 2. Viewresolver 로 전 달됨
Model. And. View -p. 105 l l Model. And. View l Controller와 Veiw 사이에 전달할 값을 저장하는 클래스 l l set. View. Name(String view. Name) 전달될 jsp 파일명 add. Object(String name, Object value) key(변수) : value l add. All. Objects(Map model. Map) l import org. springframework. web. servlet. Model. And. View 사용 @Request. Mapping 에노테이션 l URL 요청에 대응하는 메서드를 매핑한다. @Request. Mapping( value="/hello", method=Request. Method. GET) l @Request. Mapping( value="/user/add", method=Request. Method. POST). l URL 요청이 get 방식일 때 hello. Web() 메서드가 모든 요청을 처리할 것 임을 알린다 l
Dispatcher. Servlet 설정화일 (Web. Helloservlet. xml) <? xml version="1. 0" encoding="UTF-8"? > <beans … 네임스페이스 그대로 사용, 지우지 마세요… <!-- Controller --> <bean id="hello. Controller" class="controller. Web. Hello. Controller"></bean> <!-- Handler. Mapping --> <bean id="handler. Mapping" class="org. springframework. web. servlet. handler. Simple. Url. Handler. Mapping"> <property name="mappings"> <props> <prop key="/hello. do">hello. Controller</prop> </props> </property> </bean> <!-- View. Resolver --> <bean id="internal. Resource. View. Resolver" class="org. springframework. web. servlet. view. Internal. Resource. View. Resolver"> <property name="view. Class"> <value>org. springframework. web. servlet. view. Jstl. View</value> </property> <property name="prefix"> <value>WEB-INF/jsp/</value> </property> <property name="suffix"> <value>. jsp</value> WEB_INF/jsp/webhello. </property> </bean> jsp </beans>
View (hello. jsp) 생성 1. WEB-INF 폴더 아래에 JSP 폴더 생성 2. jsp 오른쪽 클릭>new >jsp 3. webhello. jsp 입력
webhello. jsp
Spring MVC 처리의 흐름 웹브라우져 Handler. Mapping 컨트롤러 선택 요청 2 1 URL 처리요청 /hello. do 3 Dispatcher Servlet 처리위임 Model. And. View 5 Controller message: 결과물 출력 View (*. jsp) Controller 4 Model 뷰 선택요청 Model. And. View 6 message: View. Resolver
Window > Show View
Spring 실행 순서 정보: Root Web. Application. Context: initialization started 정보: Loading XML bean definitions from Servlet. Context resource [/WEB-INF/application. Context. xml] 정보: Root Web. Application. Context: initialization completed in 260 ms 정보: Initializing Spring Framework. Servlet 'Web. Hello‘ 정보: Framework. Servlet 'Web. Hello': initialization started 정보: Loading XML bean definitions from Servlet. Context resource [/WEB-INF/Web. Hello-servlet. xml] 정보: Mapped URL path [/hello. html] onto handler 'hello. Controller’ 정보: Framework. Servlet 'Web. Hello': initialization completed in 307 m 정보: Server startup in 2135 ms
Error message § import org. springframework. web. servlet. Model. And. View 사용 § 다른 컴퓨터에서 작성했던 Project를 Import 하면 다른 컴퓨터에서 사용하던 Jre, Tomcat 환경이 변경되었으므로 에러가 발생함 § 프로젝트명 오른쪽 클릭 > Build. Path > Config Build. Path >Library >Add liblary > Server Runtime >tomcat 8 § 이미 한번 실행한 후 폴더 이름을 Rename 한 경우 Server에서 생성된 해 당 프로젝트 인스턴스를 지우고 다시 실행 IOException parsing XML document from Servlet. Context resource [/WEB-INF/Web. Helloservlet. xml]; nested exception is java. io. File. Not. Found. Exception: Could not open Servlet. Context resource [/WEB-INF/Web. Hello-servlet. xml] Error creating bean with name 'handler. Mapping' defined in Servlet. Context resource [/WEB-INF/Web. Hello-servlet. xml]: No bean named 'hello. Controllerr' is defined 경고: No mapping found for HTTP request with URI [/Web. Hello/hell 2. html] in Dispatcher. Servlet with name 'Web. Hello'
Welcome 화일 만들기(index. jsp) web. Root(Web. Content)에 index. jsp 파일을 만들고 시작 메뉴를 작성한다. <%@ page language="java" content. Type="text/html; charset=utf-8" page. Encoding="utf- 8"%> <!DOCTYPE html PUBLIC "-//W 3 C//DTD HTML 4. 01 Transitional//EN" http: //www. w 3. org/TR/html 4/loose. dtd"> <html> <head> <title>Welcome Hello World</title> </head> <body> <center> <h 2>Welcome to Hello World</h 2> <h 4><a href="http: //localhost: 8080/Web. Hello/hello. do"> Click Here </a></h 4> </center> </body> </html>
시작 프로젝트 만들기 Project name : Test학번 Package Controller file name : My. Hello. java jsp file : /WEB-INF/view/Hello. View. jsp Model. And. View 인스턴스 명 : model 메시지 매개변수: msg 메시지 내용 : 장안대학 캠퍼스에 벚꽃이 피면 … : cotroller
Dispatcher. Servlet 설정화일 구성 개선 • • Controller, Handler. Mapping은 컨트롤러가 많아질수록 라인수가 많아지므로 개선 필요 객체 생성, 핸들러 매핑 기능을 @Controller @Request. Mapping에 위임 - 생략 가능 <? xml version="1. 0" encoding="UTF-8"? > <beans … <!-- Controller --> <bean id="hello. Controller" class="controller. Web. Hello. Controller"></bean> 생략 가능 <!-- Handler. Mapping --> <bean id="handler. Mapping" class="org. springframework. web. servlet. handler. Simple. Url. Handler. Mapping"> <property name="mappings"> <props> 생략 가능 <prop key="/hello. html">hello. Controller</prop> </props> </property> </bean> <!-- View. Resolver --> <bean id="internal. Resource. View. Resolver" class="org. springframework. web. servlet. view. Internal. Resource. View. Resolver"> <property name="view. Class"> <value>org. springframework. web. servlet. view. Jstl. View</value> </property> <property name="prefix"> <value>WEB-INF/jsp/</value> </property> <property name="suffix"> <value>. jsp</value> </property> </beans>
개선(Component-scan)- 객체 자동검색, 생 성 Web. Hello-servlet. xml controller package에 있는 파일을 모두 찾아 @Controller 어노테이션 표시가 있 는 클래스의 객체 생성 Web. Hello. Controller
Handler 생략 Web. Hello-servlet. xml Web. Hello. Controller
- Slides: 41