spring mvc response data

1. Page Jump

  • Forward, if there is a view resolver, write the full path /pages/success.jsp
@RequestMapping("/save4")
public String save4(HttpServletRequest req) {
    
    
    req.setAttribute("key", "value 4");
    return "forward:/pages/success.jsp";
}
  • Redirect
@RequestMapping(value = "/redirect")
public String testRedirect() {
    
    
    return "redirect:/pages/success.jsp";
}
  1. Return ModelAndView object
    /**
     * 页面跳转之
     * @return 返回视图模型对象
     */
    @RequestMapping(value = "/save1")
    public ModelAndView save1() {
    
    
        System.out.println("save running..");

        ModelAndView modelAndView = new ModelAndView();
        // 视图对象用来展示数据  跳转到success页面
        modelAndView.setViewName("success");

        // 模型对象用来封装对象
        modelAndView.addObject("key", "i am value");

        return modelAndView;
    }
  1. ModelAndView as a parameter, springmvc framework automatically injects
    /**
     * model and view 作为参数, 返回ModelAndView
     * @param modelAndView
     * @return
     */
    @RequestMapping("/save2")
    public ModelAndView save2(ModelAndView modelAndView) {
    
    
        modelAndView.setViewName("success");
        modelAndView.addObject("key", "i am value 1");
        return modelAndView;
    }
  1. model as a formal parameter
    /**
     * model作为参数 返回视图可
     * @param model
     * @return
     */
    @RequestMapping("/save3")
    public String save3(Model model) {
    
    
        model.addAttribute("key", "i am value 3");
        return "success";
    }

2. Write back data @ResponseBody annotation

@ResponseBody注解简单介绍,用来返回字符串,对象。

1. @ResponseBody 告知spring mvc框架,该方法,不进行视图跳转,直接进行视图响应

2. 回写json,Jackson,(jackson-core, jackson-databind, jackson-annotations)

3. 回写对象,或者集合, 封装对象或者转换json的步骤,需要繁琐的配置。RequestMappingHandlerAdapter注入集合。。
       
4. 使用<mvc:annotation-driven/>自动集成转换json

  • Write back string
    @RequestMapping("/save5")
    @ResponseBody // 告知spring mvc框架 回写字符串,而不是视图跳转
    public String save5() {
    
    
        return "hello world !";
    }
  • Return json string, use Jackson, import pom
    @RequestMapping("/save6")
    @ResponseBody
    public String save6() {
    
    

        User user = new User();
        user.setName("jack");
        user.setAge(18);

        ObjectMapper objectMapper = new ObjectMapper();
        String str = null;
        try {
    
    
            str = objectMapper.writeValueAsString(user);
        } catch (JsonProcessingException e) {
    
    
            e.printStackTrace();
        }
        return str;
    }
  • Complex configuration through mvc, or add annotation drive
    /**
     * 返回用户对象
     * @return mvc框架通过配置帮你转为json格式 / mvc注解驱动
     */
    @RequestMapping(value = "/save7")
    @ResponseBody
    public User save7() {
    
    
        User user = new User();
        user.setName("bitqian");
        user.setAge(19);

        return user;
    }
  • Processor mapper injection into Jackson
   <!-- 配置处理器映射器 用于json等的转换-->
   <bean id="requestMappingHandlerAdapter"
         class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
           <property name="messageConverters">
                <list>
                     <!-- 可配置 多个 消息转换器-->
                     <!-- 配置Jackson转换器-->
                     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
                </list>
           </property>
   </bean>
  • Or better annotation driven instead of above
<mvc:annotation-driven/>

Guess you like

Origin blog.csdn.net/qq_44783283/article/details/108310435