/**
 * 传递参数的四种方式:
 *      1.使用Model方式(采用!!!)
 *   2.通用ModelAndView方式
 *   3.HttpServletRequest方式(不建议使用)
 *   4.通过返回值传参(不建议使用)
 * 跳转方式:  1.重定向        2.请求转发
 * @author 郑清
 */
@Controller
public class Demo{
    /*
     * 1.使用Model方式(采用!!!)
     */
    @RequestMapping("/data1")
    public String demo1(Model model){
        model.addAttribute("data","数据:李四");//设置数据到前台
        User u = new User();
        u.setUsername("张三");
        //添加模型数据,key的值为对象的类型首字母小写   ex:User-->user
        model.addAttribute(u);
        return "test.jsp";
    }
    /*
     * 2.通用ModelAndView方式
     */
    @RequestMapping("/data2")
    public ModelAndView demo2(){
        ModelAndView mav = new ModelAndView();//模型和视图对象
        mav.addObject("data","数据:张三");//设置数据到前台
        User u = new User();
        u.setUsername("李四");
        //添加模型数据,key的值为对象的类型首字母小写   ex:User-->user
        mav.addObject(u);
        //添加跳转的路径
        mav.setViewName("/test.jsp");
        return mav;
    }
    /*
     * 3.HttpServletRequest方式(不建议使用)
     */
    @RequestMapping("/data3")
    public void demo3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
        request.setAttribute("data", "数据:hello");
        request.getRequestDispatcher("test.jsp").forward(request, response);
    }
    /*
     * 4.通过返回值传参(不建议使用):
     * SpringMVC会自动创建一个ModelAndView对象,并且调用添加模型 mav.addObject("user", user);
     * 并且访问路径就是视图的名称 /data4  mav.setViewName("/data4");
     * 注意:需配置视图解析器解决:ViewResolver
     */
    @RequestMapping("/data4")
    public User demo4(){
        User u = new User();
        u.setUsername("王五");
        return u;
    }
    /*
     * 请求转发(forward):
     * 上面4个案例都是转发,转发的值都是放到request请求作用域,下一个页面可以取出
     * Url地址不会改变
     */
    @RequestMapping("/data5")
    public String demo5(Model model,HttpSession session){
        model.addAttribute("data", "数据:使用model传递");//可以取出数据
        
        User u = new User();
        u.setUsername("张三");
        model.addAttribute(u);
        
        session.setAttribute("s", u);//可以取出数据
        
        //return "/test.jsp";//返回路径
        return "forward:/test.jsp";//-->相当于手动指定了跳转的路径
    }
    /*
     * 重定向(redirect):
     * 重定向就是发出一个全新的请求,
     * 如果把值放到request请求,下一个页面不能取出
     * 如果把值放到session会话请求,下一个页面可以取出
     * url地址会改变
     */
    @RequestMapping("/data6")
    public String demo6(Model model,HttpSession session){
//        model.addAttribute("data","张三");//不可以取出数据
        session.setAttribute("s", "张三session");//可以取出数据
        return "redirect:/test.jsp";
    }
}

版权声明:本文为CSDN博主「郑清」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38225558/article/details/83277690

Last modification:April 22, 2022
如果觉得我的文章对你有用,请随意赞赏