原创

spring数据回写

温馨提示:
本文最后更新于 2022年06月18日,已超过 8 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

springMVC数据回写的几种方式

springMVC的数据回写方式

  1. 页面跳转

    1. 直接return字符串,方法接收字符串
    2. 使用ModelAndView对象进行返回
  2. 直接回写数据(将数据写到页面)

    1. 直接返回字符串
    2. 返回集合或者数组

使用返回和视图解析器直接进行页面的跳转

  • 如果是要进行转发的话,在字符串前面加上forword
  • 如果是进行重定向的话就在字符串前面加上redirect

使用ModelAndView方式进行页面的跳转

  • 获取ModelAndView对象,调用set方法,此时可以设置资源页面,同时也可以设置值,将值存储在域对象中,直接显示在页面上
@Controller
public class UserController {

    @RequestMapping("/quick")
    public ModelAndView save() {
        ModelAndView modelAndView = new ModelAndView();
        //设置转发的页面名字
        modelAndView.setViewName("success.jsp");
        //设置转发的资源,将资源存储在域对象中
        //可以存储map也可以存储其他数据类型
        modelAndView.addObject("name","jack");
        System.out.println("Controller save runing....");
        return modelAndView;
    }
}

当然了创建ModelAndView对象也可以让spring帮我们完成,可以直接将该方法作为参数传入形参,spring就会帮我们创建对应的对象,我们直接进行使用就可以了

通过HttpServlet在域对象中存入数据

 @RequestMapping("/quick2")
    public void save2(HttpServletRequest request) {
        request.setAttribute("name","jack");
        //可以使用servlet中的set方法将数据存在域对象中,将方法传入形参中spring将为我们创建对应的对象
        System.out.println("Controller save runing....");
    }
}

回写数据

Web基础阶段,客户端访问服务器端,如果想直接回写字符串作为响应体返回的话,只需要使用response.getWriter().print(“hello world”) 即可,那么在Controller中想直接回写字符串该怎样呢?

  1. 同样可以使用上述的方法进行回写,但是对象依然是需要spring帮我们进行创建,创建方法和上面的一样
  @RequestMapping("/quick3")
    public void save3(HttpServletResponse response) throws IOException {
        response.getWriter().println("jack");
        //可以使用servlet中的set方法将数据存在域对象中,将方法传入形参中spring将为我们创建对应的对象
        System.out.println("Controller save runing....");
    }
}
  1. 将需要回写的字符串直接返回,但此时需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转是直接在http响应体中返回。

回写json格式的数据

  1. 直接手动拼接
  2. 通过json格式转换工具Jackson实现,使用ObjectMapping提供的writeValueAsString(),就能实现对象转Jason
  3. 通过SpringMVC帮助我们对对象或集合进行json字符串的转换并回写,为处理器适配器配置消息转换参数,指定使用jackson进行对象或集合的转换,因此需要在spring-mvc.xml中进行如下配置:
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
        <property name="messageConverters"> 
            <list><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
            </list>
    </property>
    </bean>
  1. 在方法上添加@ResponseBody就可以返回json格式的字符串,但是这样配置比较麻烦,配置的代码比较多,因此,我们可以使用mvc的注解驱动代替上述配置
<!--mvc的注解驱动--> 
<mvc:annotation-driven/>

在 SpringMVC 的各个组件中,处理器映射器处理器适配器视图解析器称为 SpringMVC 的三大组件。

使用<mvc:annotation-driven>自动加载 RequestMappingHandlerMapping(处理映射器)和

RequestMappingHandlerAdapter( 处 理 适 配 器 ),可用在Spring-xml.xml配置文件中使用

<mvc:annotation-driven>替代注解处理器和适配器的配置。

同时使用<mvc:annotation-driven>默认底层就会集成jackson进行对象或集合的json格式字符串的转换。

正文到此结束