• spring controller中默认转发、forward转发、redirect转发之间的区别


    https://www.cnblogs.com/d-i-p/p/11001806.html

    1. 默认转发
    @RequestMapping("/123")
    	public String test(HttpSession session) {
    		System.out.println("123");
    		return "456";
    }
    

    服务器在得到/123的请求后调用test方法,输出123然后寻找456.jsp(这里已经配置了视图,全路径为/WEB-INF/jsp/456.jsp)文件

    1. forward转发
    @RequestMapping("/123")
    	public String test(HttpSession session) {
    		System.out.println("123");
    		return "forward:456";
    }
    
    @RequestMapping("/456")
    	public String test1(HttpSession session) {
    		System.out.println("456");
    		return "456";
    }
    

    服务器得到/123的请求后调用test方法,输出123,但是与默认转发不同的是,forward转发会继续寻找/456的解析而不是寻找456.jsp文件,
    如果test1方法不存在则会报404的错误,即使456.jsp文件存在

    1. redirect转发
    @RequestMapping("/123")
    	public String test(HttpSession session, HttpServletRequest hr) {
    		System.out.println("123");
    		hr.setAttribute("test", "123");
    		session.setAttribute("session", 123);
    		return "redirect:456";
    	}
    
    @RequestMapping("/456")
    public String test1(HttpSession session, HttpServletRequest hr) {
    	System.out.println("456");
    	System.out.println(hr.getAttribute("123"));
    	System.out.println(session.getAttribute("session"));
    	return "456";
    }
    

    效果和forward转发差不多,但是浏览器的地址会被修改为/456结尾,还有redirect后原来的request中的内容会丢失,session中的内容不会丢失,而forward都不会

  • 相关阅读:
    数字形式转换
    货币转换
    温度转换
    volatile 的可见性,禁止指令重排序,无法保证原子性的理解
    mysql索引的结构的分析
    史上最详细的ORACLE19c安装说明
    Solaris 修改联网代理的设置
    Oracle Drop表并未直接删除 drop table xx purge
    oracle自定义函数创建函数索引
    连线法合并两个有序链表
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/13229985.html
Copyright © 2020-2023  润新知