Jsp&Servlet 重定向、请求转发与绝对路径的问题
2017-03-26 19:32
507 查看
一、重定向:通知浏览器重新发送至xxx的请求。
1、发生场景:
(1)response.sendRedirect("xxx");
(2)JSP页面的 src 属性;
(3)JSP表单的 action 属性;
2、参数问题:
重定向只是告诉浏览器发送请求URL,没有携带任何参数。
3、绝对路径:
(1)例如:
其中的“/”表示“http://服务器ip:端口/”,比如:http://localhost:8080/。【注意,用该方法访问会报错404,因为访问结果的url是:http://localhost:8080/xxx,在这里没有声明项目名。】
所以一般需要改成response.sendRedirect("/项目名/xxx")
(2)如果是jsp页面需要重定向可以用“${pageContext.request.contextPath}”,
(3)如果是服务器重定向用“request.getContextPath()”:
二、请求转发:服务器ProjectA将请求转发给服务器ProjectA其他的应用程序。
1、发生场景:
(1)request.getRequestDispatcher("xxx.jsp").forward(request, response);
2、参数问题:
服务器内部的转发,可以将Request域的参数转发到下一个服务端程序。
3、绝对路径:
例如:
其中的“/”表示“http://服务器ip:端口/项目名/”,按照该方式访问的url就是:http://localhost:8080/Project1/xxx.jsp。
如果是服务器内部跳转使用如下方式:
访问的url就变成:http://localhost:8080/Project1/Project1/xxx.jsp【同样404报错】
三、总结:主要记得
1、重定向的 / 表示:http://服务器ip:端口/
2、请求转发的 / 表示:http://服务器ip:端口/项目名
怎么记忆呢,很简单,重定向是浏览器发来的,只知道发到某个服务器,但是不知道发到服务器的哪个project,所以需要自己用代码声明; 而请求转发是服务器某个project内部的转发,转来转去都是在某个project内部,所以不需要手动声明项目名。
1、发生场景:
(1)response.sendRedirect("xxx");
(2)JSP页面的 src 属性;
(3)JSP表单的 action 属性;
2、参数问题:
重定向只是告诉浏览器发送请求URL,没有携带任何参数。
3、绝对路径:
(1)例如:
response.sendRedirect("/xxx");
其中的“/”表示“http://服务器ip:端口/”,比如:http://localhost:8080/。【注意,用该方法访问会报错404,因为访问结果的url是:http://localhost:8080/xxx,在这里没有声明项目名。】
所以一般需要改成response.sendRedirect("/项目名/xxx")
(2)如果是jsp页面需要重定向可以用“${pageContext.request.contextPath}”,
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery-3.1.1.js"></script>
(3)如果是服务器重定向用“request.getContextPath()”:
request.getRequestDispatcher(request.getContextPath()+"/xxx").forward(request, response);
二、请求转发:服务器ProjectA将请求转发给服务器ProjectA其他的应用程序。
1、发生场景:
(1)request.getRequestDispatcher("xxx.jsp").forward(request, response);
2、参数问题:
服务器内部的转发,可以将Request域的参数转发到下一个服务端程序。
3、绝对路径:
例如:
request.getRequestDispatcher("/xxx.jsp").forward(request, response);
其中的“/”表示“http://服务器ip:端口/项目名/”,按照该方式访问的url就是:http://localhost:8080/Project1/xxx.jsp。
如果是服务器内部跳转使用如下方式:
request.getRequestDispatcher("/项目名/xxx.jsp").forward(request, response);
访问的url就变成:http://localhost:8080/Project1/Project1/xxx.jsp【同样404报错】
三、总结:主要记得
1、重定向的 / 表示:http://服务器ip:端口/
2、请求转发的 / 表示:http://服务器ip:端口/项目名
怎么记忆呢,很简单,重定向是浏览器发来的,只知道发到某个服务器,但是不知道发到服务器的哪个project,所以需要自己用代码声明; 而请求转发是服务器某个project内部的转发,转来转去都是在某个project内部,所以不需要手动声明项目名。
相关文章推荐
- sp&Servlet 重定向、请求转发与绝对路径的问题
- servlet中的请求转发和重定向的路径问题
- 2.1Head First Servlet & Jsp——请求转发和请求重定向
- 请求转发和重定向中相对路径和绝对路径问题:
- Servlet中转发和重定向的路径问题
- JSP和Servlet中的绝对路径和相对路径问题
- JSP、Servlet中的相对路径和绝对路径 页面跳转问题
- JSP 和 Servlet 中的绝对路径和相对路径问题困扰了我好几天
- 重定向和请求转发(摘自head first servlet and jsp)
- JSP、Servlet中的相对路径和绝对路径(包括路径问题)
- jsp servlet 的 请求转发和重定向
- Servlet中转发和重定向的路径问题以及表单提交路径问题
- Servlet中转发和重定向的路径问题
- JSP、Servlet中的相对路径和绝对路径 页面跳转问题
- Servlet中转发和重定向的路径问题
- Servlet请求转发与重定向的区别 Session&Application 总结笔记
- JSP和Servlet中的绝对路径和相对路径问题
- JSP、Servlet中的相对路径和绝对路径 页面跳转问题
- Servlet中转发和重定向的路径问题以及表单提交路径问题
- 关于servlet中转发jsp的路径问题