一般来说,路径分为两种:绝对路径和相对路径。
- 绝对路径就是放到哪里都能用的路径,比如
D:\MyDoc\JavaWebStudy\src\session\FormServlet.java - 相对路径就是相对于某个资源的路径,如果离开了这个资源路径就不成立了。
下面总结一下在JavaWeb中的路径问题,写路径的时候一般推荐以“/”开头。“/”在不同的地方有不同的含义。
在JavaWeb中如果“/”是给服务器端用的话,就代表web工程路径下,
“/”是给浏览器(客户端)用的话,则代表webapps目录(也就是Tomcat下的webapps)。
第一种:"/"代表当前web工程目录的情况
1.取得真实路径
request.getServletContext().getRealPath("/index.jsp");
2.在服务器端使用forward方法,比如:
request.getRequestDispatcher("/index.jsp").forward(request,response);
3.include指令或者 jsp:include标签
<%@ include file="/index.jsp" %>
<jsp:include page="/index.jsp" />
第二种:"/"代表当前webapps目录
1.sendRedirect 实现请求重定向
response.sendRedirect("/JavaWebStudy/index.jsp");
但是如果按照上面写的话,如果修改了工程的名字(JavaWebStudy)那代码也要随着修改,解决办法是:
response.sendRedirect(request.getContextPath()+"/index.jsp");
2.超链接的跳转
<a href="${pageContext.request.contextPath}/index.jsp">Go</a>
3.Form表单的提交
<form action="${pageContext.request.contextPath}/servletDo">
4.js脚本 和 css样式文件的引用
src="${pageContext.request.contextPath}/js/···"
同src="<%=request.getContextPath() %>/js/···"