티스토리 뷰

Java

Java: Spring RESTful 구현시 주의점

개태형님 2016. 10. 6. 17:42

1. RESTful 이란 하나의 URI는 하나의 고유한 리소스를 의미하도록 설계 한다는 의미 이다.

 

 기존 : http://simpleBoard.com/sports.htmll?category=baseball

 변경 : http://simpleBoard.com/sports/baseball

 

 

 

2. 기존 GET, POST 방식 외에 PUT, DELETE 방식이 추가된다.

 

 Create : POST

 Read : GET

 Update : PUT

 Delete : DELETE

 

 

3. PUT, DELETE는 form요소에서 정식으로 지원되지 않으므로 아래와 같이 해야 한다.

 

 <input type="hidden" name="_method" value="PUT" />

 <input type="hidden" name="_method" value="DELETE" />

 

 ※ servlet.xml 에서는 PUT, DELETE를 인식 할 수 있도록 filter를 등록

 <!-- POST방식일때 _method(PUT/DELETE)요청 Filter 설정 -->
 <filter>
	 <filter-name>method</filter-name>
	 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
 </filter>
 <filter-mapping>
	 <filter-name>method</filter-name>
	 <url-pattern>/*</url-pattern>
 </filter-mapping>

 

 

 

4. RESTful 에서 ajax 처리 방식의 두가지 방법

 

 1) RestController를 따로 만들어서 사용(ajax 전용으로 해야함)

     - class 상단 어노테이션을 @Controller가 아닌 @RestController로 지정

 

 2) equestMapping 어노테이션에 produces 이용

 @RequestMapping(value = "/test", produces = "application/json")
 @ResponseBody
 public Product test() {
	Product p = new Product();
	p.setName("테스트");
	return p; // View 페이지 에서는 json 형태로 반환 된다.
 }

 

 

5. web.xml 설정시 servlet-mapping시 url-pattern을 / 로 지정 한다.

<!-- DispatcherServlet url mapping -->
<servlet-mapping>
	<servlet-name>simpleBoard</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

 

 

 

 

6. 모든 경로가 DispatchServlet으로 들어가기 때문에 정적인 리소스 경로 명시

 

 1) servlet.xml

<mvc:resources location="/css/" mapping="/css/**" />
<mvc:resources location="/img/" mapping="/img/**" />
<mvc:resources location="/js/" mapping="/js/**" />
<mvc:resources location="/fonts/" mapping="/fonts/**" />

 

 2) View Page에서는 실제 리소스 호출시 절대 경로로 적어줘야 한다

<link rel="stylesheet" href="/css/reset.css" />
<link rel="stylesheet" href="/css/font-awesome.min.css" />
<link rel="stylesheet" href="/css/noto.sans.korea.css" />
<link rel="stylesheet" href="/css/main.css" />
<script src="/js/jquery.js"></script>

 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday