Spring/Spring 웹 MVC
[스프링 웹 MVC] 서블릿 애플리케이션 개발
메성
2020. 2. 11. 01:56
반응형
서블릿 애플리케이션 개발
maven 프로젝트 생성
pom.xml 간략 설명
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope> <!-- 소스 클래스 패스에서는 사용 못하고 오롯이 테스트를 실행할 때만 사용 가능 -->
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope> <!-- 이 의존성을 언제 어떻게 클래스패스에 넣고 쓸 것이냐의 범위를 뜻함 -->
<!-- 코딩 시점에는 사용이 가능하나, 런타임 시점(war 패키징)에는 클래스 패스에서 제외된다.-->
</dependency>
- JUnit Scope : test
- 소스 classpath 에서는 사용 못하고 오롯이 테스트를 실행할 때만 사용이 가능하다.
- Servlet Scope : provided
- 이 의존성을 언제 어떻게 classpath에 넣고 쓸것이냐의 범위를 뜻한다.
- 코딩 시점에는 사용이 가능하나, 런타임 시점(war 패키징 시점)에는 classpath에서 제외된다.
- 해당 API는 어딘가(컨테이너)에서 제공이 되어진다는 뜻이다.
- 이로 인해서 런타임 시점에서는 classpath에서 제외되도 괜찮다는 것이다.
소스 패키지 설정
File > project structure > Modules > java 패키지 > source로 설정
서블릿을 사용한 애플리케이션을 실행하기 위해서는 톰캣 서버가 필요하다.
애플리케이션 실행을 위한 web.xml 설정
<!--서블릿 등록-->
<servlet>
<servlet-name>hello</servlet-name>
<!-- 서블릿 위치 -->
<servlet-class>com.mesung.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
서블릿 컨테이너 실행 순서
- 첫 로딩
- init > doGet 혹은 doPost
- 다음 로딩
- doGet 혹은 doPost
- 종료
- destroy
스프링 MVC는 서블릿 컨테이너 기반으로 만들어졌다.
@Override
public void init() throws ServletException {
System.out.println("init");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
System.out.println("doGet");
resp.getWriter().println("<html>");
resp.getWriter().println("<head>");
resp.getWriter().println("<body>");
resp.getWriter().println("<h1>hello servlet</h1>");
resp.getWriter().println("</body>");
resp.getWriter().println("</head>");
resp.getWriter().println("</html>");
}
@Override
public void destroy() {
System.out.println("destroy");
}
- 위 소스 기반으로 스프링 MVC가 만들어진 것이다.
반응형