SpringMVC中Controller中方法返回值类型

1、返回ModelAndView

要求前端使用JSP页面,并使用JSTL标签,才可以匹配解析后端返回的数据

后端代码

package com.hxy.controller;


import com.hxy.pojo.Order;
import com.hxy.pojo.Product;
import com.hxy.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

@Controller
public class ProductController {

    @Autowired
    private ProductService productService;

    @RequestMapping(value = "/product/productList.action")
    public ModelAndView itemList(){
        //获取数据列表
        List list = new ArrayList();
        list= productService.getProductList();
        //定义返回对象
        ModelAndView modelAndView = new ModelAndView();
        //设置返回数据
        modelAndView.addObject("productList",list);
        //设置返回页面
        modelAndView.setViewName("/static/productList.jsp");
        return modelAndView;
    }

}

前端代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>




查询商品列表

 
查询条件:
商品列表:
商品名称 商品价格 生产日期 商品描述 操作
${item.name} ${item.price} ${item.detail } 修改

2、返回void,即没有返回值

(1)使用request转发页面

                             //要去的页面,并将request与Response传递过去 
request.getRequestDispatcher( "/static/productList.jsp" ).forward( request,response );

(2)使用response页面重定向

//直接写出去哪里
response.sendRedirect( "/static/productList.jsp" );

(3)可以通过Response只是响应结果,比如响应返回JSON数据

3、返回字符串

(1)逻辑视图名

  //返回void
    @RequestMapping(value = "/product/productList4.action")
    public void itemList1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      //request.getRequestDispatcher("/static/index.html").forward(request,response);
        response.sendRedirect( "/static/index.html" );
    }    

    @RequestMapping(value = "/product/productList5.action")
    public String itemList2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        return "/product/productList4.action";
    }

(2)redirect重定向


    return "redirect:/productList4.action";  //重定向

(3)forward转发

return "forward:product/productList4.action";   //转发

4、返回Model

要求前端使用JSP页面,并使用JSTL标签,才可以匹配解析后端返回的数据

 @RequestMapping(value = "/product/productList6.action")
    public String itemList3(HttpServletRequest request,
                            HttpServletResponse response,
                            Model model) throws ServletException, IOException {

        List list = new ArrayList();
        list= productService.getProductList();
        model.addAttribute("productList",list);
        return "/static/productList.jsp";
    }

总结

ModeAndView:无敌的,带着参数,返回视图的路径,

String:返回视图路径,model带数据,官方推荐,解耦:将视图和数据分开  建议使用

Void:ajax请求,只返回数据,不反悔视图路径,使用response对象       异步请求使用

你可能感兴趣的:(SpringMVC项目)