springboot 미니 튜토리얼 005-URL 매핑
19834 단어 SpringBoot
@RequestMapping 등록 URL 맵
Django의 URL 매핑은 프로젝트 urls에 의해 이루어집니다.py의 urlpatterns 설정은 먼저 Django가 요청을 어떻게 처리하는지 설명합니다.
이와 유사하게springboot에도 URL 매핑 관계가 있어야 사용자가 URL 링크에 접근할 때 서로 다른 논리를 실행할 수 있다. 여기서 언급한 논리는 바로 MCV 모드에서 말하는 제어층(C층)이기 때문에 URL의 매핑은 제어층과 큰 관련이 있다.springboot에서 제어층은 직접 주석을 통해 완성된다.일반적인 방법은 다음과 같습니다.
먼저 하나의 간단한 예를 볼 수 있다.
@RestController
@EnableAutoConfiguration
public class HelloController {
@Value("${version}")
private String version;
@Autowired
private StudentProperties student_default;
@Autowired
private StudentTestBean student_test;
@RequestMapping("/student")
private String student(String name, Integer age) {
if (name == null) {
name = student_default.getName();
}
if (age == null) {
age = student_default.getAge();
}
return String.format("Online: %s
name: %s, age: %d
name(Test): %s, age(Test): %d", version, name, age, student_test.getName(), student_test.getAge());
}
}
@RequestMapping을 통해 **/student**를 HelloController의 student 함수에 매핑하면 프로젝트를 실행할 때springboot의 출력 로그를 볼 수 있습니다.
2018-10-30 14:57:08.116 INFO 13692 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/student]}" onto private java.lang.String com.example.useconfigurationproperties.HelloController.student(java.lang.String,java.lang.Integer)
방문 중http://localhost:8080/studentHelloController의 student 함수가 호출됩니다.
@RequestMapping의 method에는 기본값이 없습니다. method를 설정하지 않으면 모든 요청 형식 (RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE) 으로 접근할 수 있습니다.
이런 디자인 방법은 약간 혼란스럽다. Django와 같은 일반적인 시계를 설정하는 것이 편리하지 않아서 Django의 URL 매핑 관계는 비교적 보기 쉽다.springboot의 이런 주해 방식은 비교적 흩어져 있고 때로는 각 Controller가 클릭하여 보아야 한다.물론 약간의 절충 방법도 있다. 바로 Controller류에서 어떤 하위 디렉터리 URL을 상영할 수 있다. 이 Controller류가 하위 URL 아래의 다른 하위 URL, 즉 모듈별로 관리하는 사상을 통일적으로 관리하고 그 안에서 비추면 구체적인 함수에 귀속된다. 이런 효과는 보기에 그렇게 어지럽지 않을 것이다.
예를 들어 다음 코드에 대해 CourseController 클래스는 통일적으로 매핑되었다http://localhost:8080/course내부 함수 매핑은 다음과 같습니다.
@Controller
@RequestMapping("/course")
public class CourseController extends BaseController {
@Autowired
private CourseService courseService;
private Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping("")
public String course(Model model) {
model.addAttribute("ctx", getContextPath() + "/");
return "courses";
}
/**
*
*
* @param page
* @return
*/
@RequestMapping(value = "/queryCourseList", method = RequestMethod.POST)
@ResponseBody
public AjaxObject queryCourse(Page<?> page) {
PageHelper.startPage(page.getPage(), page.getRows());
Map<String,Object> pageParams = new HashMap<String,Object>();
pageParams.put("page", page.getPage());
pageParams.put("rows", page.getRows());
List<Course> courseList = courseService.queryList(pageParams);
PageInfo<Course> pageInfo = new PageInfo<Course>(courseList);
return AjaxObject.ok().put("page", pageInfo);
}
/**
*
*
* @param course
*/
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseBody
public AjaxObject addCourse(@RequestBody Course course) {
courseService.save(course);
return AjaxObject.ok();
}
/**
*
*
* @param course
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ResponseBody
public AjaxObject updateCourse(@RequestBody Course course) {
logger.info(course.getAuthor() + "");
courseService.update(course);
return AjaxObject.ok();
}
/**
*
*
* @param ids
*/
@RequestMapping(value = "/delete", method = RequestMethod.POST)
@ResponseBody
public AjaxObject deleteCourse(@RequestBody Long[] ids) {
courseService.deleteByIds(ids);
return AjaxObject.ok();
}
}
Spring4.3 이후 @RequestMapping(method = RequestMethod.XXX)의 쓰기를 간소화하기 위해 현재의 GetMapping, PotMapping, PutMapping, DeleteMapping, PatchMapping을 포장했다.
@Controller와 @RestController의 차이점
@RestController 주석은 @ResponseBody+@Controller가 합쳐진 작용에 해당합니다.
@RestController를 사용하여 Controller를 주석하기만 하면 Controller의 방법은 jsp 페이지나 html로 돌아갈 수 없습니다. 설정된 보기 해상도인 인터넷 Resource ViewResolver는 작동하지 않습니다. 되돌아오는 내용은 Return의 내용입니다.
지정한 페이지로 돌아가려면 @Controller와 보기 해상도 인터넷 ResourceViewResolver를 함께 사용해야 합니다.JSON, XML, 또는 사용자 정의 미디어타입 내용을 페이지로 되돌려야 한다면, 대응하는 방법에 @ResponseBody 주석을 붙여야 합니다.
@Controller 주석을 사용하면 대응하는 방법에서 보기 해석기는return의 jsp, html 페이지를 분석하고 해당하는 페이지로 이동할 수 있습니다.json 등의 내용을 페이지로 되돌려주려면 @ResponseBody 주석을 추가해야 합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.