转发重定向路径问题

来源:互联网 发布:dac0832与单片机连接 编辑:程序博客网 时间:2024/05/16 07:04

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

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

2、重定向相对路径和绝对路径问题
转发和重定向的URLString前有加 / 为绝对路径 反之为相对路径

通过表单请求指定的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)

参数只能指定为绝对路径,生成的完整URL与HttpServletRequest.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");
0 0
原创粉丝点击