相对路径
项目结构1
web.xml
javaWeb_24
a.jsp
a.jsp
pageEncoding="UTF-8"%>
A.jsp
To B.jsp
b.jsp
pageEncoding="UTF-8"%>
B.jsp
To C.jsp
c.jsp
pageEncoding="UTF-8"%>
C.jsp
to A.jsp
运行结果1
有时候我们需要显示一些数据,可能会通过转发的方式到另外一个页面。
项目结构2
web.xml
javaWeb_24
a.jsp
a.jsp
pageEncoding="UTF-8"%>
A.jsp
To B.jsp
b.jsp
pageEncoding="UTF-8"%>
B.jsp
cities:
To C.jsp
c.jsp
pageEncoding="UTF-8"%>
C.jsp
to A.jsp
ToBServlet.javapackage com.dao.chu;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ToBServlet
*/
@WebServlet("/toBServlet")
public class ToBServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List cities =Arrays.asList("北京","上海","广州","深圳");
request.setAttribute("cities", cities);
request.getRequestDispatcher("/path/b.jsp").forward(request, response);
}
}
运行结果2
点击 To B.jsp后,地址栏中http://localhost:8080/javaWeb_24/toBServlet 为跟路径下,所以点击To C.jsp会默认以跟路径为相对路径http://localhost:8080/javaWeb_24/c.jsp,这样便出现了问题。
绝对路径
javaWeb中什么是绝对路径?
相对于当前web应用的跟路径。此处为:http://localhost:8080/javaWeb_24/。即任何的路径都必须戴上contextPath.注意:http://localhost:8080/此路径为WEB站点的跟路径。
如何完成编写?
若/代表的是当前WEB站点的跟路径,则在其前面加上contextPath就可以。
而contextpath可以由request或application的getContextPath()方法来获取。
javaweb开发中的"/“代表什么?
①当前WEB应用的跟路径:
1.请求转发时request.getRequestDispatcher("/path/b.jsp").forward(request, response);
2.web.xml文件中映射servlet访问路径
3.各种标签中的/
②WEB站点的跟路径:
1.超链接.
2.表单中的action.
3.请求重定向时,response.sendRedirect.
总结:若"/“需交由Servlet容器来处理,则代表当前WEB应用的跟路径。若"/”交由游览器来处理,则代表当前WEB站点的跟路径。
所以只需在三个超链接加上即可。
a.jsp
pageEncoding="UTF-8"%>
A.jsp
To B.jsp
b.jsp
pageEncoding="UTF-8"%>
B.jsp
cities:
To C.jsp
c.jsp
pageEncoding="UTF-8"%>
C.jsp
to A.jsp
修改后,运行结果正常