springmvc 의 REST 스타일 에 대한 상세 한 설명
REST: 즉 Representational State Transfer 입 니 다.(자원) 표현 층 상태 전환.현재 가장 유행 하 는 인터넷 소프트웨어 구조 이다.그것 은 구조 가 뚜렷 하고 기준 에 부합 되 며 이해 하기 쉽 고 확장 이 편리 하기 때문에 점점 더 많은 사이트 에서 사용 되 고 있다.
• 자원 (Resources): 네트워크 의 실체 또는 네트워크 의 구체 적 인 정보 라 고 할 수 있 습 니 다.그것 은 텍스트 한 장, 그림 한 장, 노래 한 곡, 서비스 일 수 있다. 한 마디 로 하면 구체 적 인 존재 이다.하나의 URI (자원 포 지 셔 닝 문자 통일) 로 가리 킬 수 있 으 며, 각 자원 은 특정한 URI 에 대응 합 니 다.이 자원 을 가 져 오 려 면 URI 에 접근 하면 됩 니 다. 따라서 URI 는 모든 자원 의 유일한 식별 자 입 니 다.
• 표현 층 (Representation): 자원 을 구체 적 으로 나타 내 는 형식 을 표현 층 (Representation) 이 라 고 합 니 다.예 를 들 어 텍스트 는 txt 형식 으로 표현 할 수도 있 고 HTML 형식, XML 형식, JSON 형식 으로 표현 할 수도 있 으 며 바 이 너 리 형식 으로 도 표현 할 수 있다.
• 상태 전환 (State Transfer): 요청 을 할 때마다 클 라 이언 트 와 서버 의 상호작용 과정 을 대표 합 니 다.HTTP 프로 토 콜 은 모든 상태 가 서버 에 저 장 된 상태 가 아 닌 상태 프로 토 콜 입 니 다.따라서 클 라 이언 트 가 서버 를 조작 하려 면 특정한 수단 을 통 해 서버 측 에 '상태 전환' (State Transfer) 이 발생 하도록 해 야 한다.이런 전환 은 표현 층 위 에 세 워 진 것 이기 때문에 '표현 층 상태 전환' 이다.구체 적 으로 말 하면 HTTP 프로 토 콜 에서 조작 방식 을 나타 내 는 네 개의 동 사 는 GET, POST, PUT, DELETE 이다.이들 은 각각 네 가지 기본 동작 에 대응 합 니 다. GET 는 자원 을 가 져 오 는 데 사용 되 고 POST 는 자원 을 새로 만 드 는 데 사용 되 며 PUT 는 자원 을 업데이트 하 는 데 사용 되 며 DELETE 는 자원 을 삭제 하 는 데 사 용 됩 니 다.
2. 위 에서 REST 에 대한 설명 을 보고 어리둥절 한 표정 을 짓 는 것 이 아 닙 니까? 괜 찮 습 니 다. 우 리 는 코드 인 스 턴 스 를 통 해 해석 합 니 다.
실제로 REST 는 새로운 CRUD 조작 방식 인 데 SpringMVC 는 어떻게 이 루어 졌 을 까?
1. 기본 값 은 POST, GET 만 지원 하기 때문에 웹. xml 에 HiddenhttpMethodFilter 를 설정 하여 PUT, DELETE 를 지원 해 야 합 니 다.
myFilter
org.springframework.web.filter.HiddenHttpMethodFilter
myFilter
/*
mvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:mvc-servlet.xml
1
mvc
/
HiddenHttpMethodFilter 원본 코드:
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
HttpServletRequest requestToUse = request;
if ("POST".equals(request.getMethod()) && request.getAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE) == null) {
String paramValue = request.getParameter(this.methodParam);
if (StringUtils.hasLength(paramValue)) {
requestToUse = new HttpMethodRequestWrapper(request, paramValue);
}
}
filterChain.doFilter(requestToUse, response);
}
원본 코드 를 통 해 SpringMVC 는 post 요청 을 delete 와 put 로 변환 할 수 있 음 을 알 수 있 습 니 다. POST 요청 을 보 낼 때 name = " method" 의 숨겨 진 도 메 인 을 가지 고 다 니 면 됩 니 다. 값 은 DELETE 또는 PUT 입 니 다.
2. user. jsp 에서 REST 스타일 의 CRUD 요청 작성
Title
3. 제어 층 작성
package cn.et.demo1;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletResponse;
/**
* ( )
* (GET( ) | POST ( )| PUT( ) |DELETE( )
* rest
*/
@Controller
public class RestController {
/**
*
* @param name
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/user",method=RequestMethod.POST)
public String addUser(String name,HttpServletResponse response) throws Exception{
response.getWriter().println(name+" !!");
return null;
}
/**
*
* @param userId
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/user/{id}",method=RequestMethod.DELETE)
public String deleteUser(@PathVariable(value="id") String userId,HttpServletResponse response) throws Exception{
response.getWriter().println(userId+" !!");
return null;
}
/**
*
* @param userId
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/user/{id}",method=RequestMethod.PUT)
public String updateUser(@PathVariable(value="id") String userId,HttpServletResponse response) throws Exception{
response.getWriter().println(userId+" !!");
return null;
}
/**
*
* @param userId
* @return
*/
@RequestMapping(value="/user/{id}",method=RequestMethod.GET)
public String getUser(@PathVariable(value="id") String userId, HttpServletResponse response)throws Exception{
response.getWriter().println(userId+" !!");
return null;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.