SSM转发与重定向(考虑数据共享)

SSM转发与重定向(考虑数据共享)

1.mvc可以使用servlet API来实现重定向和转发(好处可以操作request带来的数据实现数据共享)

@RequestMapping("/ServletAPI3")
public void test3(HttpServletRequest req, HttpServletResponse rep) throws IOException, ServletException {
    req.setAttribute("msg","YEAH");
    req.getRequestDispatcher("/target").forward(req,rep);
    return;
}
@RequestMapping("/target")
public String test4(Model model)  {
    return "hello";
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>controller</title>
</head>
<body>
${msg}
</body>
</html>

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sbh0QYzg-1645347122215)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220220165017612.png)]

2.在不使用API的情况下,其实就是路径问题,故要注意视图解析器是否应该存在,如果有了视图解析器就不能直接写controller请求的路径。(不可以操作request带来的数据实现数据共享)

​ 1.重定向

​ a.redirect:/t1 解析器无影响

​ b.redirect:t1.do 解析器无影响

​ 2.转发

​ a."XXXX" 解析器有影响

​ b.forward:/index.jsp 解析器有影响

   	@RequestMapping("/t1")
    public String control(Model model){
        model.addAttribute("msg","AnnotationController");
        return "hello";
    }
	@RequestMapping("/t2")
    public String selectController(Model model){
        List<Books> books = booksMapper.queryAllBook();
        model.addAttribute("msg",books);
        return "redirect:/t1";
    }

    @RequestMapping("/t3")
    public String selectController1(Model model){
        List<Books> books = booksMapper.queryAllBook();
        model.addAttribute("msg",books);
//        return "t1";  需要注释掉视图解析器
        return "forward:/t1";
    }

    @RequestMapping("/t4")
    public String selectController2(Model model){
        List<Books> books = booksMapper.queryAllBook();
        model.addAttribute("msg",books);
        return "redirect:t1.do";
    }

    @RequestMapping("/search")
    public String searchController(Model model){
        List<Books> books = booksMapper.queryAllBook();
        model.addAttribute("msg",books);
        return "redirect:/t1";
    }

写在最后:
Session实现数据共享也可以~~

============= 分割线=========================

1.传输数据方法总结
Model对象 整合了request
ModelandView
HttpRequest

2.解析器就是加了“前缀和后缀”这样可以定位到文件位置
在写
1.转发:
return “Controller请求路径”
2.重定向
return “redirect:/Controller请求路径”
不需要考虑
servlet会把context的前后截断找绝对路径(仅限在Controller实现转发和重定向时使用)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值