단일 페이지 Spring MVC
애플리케이션을 작성 중 입니다.
요구 사항 :
사용 사례 예 :
URL "my.site.com/"을 입력하면 내 사이트 스켈레톤 만로드되고 User
. ( User
내 모델의 개체입니다).
URL "my.site.com/users/John"을 입력하면 "John"에 대한 데이터가 표시되기를 원합니다 ( 페이지를 다시로드 할 수 있음 ).
textbox
, 그리고 히트 버튼을 Go!
, 나는 사용자 데이터를 표시하는 페이지의 일부가되고 싶지 갱신 및 하지 전체 페이지를 다시로드 .디자인 질문 :
나는 1) 및 2) 새 ModelAndView
객체 를 반환해야하고 3) 사용할 수 있다는 것을 이해합니다 AJAX
. 이것은 아마도 세 가지 컨트롤러 메서드가 필요하다는 것을 의미합니다.
내가 모르는 것은 MVC와 AJAX 컨트롤러 메서드 사이의 충돌 URL 을 피하는 방법과 AJAX
컨트롤러 메서드가 아닌 Javascript에서 실제로 컨트롤러 메서드 를 호출 ModelAndView
하는 방법입니다.
코드 예 :
내가 필요한 것은 물론 이것이 충돌하는 URL을 유발한다는 점을 제외하면 이와 같은 것입니다 .
/*
* Default view.
*/
@RequestMapping(value = "/users")
public ModelAndView displayDefault() {
return new ModelAndView("userdisplay_default.jsp");
}
/*
* View for a specific user.
*/
@RequestMapping(value = "/users/{username}")
public ModelAndView displaySpecific(@PathVariable(value = "username") String username) {
User user = new User(username);
return new ModelAndView("userdisplay_specific.jsp", "Specific User", user);
}
/*
* AJAX controller method.
*/
@RequestMapping(value = "/users/{username}", produces = "application/json", method = RequestMethod.GET)
public @ResponseBody User getTime(@PathVariable(value = "username") String username) {
return new User(username);
}
Javascript에서 다음 POJO
과 같이 가져옵니다 .
// obtain user
var user = $('#user_input').val(); // this is a text input
$.getJSON("/users/"+user, function() {
//...
});
참고 : 이를 달성하려는 내 방식은 잘못 될 수 있습니다. // 불충분하고 // 최적이 아니므로이를 수행하는 방법에 대한 다른 방법도 자유롭게 제안 해주세요.
필요한 작업을 어떻게 수행해야하는지 코드 예제와 함께 설명해 주시겠습니까?
컨트롤러에 대해 다른 방법을 만들 수 있습니다. 예 : @RequestMapping(value = "/users")
and @RequestMapping(value = "/users/{username}")
-GET 메소드가 있습니다. 그러나 AJAX의 경우 POST로 컨트롤러를 만듭니다.
@RequestMapping(value = "/users/{username}", produces = "application/json", method = RequestMethod.POST)
그리고 JS는 다음과 같습니다.
// Send the request
$.post("/users/"+user, data, function(response) {
// Do something with the request
});
다른 조언 (가능한 경우)-나머지를 위해 url의 이름을 변경하십시오. 예 api
를 들어 URL 에 단어 를 추가 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다