이번에 Spring Tool Suite로 Maven을 사용할 때, 간혹 추가되지 않은 의존성 몇 가지에 의해, 에러가 나는 경우가 있어서

적어둔다.

 

 

1. web.xml에서 에러 발생 시 추가

1
2
3
4
5
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.3.2</version>
        </dependency>
cs

2. Java EE Perspective가 없을 때 마켓 플레이스에서 검색하여 설치.

 

3.Maven에 Tomcat API 추가. https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-api

 

1
2
3
4
5
6
7
        <!-- 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>
        </dependency>
cs

4. 가장 짜증났던 부분인데 JSP 페이지 생성할 때, Servlet 관련 API가 없어서 발생하는 에러 해결.

 

1
2
3
4
5
6
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
cs

 

차후에도 추가 합니다.

'프로그래밍 > Spring Framework' 카테고리의 다른 글

[Spring] @RestController , @Controller의 차이  (0) 2018.08.20

@Controller와 @RestController의 차이

 

HTTP Response Body가 생성되는 방식의 차이.

 

기존의 MVC @Controller는 View 기술을 사용하지만, @RestController는 객체를 반환할때 객체 데이터는 바로 JSON/XML 타입의 HTTP 응답을 직접 리턴하게 된다.

 

@Controller의 메서드에 @ResponseBody를 선언해서 객체를 리턴 하는 방법도 있다.

 

 

실행 흐름 순서

 

@Controller의 실행 흐름

 

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client 

 

@ResponseBody의 실행 흐름

 

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller (ResponseBody)-> Response -> Client 

 

@RestController의 실행 흐름

 

Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController (자동 ResponseBody 추가)-> HTTP Response -> 

 

Client

 

 

ResponseEntity

 

별도의 View를 제공하지 않는 형태로 서비스를 실행한다. 예외의 상황에서 문제가 발생 할 수 있다.

 

개발자가 직접 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스로 404, 500같은 HTTP 상태 코드를 전송하려는 데이터와 함께 전송 가능 하므로 세밀한 제어를 원하는 경우 사용 가능하다.

 

 

참조 블로그

 

http://doublesprogramming.tistory.com/105

 

 

+ Recent posts