ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC入门学习(六)----SpringMVC中的转发与重定向

2021-05-13 19:01:51  阅读:178  来源: 互联网

标签:redirect 重定向 SpringMVC request ---- jsp 转发 forward


1、转发与重定向

在SpringMVC中,如果当处理器对请求处理完毕后,在不是返回JSON数据的情况下,一般都会跳转到其它的页面,此时有两种跳转方式:请求转发与重定向。在SpringMVC中分别对应forward和redirect这两个关键字。

关键字 描述 SpringMVC实现 原生servlet实现
forward 表示转发 forward:"目标页面"(例如forward:"/WEB_INF/success.jsp") request.getRequestDispatcher("xx.jsp").forward()
redirect 表示重定向 redirect:"目标页面" | redirect:"目标请求" response.sendRedirect("xxx.jsp")

2、SpringMVC转发指令

@RequestMapping("/forward")
public String forward() {
    return "forward:/target.jsp";
}

表示方法执行完成后转发到/target.jsp

3、SpringMVC重定向指令

@RequestMapping("/redirect")
public String redirect() {
    return "redirect:/target.jsp";
}

表示方法执行完成后重定向到/target.jsp。这里重定向中使用的路径和我们以前的写法不同,没有以Web应用名称开头,这是因为SpringMVC会替我们加上。

@RequestMapping("/redirect")
public String redirect() {
    return "redirect:/find";
}

表示方法执行完成后重定向到/find请求。

4、使用原生对象完成转发

@RequestMapping("/forward")
public void forward2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.getRequestDispatcher("/target.jsp").forward(request, response);
}

注意:使用原生request对象执行转发后,handler方法的返回值就必须是void,意思是我们自己指定了响应方式,不需要SpringMVC再进行处理了。一个请求只能有一个响应,不能在handler方法里面给一个,然后SpringMVC框架再给一个。

5、使用原生对象完成重定向

@RequestMapping("/redirect")
public void redirect2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.sendRedirect(request.getContextPath()+"/target.jsp");
}

使用原生response对象执行重定向后,handler方法的返回值同样需要设置为void,原因同上。

标签:redirect,重定向,SpringMVC,request,----,jsp,转发,forward
来源: https://www.cnblogs.com/tanghaorong/p/14761550.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有