forward和redirect的用法

forward 表示 转发
redirect 表示 重定向

返回值为String时

  • return 默认为 forward 修饰(转发)

  • 转发:

    • returun “URL地址” 表示转发到指定的URL地址(前段页面)
    • returun “/URL地址” 表示转发到指定的URL地址(前段页面)
    • "forward:URL地址" 表示转发到指定的URL地址(前段页面)
    • "forward:/URL地址" 表示转发,与 controller 中指定RequestMapping 中的URL进行匹配,执行指定的方法。
  • 重定向:

    • "redirect:URL地址" 表示重定向到指定的URL地址(前段页面),由于在MVC中,重定向需要重新定向URL地址,且不经视图解析,所以如果页面放在WEB-INF下的话,则无法进行访问,可以通过 “redirect:/URL地址” 重定向到 controller 中其它方法,在通过其它方法转发到指定页面。
    • "redirect:/URL地址" 表示重定向,与 controller 中指定RequestMapping 中的URL进行匹配,执行指定的方法。
@Controller
public class UserController {

    @RequestMapping("/")
    public String toIndex() {
        return "index.jsp";
    }

	// 当返回值为String时,return默认为 forward
    @RequestMapping("text1")
    public String text1() {
        System.out.println("text1");
        return "login.jsp";
    }
	
	// redirect:/text3 
	// redirect: 后面的URL前面加上 / 表示重定向到 controller(控制器) 中的其它方法。
    @RequestMapping("text2")
    public String text2() {
        System.out.println("text2");
        return "redirect:/text3";
    }

    @RequestMapping("text3")
    public String text3(){
        System.out.println("text3");
        return "test.jsp";
    }

	// forward:/text2 
	// forward: 后面的URL前面加上 / 表示转发到 controller(控制器) 中的其它方法。
    @RequestMapping("text4")
    public String text4(){
        System.out.println("text4");
        return "forward:/text2";
    }

    @RequestMapping("text5")
    public String text5(){
        System.out.println("text5");
        return "redirect:/text2";
    }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP中,forwardredirect是两种常见的页面跳转方式。它们的区别如下: 1. forward forward是一种服务器端跳转方式,它可以将当前请求转发给另一个JSP页面或Servlet进行处理。在JSP中,可以使用RequestDispatcher的forward()方法来实现forward操作,例如: ``` RequestDispatcher rd = request.getRequestDispatcher("target.jsp"); rd.forward(request, response); ``` 在这个例子中,当前请求将被转发到target.jsp页面进行处理。需要注意的是,forward操作是在服务器端完成的,客户端浏览器不知道这个操作的存在,因此在浏览器的地址栏中不会显示目标页面的地址。 2. redirect redirect是一种客户端跳转方式,它可以将当前请求重定向到另一个URL地址。在JSP中,可以使用response的sendRedirect()方法来实现redirect操作,例如: ``` response.sendRedirect("target.jsp"); ``` 在这个例子中,当前请求将被重定向到target.jsp页面进行处理。需要注意的是,redirect操作是在客户端浏览器中完成的,因此浏览器会向服务器发送一次新的请求,地址栏中会显示目标页面的地址。 3. 区别 (1)执行顺序不同 forward是在服务器端执行的,它的执行顺序是先执行当前页面的代码,然后再执行目标页面的代码。而redirect是在客户端执行的,它的执行顺序是先执行当前页面的代码,然后向客户端发送重定向指令,客户端再向服务器发送一次新的请求,最后执行目标页面的代码。 (2)数据传递方式不同 forward可以在服务器端共享请求对象中的数据,因为它是在同一个请求中进行的。而redirect不能在两个请求之间共享数据,因为它是两个独立的请求。 (3)地址栏显示方式不同 forward不会改变客户端浏览器的地址栏,因为它是在同一个请求中进行的。而redirect会改变客户端浏览器的地址栏,因为它是两个独立的请求。 总之,forwardredirect是两种不同的页面跳转方式,开发者需要根据实际情况选择合适的方式来实现页面跳转。如果需要在两个页面之间共享数据,可以使用forward方式;如果需要重定向到一个新的URL地址,可以使用redirect方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值