【SSM - SpringMVC篇】方法返回值类型 Servlet与SpringMVC将结果返回浏览器 Spring的modelAndView类型 String类型 Object类型之json处理

Servlet与SpringMVC将结果返回浏览器的不同之处

1)Servlet将结果返回浏览器
转发:带数据
重定向:不带数据
异步:json数据发给页面的js,js组织标签显示
Servlet里面编写响应浏览器的代码都要调用response
2)springmvc的方法设计了多种返回值类型
》ModelAndView
》void
》String :请求转发,重定向,json数据

处理器的返回值-ModelAndView

list是文件名也就是逻辑视图
/jsp/list.jsp是物理视图,
物理视图=前缀+逻辑视图+后缀

@Controller
public class PersonController {
    
    
   @RequestMapping("list.action")
  public ModelAndView listPersons(HttpRequest request){
    
    
      //获取集合
      List<Person> list=Personutil.findAll();
      //转发到页面
   /*    请求转发
   request.setAttribute("list",list);
    request.getDispatcher("list.jsp").forward(req,resp);
    但是没有必要可以使用下面的进行请求转发
    */
      ModelAndView modelAndView=new ModelAndView();
      modelAndView.addObject("list",list);
     /*   <!--定义页面路径的前缀-->
        <property name="prefix" value="/jsp/"/>
        <!--定义页面路径的后缀-->
        <property name="suffix" value=".jsp"/>
        简化后只要写文件名称
        */
      modelAndView.setViewName("list");   //list是文件名也就是逻辑视图
      //   /jsp/list.jsp 物理视图=前缀+逻辑视图+后缀

      return  modelAndView;
      //在页面上进行forEach循环
  }

处理器的返回值-void(一般不用,没有体现springmvc的优势)

  @RequestMapping(path="demo02.action",method = {
    
    RequestMethod.GET,RequestMethod.POST})
    public void test02(HttpServletRequest req, HttpServletResponse resp)throws Exception{
    
    
        //请求转发
        req.setAttribute("name","请求转发");
        req.getRequestDispatcher("demo05.jsp").forward(req,resp);
    }

处理器的返回值-String

方法返回值类型写上String类型方法内就会返回页面名称
其中Model类为SpringMVC自动创建的模型类,不用我们创建
Model可以用来向页面传递参数
Model与ModelAndView相比少了View视图,但是String
类型在方法中返回了页面名称也就是View

 @RequestMapping("success.action")
    public String test(Model model){
    
    
model.addAttribute("data","String类型");
        return  "main";

    }

处理器的返回值-String-转发和重定向

返回值可以添加指令,但是添加指令之后不能使用视图解析器对指令后的内容拼接前缀与后缀

forward指令 请求转发

forward 指令:物理视图(必须自己加上)

 @RequestMapping(path="demo04.action",method = {
    
    RequestMethod.GET,RequestMethod.POST})
    public String test04(Model model){
    
    
        //Model 可以设置数据,自动由视图解析器带到页面
        model.addAttribute("data","wHelloWord");
        return "forward:/WEB-INF/jsp/success.jsp"; 
        //必须自己加上物理视图
        
    }

redirect 重定向

redirect 指令:项目访问路径+物理视图(必须自己加上)

 @RequestMapping(path="demo04.action",method = {
    
    RequestMethod.GET,RequestMethod.POST})
    public String test04(Model model){
    
    
        //Model 可以设置数据,自动由视图解析器带到页面
        model.addAttribute("data","wHelloWord");
        //return "redirect:http://www.baidu.com"; //外网
        //return "redirect:demo05.jsp"; //
        return "redirect:demo01.action"; //
    }

处理器的返回值-Object-json数据处理

javaBean对像与json互转 如阿里巴巴的fastjson

Json一般在ajax请求中使用
pom.xml

 <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.74</version>
      </dependency>
    

JavaBean转json

TestPersonJson


public class TestPersonJson {
    
    
    @Test
    public void test(){
    
    
       Person person=new  Person(1,"jack","12345","bj");
      String json= JSON.toJSONString(person);
      System.out.println(json);
    }
}

运行结果
在这里插入图片描述

JSON转JavaBean

JSON.parseObject()方法

 JSON.parseObject(json,Person.class);
 // json转javaBean,参1,json  参2 类
 @Test
    public void test02(){
    
    
        String json = "{\"id\":1,\"password\":\"1234\",\"name\":\"jack\",\"city\":\"bj\"}";
        Person p = JSON.parseObject(json,Person.class);// json转javaBean,参1,json  参2 类
        System.out.println(p);
    }

运行结果
在这里插入图片描述

返回值Object转Json

pom.xml

依赖 jackson库

 <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.11.3</version>
      </dependency>

@ResponseBody注解加在方法上,SpringMVC可以自动将方法的返回对象转为json,并且发送给页面

 @RequestMapping("list.action")
    public @ResponseBody Object personJson(){
    
    
        //获取集合
        List<Person> list=Personutil.findAll();

        return  list;

    }

收到的参数Json转JavaBean对象

@RequestBody注解加在方法上,SpringMVC可以自动将页面传来的Json转为JavaBean对象


 @RequestMapping(path = "update.action",method = {
    
    RequestMethod.POST,RequestMethod.GET})
    public ModelAndView  test06(@RequestBody  Person person){
    
    
        System.out.println("object:"+person);
       return null;
    }

猜你喜欢

转载自blog.csdn.net/mighty_Jon/article/details/109100188