복붙노트

[SPRING] GET 매개 변수에 대한 SpringMVC RequestMapping

SPRING

GET 매개 변수에 대한 SpringMVC RequestMapping

URL에서 GET 매개 변수를 처리하도록 RequestMapping을 만드는 방법은 무엇입니까? 예를 들면 나는이 URL을 가지고있다.

http://localhost:8080/userGrid?_search=false&nd=1351972571018&rows=10&page=1&sidx=id&sord=desc

(jqGrid에서)

내 RequestMapping은 어떻게 생겼을 까? HTTP 요청을 사용하여 매개 변수를 가져 오려고합니다.

이것을 시도 :

@RequestMapping("/userGrid")
    public @ResponseBody GridModel getUsersForGrid(HttpServletRequest request)

하지만 작동하지 않습니다.

해결법

  1. ==============================

    1.메소드 인수에 @RequestParam을 사용하면 Spring이이 메소드를 바인드 할 수 있고 @ RequestMapping.params 배열을 사용하여 Spring에서 사용할 메소드를 줄일 수도 있습니다. 샘플 코드 :

    메소드 인수에 @RequestParam을 사용하면 Spring이이 메소드를 바인드 할 수 있고 @ RequestMapping.params 배열을 사용하여 Spring에서 사용할 메소드를 줄일 수도 있습니다. 샘플 코드 :

    @RequestMapping("/userGrid", 
    params = {"_search", "nd", "rows", "page", "sidx", "sort"})
    public @ResponseBody GridModel getUsersForGrid(
    @RequestParam(value = "_search") String search, 
    @RequestParam(value = "nd") int nd, 
    @RequestParam(value = "rows") int rows, 
    @RequestParam(value = "page") int page, 
    @RequestParam(value = "sidx") int sidx, 
    @RequestParam(value = "sort") Sort sort) {
    // Stuff here
    }
    

    이 방법으로 Spring은 모든 파라미터가 존재하면 null 검사와 관련 물건으로부터 당신을 저장하면서이 방법을 수행 할 것입니다.

  2. ==============================

    2.@RequestMapping을 다음과 같이 추가 할 수 있습니다.

    @RequestMapping을 다음과 같이 추가 할 수 있습니다.

    @RequestMapping("/userGrid")
    public @ResponseBody GridModel getUsersForGrid(
       @RequestParam("_search") String search,
       @RequestParam String nd,
       @RequestParam int rows,
       @RequestParam int page,
       @RequestParam String sidx) 
       @RequestParam String sord) {
    
  3. ==============================

    3.이것은 요청으로부터 모든 매개 변수를 가져옵니다. 디버깅 목적으로 만 :

    이것은 요청으로부터 모든 매개 변수를 가져옵니다. 디버깅 목적으로 만 :

    @RequestMapping (value = "/promote", method = {RequestMethod.POST, RequestMethod.GET})
    public ModelAndView renderPromotePage (HttpServletRequest request) {
        Map<String, String[]> parameters = request.getParameterMap();
    
        for(String key : parameters.keySet()) {
            System.out.println(key);
            String[] vals = parameters.get(key);
            for(String val : vals)
                System.out.println(" -> " + val);
        }
    
        ModelAndView mv = new ModelAndView();
        mv.setViewName("test");
        return mv;
    }
    
  4. ==============================

    4.uri를 변경하려는 경우 PathVariable을 사용할 수도 있습니다.

    uri를 변경하려는 경우 PathVariable을 사용할 수도 있습니다.

    @RequestMapping(value="/mapping/foo/{foo}/{bar}", method=RequestMethod.GET)
    public String process(@PathVariable String foo,@PathVariable String bar) {
        //Perform logic with foo and bar
    }
    

    NB : 첫 번째 foo는 경로의 일부이고 두 번째 foo는 PathVariable입니다.

  5. ==============================

    5.이 경우 내 작품 :

    이 경우 내 작품 :

    @RequestMapping(value = "/savedata",
                params = {"textArea", "localKey", "localFile"})
        @ResponseBody
        public void saveData(@RequestParam(value = "textArea") String textArea,
                             @RequestParam(value = "localKey") String localKey,
                             @RequestParam(value = "localFile") String localFile) {
    }
    
  6. ==============================

    6.@RequestMapping에 일종의 템플릿을 작성해야합니다.

    @RequestMapping에 일종의 템플릿을 작성해야합니다.

    http://localhost:8080/userGrid?_search=${search}&nd=${nd}&rows=${rows}&page=${page}&sidx=${sidx}&sord=${sord}
    

    이제 다음과 같이 비즈니스 메소드를 정의하십시오.

    @RequestMapping("/userGrid?_search=${search}&nd=${nd}&rows=${rows}&page=${page}&sidx=${sidx}&sord=${sord}")
    public @ResponseBody GridModel getUsersForGrid(
    @RequestParam(value = "search") String search, 
    @RequestParam(value = "nd") int nd, 
    @RequestParam(value = "rows") int rows, 
    @RequestParam(value = "page") int page, 
    @RequestParam(value = "sidx") int sidx, 
    @RequestParam(value = "sort") Sort sort) {
    ...............
    }
    

    따라서 프레임 워크는 $ {foo}를 적절한 @RequestParam에 매핑합니다.

    sort는 asc 또는 desc 일 수 있으므로 enum으로 정의 할 수 있습니다.

    public enum Sort {
        asc, desc
    }
    

    Spring은 열거 형을 매우 잘 처리합니다.

  7. from https://stackoverflow.com/questions/13213061/springmvc-requestmapping-for-get-parameters by cc-by-sa and MIT license