SSM 프레임 워 크 + RESTful 개발
11482 단어 Java
RESTful 구 조 는 현재 가장 유행 하 는 인터넷 소프트웨어 구조 이다.구조 가 뚜렷 하고 기준 에 부합 되 며 이해 하기 쉽 고 확장 이 편리 하기 때문에 점점 더 많은 사이트 에서 사용 되 고 있다.RESTful (즉 Representational State Transfer 의 줄 임 말) 은 개발 이념 으로 http 에 대한 좋 은 해석 이다.
url 을 규범화 하여 RESTful 형식의 url 로 작성 합 니 다.
REST 가 아 닌 url:http://.../queryItems.action?id=001&type=T01
REST url 스타일:http://..../items/001
특징: url 이 간결 하고 인 자 를 url 을 통 해 서버 에 전송 하여 처리 합 니 다.
RESTful 은 http 의 방법 을 규범화 합 니 다. 삭제, 추가, 업데이트 에 관 계 없 이 사용 하 는 url 이 일치 합 니 다. 삭제 하려 면 http 의 방법 을 delete, put, post 등 으로 설정 해 야 합 니 다.
배경 컨트롤 러 방법: http 방법 을 판단 하고 delete 라면 삭제, post 추가 등 을 수행 합 니 다.
http 의 contentType 을 규범화 하고 요청 할 때 contentType 을 지정 하 며 json 데 이 터 를 json 형식의 type 으로 설정 합 니 다.
SSM 프레임 워 크 + RESTful 개발
SSM 환경 구축
1. 결 과 를 json 데이터 로 되 돌려 주 는 jar 패 키 지 를 항목 에 추가 해 야 합 니 다.
jackson-annotations-2.8.4.jar
jackson-core-2.8.4.jar
jackson-databind-2.8.4.jar
이 3 개의 jar 패 키 지 를 추가 하지 않 으 면 다음 과 같은 출력 오류 가 발생 합 니 다.
java.lang.IllegalArgumentException:No converter found for return value of type。
jackson - 2.9.4. jar 가방 은 상기 3 개의 jar 가방 을 통합 합 니 다.
2. springmvc 전단 컨트롤 러 설정
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc.xml
springmvc
/
메모: RESTful 스타일 의 url 을 구현 하려 면 설정 이 필요 합 니 다: /.또한 정적 자원 을 직접 되 돌려 야 합 니 다. 분석 할 필요 가 없 는 문 제 를 해결 하려 면 springmvc. xml 에 자원 맵 을 추가 해 야 합 니 다.
또는 springmvc. xml 설정 파일 에서 이 명령 을 사용 하여 기본 정적 자원 을 실행 할 수 있 습 니 다.
응용 실례
1. 수요: 상품 정 보 를 조회 하고 json 데 이 터 를 되 돌려 줍 니 다.
mapper 와 service 인터페이스 및 구현 클래스 작성
ItemsMapper.xml
ItemsMapper.java
// id
public Items selectItemsById(intid) throwsException;
ItemsService 인터페이스
/**
* @Description: id
*
* @param id: int , Integer
*/
public ItemsCustom selectItemsById(Integer id) throws Exception;
Items ServiceImpl 인터페이스 추가 실현
@Override
public ItemsCustom selectItemsById(Integer id) throws Exception {
Items items = itemsMapper.selectItemsById(id);
/**
* , Items :ItemsCustom
* , , , ItemsCustom,
*/
ItemsCustom itemsCustom = new ItemsCustom();
// Items ItemsCustom
BeanUtils.copyProperties(items, itemsCustom);
return itemsCustom;
}
2、controller
방법 정의: url 템 플 릿 맵 을 사용 하여 url 맵 을 하고 REST 스타일 의 url 을 사용 하여 상품 정 보 를 조회 하 는 id 를 contrller 에 전송 하여 json 을 출력 할 수 있 습 니 다. @ Response Body 를 사용 하여 자바 대상 을 json 에서 전단 페이지 로 출력 할 수 있 습 니 다.
@Controller
public class TestController {
@Autowired
private ItemsService itemsService;
@RequestMapping("/itemsview/{id}")
public @ResponseBody ItemsCustom findItemsById(@PathVariable("id")Integer id) throws Exception {
ItemsCustom itemsCustom = itemsService.selectItemsById(id);
return itemsCustom;
}
}
"/ itemsview / {id}" 여기 있 는 (id 곶 은 (@ PathVariable ("id") Integer id) id 에 들 어 갑 니 다.
name 필드 를 추가 하 는 등 여러 개의 인자 가 있 으 면: @ RequestMapping ("/ itemsview / {id} / {name}")
(@PathVariable("id")Integer id , @PathVariable ("name") String diffname), return itemsCustom 은 @ Response Body 주 해 를 거 쳐 json 데이터 형식 으로 변 환 됩 니 다.
3. 테스트, 브 라 우 저 입력:
http://localhost:8080/SpringMvcMybatisOrders/itemsview/1
흔히 볼 수 있 는 문제 총화.
데이터 변환
자바 에 서 는 JSON 형식의 jar 패키지 로 데 이 터 를 변환 하지 않 았 기 때문에 외부 jackson 패키지 에 의존 해 야 합 니 다. 그렇지 않 으 면 자바. lang. IllegalArgument Exception 오류 가 발생 할 수 있 습 니 다.
정적 자원 접근 처리
RESTful 구 조 를 사용 한 후 웹. xml 에서 컨트롤 러 가 차단 하 는 요청 을 '/' 로 설정 해 야 합 니 다.그러나 이것 은 css, js, 그림 등 정적 자원 을 차단 하고 404 오류 가 발생 하 는 문제 가 발생 할 수 있 습 니 다.
해결 방안 은 다음 과 같다.
방법 1: 설정
springmvc 설정 파일 에서 이렇게 사용 합 니 다:.
방법 2: springmvc 설정 파일 에서 이 명령 을 사용 하여 기본 정적 자원 을 실행 합 니 다.
질문
spring 버 전과 자바 jdk 버 전이 호 환 되 지 않 을 때 도 자바. lang. IllegalArgument Exception 이상 이 나타 납 니 다.
일반적으로 spring 3. x 버 전 은 JDK 7.0 및 이하 버 전에 대응 하 며, spring 4. x 이후 버 전 을 사용 하여 JDK 8.0 을 사용 할 수 있 습 니 다.
오른쪽 클릭 항목 - > properties - > procject facets: JDK 버 전 을 수정 하려 면 1.8 을 1.7 버 전 으로 낮 춰 야 합 니 다.
SSM 에서 자주 사용 하 는 주석
@RequestMapping
RequestMapping 주 해 를 통 해 서로 다른 프로세서 맵 규칙 을 정의 할 수 있 습 니 다.
@RequestMapping (value = "/ items") 또는 @ RequestMapping ("/ items), value 의 값 은 배열 로 여러 url 을 같은 방법 으로 표시 할 수 있 습 니 다.
협소 화 요청 맵
class 에 @ RequestMapping (url) 을 추가 하여 일반적인 요청 접 두 사 를 지정 합 니 다. 이러한 모든 방법 으로 url 을 요청 하려 면 요청 접두사 로 시작 해 야 합 니 다. 이 방법 을 통 해 url 을 분류 관리 해 야 합 니 다.
요청 방법 한정
1. 한정 GET 방법: @ RequestMapping (method = RequestMethod. GET)
Post 를 통 해 접근 하면 오류 가 발생 합 니 다: HTTP Status 405 - Request method 'POST' not supported.
예 를 들 어: @ RequestMapping (value = "/ editItems", method = RequestMethod. GET)
2. POST 방법 한정: @ RequestMapping (method = RequestMethod. POST)
Post 를 통 해 접근 하면 오류 가 발생 합 니 다: HTTP Status 405 - Request method 'GET' not supported.
3. GET 와 POST 모두 가능 합 니 다: @ RequestMapping (method = {RequestMethod. GET, RequestMethod. POST})
@PathVariable
@PathVariable 은 URL 에 연 결 된 자리 표시 자 를 매 핑 합 니 다. 자리 표시 자 를 가 진 URL 은 Spring 3.0 에 추 가 된 기능 입 니 다. 이 기능 은 SpringMVC 가 REST 목표 로 발전 하 는 과정 에서 이정표 적 의 미 를 가 집 니 다. @ PathVariable 을 통 해 URL 의 자리 표시 자 파 라미 터 를 컨트롤 러 처리 방법 에 연결 할 수 있 습 니 다. URL 의 {xxx} 자리 표시 자 는 @ PathVariable ("xxx") 을 통 해조작 방법의 입 참 에 연결 합 니 다.
/**
* @RequestMapping(value = "user/login/{id}/{name}/{status}") {id}/{name}/{status}
* @PathVariable int id、@PathVariable Stringname、@PathVariableboolean status
* , 。
*/
@RequestMapping(value = "user/login/{id}/{name}/{status}")
@ResponseBody
// @PathVariable
public User login(@PathVariable int id, @PathVariableString name, @PathVariable boolean status) {
// User ajax
returnnew User(id, name, status);
}
@ResponseBody
@Responsebody 설명 은 이 방법의 반환 결 과 를 HTTP 응답 본문 (Responsebody) 에 직접 기록 하 는 것 을 나타 내 며, 일반적으로 비동기 로 데 이 터 를 가 져 올 때 사용 하 며, @ RequestMapping 을 사용 한 후 반환 값 은 보통 점프 경로 로 해석 되 며, @ Responsebody 를 더 한 후 되 돌아 오 는 결 과 는 점프 경로 로 해석 되 지 않 고 HTTP 응답 본문 에 직접 기록 된다.
역할: 이 주 해 는 Controller 의 방법 을 되 돌려 주 는 대상 으로, 적절 한 HttpMessageConverter 를 통 해 지 정 된 형식 으로 변환 한 후 Response 대상 의 body 데이터 영역 에 기록 합 니 다.
사용 시기: 돌아 오 는 데 이 터 는 html 태그 의 페이지 가 아니 라 다른 형식의 데이터 일 때 (예 를 들 어 json, xml 등) 사용 합 니 다.
@RequestBody
@RequestBody 주 해 는 HTTP 요청 본문 을 삽입 하 는 방법 으로, 적합 한 HttpMessageConverter 를 사용 하여 요청 체 를 대상 에 기록 합 니 다.
역할: 1) 이 주 해 는 Request 가 요청 한 body 부분 데 이 터 를 읽 는 데 사 용 됩 니 다. 시스템 기본 설정 의 HttpMessageConverter 를 사용 하여 분석 한 다음 에 해당 하 는 데 이 터 를 되 돌 릴 대상 에 연결 합 니 다.
2) HttpMessageConverter 가 되 돌아 오 는 대상 데 이 터 를 controller 의 방법 에 대한 매개 변수 에 연결 합 니 다.
사용 시기:
A), GET, POST 방식 으로 제시 할 때 requestheader Content - Type 의 값 에 따라 판단 합 니 다.
application / x - www - form - urlencoded, 선택 할 수 있 습 니 다 (즉, 필요 하지 않 습 니 다. 이러한 상황 의 데이터 @ RequestParam, @ ModelAttribute 도 처리 할 수 있 습 니 다. 물론 @ RequestBody 도 처리 할 수 있 습 니 다).
multipart / form - data, 처리 할 수 없습니다 (즉, @ RequestBody 를 사용 하면 이 형식의 데 이 터 를 처리 할 수 없습니다).
다른 형식 은 반드시 (다른 형식 은 application / json, application / xml 등 을 포함 합 니 다. 이 형식의 데 이 터 는 @ RequestBody 로 처리 해 야 합 니 다).
B) 、 PUT 방식 으로 제출 할 때 requestheader Content - Type 의 값 에 따라 판단 합 니 다.
application / x - www - form - urlencoded, 필수; multipart / form - data, 처리 할 수 없 음; 기타 형식, 필수;
설명: request 의 body 부분의 데이터 인 코딩 형식 은 header 부분의 Content - Type 에서 지정 합 니 다.
@RequestMapping(value = "user/login")
@ResponseBody
// ajax(datas) User
public User login(@RequestBody User user){
// , user HTTP
return user;
}
@RequestParam
@ RequestParam 을 사용 하면 간단 한 형식의 바 인 딩 을 처리 하 는 데 사 용 됩 니 다. 페이지 에서 제출 한 매개 변수의 이름과 일치 하지 않 을 때 이 설명 을 사용 하 십시오.
value: 매개 변수 이름, 즉 참 여 를 요청 하 는 매개 변수 이름 입 니 다. 예 를 들 어 value = "item id" 는 요청 한 매개 변수 구역 의 이름 이 item id 인 매개 변수의 값 을 입력 합 니 다.
required: 필요 한 지, 기본 값 은 true 입 니 다. 요청 에 해당 하 는 인자 가 있어 야 한 다 는 뜻 입 니 다. 그렇지 않 으 면 TTP Status 400 - Required Integer parameter 'XXXX' is not present.
defaultValue: 기본 값 은 요청 에 같은 이름 의 인자 가 없 을 때 기본 값 을 표시 합 니 다.
//
@RequestMapping("/editItems")
public ModelAndView editItems(@RequestParam(value = "id", required = true) Integer item_id) throws Exception {
}
형 삼 이름 은 item id 이지 만 여기 서 value = "id" 를 사용 하여 요청 한 매개 변수 이름 을 id 로 제한 하기 때문에 페이지 전달 매개 변수 이름 은 id 여야 합 니 다.
메모: 요청 한 매개 변수 에 id 가 없 으 면 이상 이 발생 합 니 다. HTTP Status 500 - RequiredInteger parameter 'item id' is not present. required = true 를 통 해 id 매개 변 수 를 필수 전달 으로 제한 합 니 다. 전달 하지 않 으 면 400 오 류 를 보고 합 니 다. defaultvalue 를 사용 하여 기본 값 을 설정 할 수 있 습 니 다. required = true 를 사용 하 더 라 도 id 매개 변수 값 을 전달 하지 않 을 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.