SpringMVC(3): 반환값 유형과 json 상호작용

18516 단어 SSM
반환 값 형식과 json 상호작용
문서 목록
  • 반환값 형식과 json 상호작용
  • 1. 컨트롤러 방법의 반환값 유형
  • 2. springmvc의 전송과 방향 바꾸기
  • 3. json 데이터 수신 및 json 데이터 반환
  • 1. 컨트롤러 방법의 반환값 유형
  • String
  • void
  • ModelAndView 데모 및 설명 코드
  • package com.zmysna.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.View;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Map;
    
    @Controller
    public class MethodReturnController {
    
        /**
         * 1.         String
         *   : controller                 ,                
         */
        @RequestMapping("returnMapping")
        public String returnString() {
            System.out.println("     ");
            return "success";
        }
    
        /**
         * 2.         void
         *   controller           request   response ,   request   response      :
         */
        @RequestMapping("returnVoid")
        public void returnVoid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          //  
          request.getRequestDispatcher("/pages/success.jsp").forward(request,response);
    
            //   
            response.sendRedirect("/pages/success.jsp");
        }
    
        /**
         *   model modelMap  ExtendedModelMap。  request     。
         */
        @RequestMapping("model")
        public String modelTest(Model model, ModelMap modelMap) {
            model.addAttribute("model", "modelValue");
            modelMap.addAttribute("modelMap", "modelMapValue");
            return "success";
        }
    
        /**
         * 3.         ModelAndView
         * ModelAndView   SpringMVC           ,            
         */
        @RequestMapping("mv")
        public ModelAndView mv() {
            ModelAndView mv = new ModelAndView();
            // request      
            mv.addObject("mv","mv");
            //       
            mv.setViewName("success");
            return mv;
        }
    }
    

    보기 인터페이스 success.jsp
    
    
    
        success
    
    
    
    ${model}
    ${modelMap}
    ${mv}
    
    
    

    2.springmvc의 전송과 리셋
    컨트롤러가 되돌아와서 String 되돌아오는 값을 제공할 때 기본적으로 전송을 요청하고 되돌아오는 값은 논리적인 보기 이름으로 보기 해상도를 통해 실제 보기로 해석됩니다.forward를 사용한다면 경로 이름은 실제 보기 이름이어야 합니다.redirect를 사용하면 경로 이름이 실제 보기 이름과 같은 방향을 바꿀 수 있습니다
    @Controller
    public class ForwardAndRedirectController {
        @RequestMapping("forward")
        public String forwardTest(){
            System.out.println("  ");
            return "forward:/pages/success.jsp";
        }
    
        @RequestMapping("redirect")
        public String RedirectTest() {
            System.out.println("   ");
            return "redirect:/pages/success.jsp";
        }
    }
    

    3. json 데이터를 수신하고 json 데이터를 되돌려줍니다
  • @RequestBody 역할: 프로세서 방법 참조에 사용하여 요청한 json 형식의 데이터를 자바 대상으로 변환합니다.
  • @ResponseBody 역할: 프로세서 방법의 반환값에 사용하거나 방법에 사용합니다.응답하는 자바 대상을 json 형식의 데이터로 변환합니다.

  • springmvc는 기본적으로 HttpMessageConverter 메시지 변환기를 사용하여 json 형식의 데이터를 변환합니다.잭슨 의존 패키지 지원에 가입해야 합니다.마ven을 사용하여 의존 가져오기
    <dependency>
    	<groupId>com.fasterxml.jackson.coregroupId>
    	<artifactId>jackson-coreartifactId>
     	<version>2.9.0version>
    dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.coregroupId>
    	<artifactId>jackson-databindartifactId>
    	<version>2.9.0version>
    dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.coregroupId>
    	<artifactId>jackson-annotationsartifactId>
    	<version>2.9.0version>
    dependency>
    
  • 전단 발송 요청, 매개 변수는 json 데이터
  • 
    
    
        success
    
    
    ${model}
    ${modelMap}
    ${mv}
    

    ajaxPost

    $(function () { $("#ajaxPost").click(function () { $.post({ // url: "/responseBodyJson", // ajax data: '{"id":100,"name":"jack","money":9.9}', // dataType: "json", // contentType: "application/json;charset=utf-8", // json success: function (jsn) { alert("jsn=" + jsn + "; jsn.id=" + jsn.id + ";") jsn.name = "+jsn.name+"; jsn.money = "+jsn.money)"; } }); }); });
  • 백엔드에서 json 데이터를 받고 @RequestBody로 User 대상으로 봉인하고 @ResponseBody로 User 대상을 json 문자열로 바꾸어 되돌려줍니다.
  • @Controller
    public class JsonController {
        @RequestMapping(value = "responseBodyJson")
        @ResponseBody
        public User body(@RequestBody User user) {
            System.out.println(user);
            return user;
        }
    }
    

    좋은 웹페이지 즐겨찾기