Day25 SpringMVC 方法返回值类型***

处理器的返回值介绍

(1)Servlet将结果返回浏览器的方式

  • 请求转发:带数据
  • 重定向:不带数据
  • 异步:json数据发给页面的js,js组织标签显示
    Servlet里面编写响应浏览器的代码都要调用response

(2)springmvc的方法设计了多种返回值类型

  • ModelAndView
  • void
  • String :请求转发,重定向,json数据

处理器的返回值-ModelAndView

(1)ModelAndView 是SpringMVC提供模型视图
(2)作用
设置数据

addObject(key,value)
这个方法相当于request.setattribute,在页面上直接使用${attributeName}取值;

设置页面

setViewName(逻辑视图)
逻辑视图:就是文件的名称
跳转的时候,视图解析器会对内容拼接前缀与后缀

@Controller
public class Demo02ReturnController {
    
    

    @RequestMapping("demo01.action")
    public ModelAndView test01(){
    
    
        Person p1 = new Person(1,"jack","1234");
        Person p2 = new Person(2,"rose","1234");

        List<Person> list = new ArrayList<Person>();
        list.add(p1);
        list.add(p2);

        ModelAndView mv = new ModelAndView();
        mv.addObject("list",list);
        mv.setViewName("demo04_update_person");
        return mv;
    }

处理器的返回值-void

(1)方法返回值类型写上void
此时,参数写上request,response,调用它们带设置参数与请求转发或者重定向。
(2)因为返回值类型为void,没有返回值,所以视图解析器不对内容拼接前缀与后缀
(3)没有体现springmvc的优势

    @RequestMapping("demo02.action")
    public void test02(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        //请求转发
        req.setAttribute("name","请求转发");
        req.getRequestDispatcher("demo05.jsp").forward(req,resp);
    }

处理器的返回值-String

(1)方法返回值类型写上String
方法内返回 页面名称
return语句加一个普通的字符串,其本质就是请求转发
(2)如果携带数据呢?
方法参数写上Model,比ModelAndView 少了View
》Model是SpingMVC提供的一个模型类,该类不需要自己创建对象,系统自动创建。
(3)Model作用
Model可以用来向页面传递参数,其本质就是向request域对象中存数据
(4)后台代码
model.addAttribute(“item”, item);就相当于request.setAttribute(“item”,item);

@RequestMapping("demo03.action")
    public String test03(Model model){
    
    
        //Model 可以设置数据,自动由视图解析器带到页面
        model.addAttribute("data","Hello");
        //逻辑视图,也就是文件名字
        return "success";
    }

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

(1)什么是逻辑视图与物理视图
页面名称叫逻辑视图,不是真正的页面地址
但是可以由视图解析器进行拼接,前缀+逻辑视图+后缀,得到真正的页面地址,即物理视图
前缀和后缀在springmvc.xml配置文件中配置。
(2)返回值可以添加指令
》1:forward 请求转发
forward 指令:物理视图。
》2:redirect 重定向
redirect 指令:物理视图
特点:视图解析器不对指令后的内容拼接前缀与后缀
springmvc会为我们在访问路径上自动添加项目名
即使是重定向指令,springmvc也能帮我们携带数据
(3)指令也可以访问控制器方法
如果该方法所属类上也设置了@RequestMapping()路径,就应该这样写好路径。
return "redirect:/类上路径名/方法上路径名"

    @RequestMapping("demo04.action")
    public String test04(Model model){
    
    
        //Model 可以设置数据,自动由视图解析器带到页面
        model.addAttribute("data","Hello");
        
//        return "forward:WEB-INF/jsp/success.jsp";
//        return "redirect:http://www.baidu.com";//访问外网
//        return "redirect:demo05.jsp";//访问内部
        return "redirect:demo01.action";//访问控制器方法
    }

猜你喜欢

转载自blog.csdn.net/qq_43639081/article/details/109183899