转发重定向路径斜杆符号的'/'使用问题

原文:关于转发和重定向的路径问题!

1、转发和重定向的区别:
转发是同一次请求(由服务器请求下一个资源)
重定向是多次请求(由服务器重定向到客户端,由客户端请求下一个资源)

2、重定向相对路径和绝对路径问题

规则与 cmd 的 cd 命令一致,有加斜杠,为绝对路径(从根目录开始算),反之为相对路径(从当前目录开始算)

通过表单请求指定的Url资源 action=”LoginServlet” 则表单生成的请求地址为:

http://localhost:8080/项目名/LoginServlet

在servlet处理请求之后重定向到指定的Uri:

①相对路径:response.sendRedirect("Manager/index.jsp")
    生成的地址:原来请求地址+参数生成完整的URL即:
    http://localhost:8080/项目名/Manager/index.jsp       

②绝对路径:response.sendRedirect("/Manager/index.jsp")
    生成的地址:Web服务器本身地址+参数生成完整的URL  即:
    http://localhost:8080/Manager/index.jsp

③其他web应用地址response.sendRedirect("http://www.baidu.com")
    容器直接定向到该URL。

3 . 转发相对路径和绝对路径问题

参数可以指定为相对路径或绝对路径,转发用相对路径和绝对路径地址效果一样。
①相对路径                                                    
    相对路径情况下生成的完整URL与重定向方法相同。                             

②绝对路径
    绝对路径与重定向不同,容器将相对于Web应用的根目录加参数生成完整的URL生成的地址:  
    原来请求地址+参数生成完整的URL(项目名+页面的Uri)即:
    http://localhost:8080/项目名/Manager/index.jsp                            

4 . ServletContext.getRequestDispatcher(UrlString)

参数只能指定为绝对路径,生成的完整URLHttpServletRequest.getRequestDispatcher(String)相同。

5、转发页面Uri问题

目标页面如果采用相对地址作为资源文件,转发过程中可能导致资源文件的uri失效问题,
这时候可以使用${pageContext.request.contextPath}可以将资源文件的相对地址转换成绝对地址,
如果使用${pageContext.request.contextPath}时页面报错,这时候需要额外导包jap-api.jar   。
示例:
<img alt="adas" src="${pageContext.request.contextPath}/image/baidu.png">

代码示例:

    //正确做法
    // request.getRequestDispatcher("/main/testPlus.jsp").forward(request,response);
    // request.getRequestDispatcher("main/testPlus.jsp").forward(request,response);

    // 正确的做法
    // String basePath = request.getScheme() + "://" + request.getServerName() +
    // ":" + request.getServerPort() + path;
    // response.sendRedirect(basePath+"/main/testPlus.jsp");

    // 正确的做法
    // String path = request.getContextPath();
    // response.sendRedirect(path+"/snc.jsp");

    // 正确的做法
    // response.sendRedirect("snc.jsp");

    // 发生错误
    // response.sendRedirect("/snc.jsp");

posted on   疯狂的妞妞  阅读(481)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示