스프링에서의 서블릿
* 서블릿 선언
서버 시작시 기동할 서블릿이 있으면 여기에 기술한다.
해당 서블릿은 HttpServlet 을 상속받아야 한다.
스프링의 경우 해당 매핑에 대해 DispatcherServlet이 관문 역할을 하게 된다.
DispatcherServlet이 컨트롤러를 찾아 요청하게되고, 결과를 받아 View를 검색해 클라이언트에게
전달하게된다.
<servlet>
<servlet-name>이름</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>이름</servlet-name>
<url-patten>*.htm</url-pattern>
</servlet-mapping>
한글등의 처리를 위해서는 인코딩 필터를 추가
<filter>
<filter-name>필터명</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>필터명</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
DispatcherServlet은 실행되면서, 이름-servlet.xml 을 로드하게 된다.
물론 아래처럼 xml 지정할 수 있다.
<servlet>
<servlet-name>이름</servlet-name>
<servlet-class>...
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/my-context.xml</param-value>
</init-param>
.
.
</servlet>
* 빈
DispatcherServlet은 bean을 검색해 사용자의 요청 url에 해당하는 bean을 찾는다.
이름-servlet.xml
<beans>
<bean name="test" class="com.test.MyController">
<property name="val" value="myTest"/>
<constructor-arg>
<ref bean="hello"/>
<value>1</value>
<value type="int">1</value>
</constructor-arg>
</bean>
</beans>
constructor-arg 는 생성자에 필요한 인수를 정의.
property 는 setter 로 프로퍼티 설정.
해당 bean이 검색되면 지정된 클래스(컨트롤러)의 handleRequest() 메쏘드를
호출하게 된다.
public class MyController implements Controller {
String val;
public ModelAndView handleRequest( HttpServletRequest req, HttpServletResponse res)
trows ServletException, IOException {
return new ModelAndView("test.jsp");
}
public void setVal( String val ) {
this.val = val;
}
}
ApplicationListener 같은 녀석을 상속받으면, 시스템 시작시 해당 메쏘드들 호출 시킬 수도 있다.
* 뷰(test.jsp)
대강 hello world 작성 -_-;;
* 기타
위의 요소들은 어노테이션을 사용해 보다 간단히 표현이 가능하다
@Component
@Controller
@Service
@Repository
예를 들어 위에 작성된 컨트롤러를 어노테이션 형태로 변경하면..
@Controller
public class MyController {
@RequestMapping("/test.htm")
public ModelAndView helloWorld() {
return new ModelAndView("test.jsp");
}
@PostConstruct
// 초기화 메쏘드
@PreDestroy
// 정리 메쏘드
}
dispatcher 관련 xml에서 위 클래스드를 검색할 수 있도록 설정해야 한다.
별다른 bean없이 어노테이션을 자동 검색해 등록
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.test" />
</beans>
위의 세줄이 xml에 bean 설정 없이 패키지내의 클래스 중 annotation을 참조해
bean을 생성하게 된다.
스프링은 그냥 재미삼아 보기엔 양이 너무 많고..
어노테이션은 간결하지만,
아무튼 그냥 정리만 해도... 잠이 쏟아진다..
'프로그래밍 > Web' 카테고리의 다른 글
Gradle Wrapper (0) | 2017.03.06 |
---|---|
스프링 요청/응답 (0) | 2017.02.26 |
JPA 쿼리 이것저것 (0) | 2017.02.22 |
[spring] 프로퍼티 값 읽기 (0) | 2017.02.21 |
[spring] 핸들러 인터셉터 (0) | 2017.01.24 |
[spring] Spring boot 기본 설정 (0) | 2017.01.24 |
[spring] batch 작업관련 요소들 (0) | 2012.09.28 |
[spring] JAVA코드 테스트를 위한 Spring설정 (0) | 2012.09.25 |
[MyBatis] 기본 사용법 (0) | 2012.05.13 |
톰캣 (0) | 2012.05.10 |