web应用路径问题(相对路径,绝对路径,动态获取路径)
2021-06-07 04:04
标签:body htm base div font blog server == 协议 1、相对路径和绝对路径 绝对路径:以 “ / ” 开头的路径,是完整的路径。 相对路径:不以 “ / ” 开头的路径,是相对于当前web资源目录的路径。 在绝对路径中, “ / ” 的含义有两种解释: (1)如果是服务器端解析, “ / ” 代表相对于当前web应用的绝对路径,即:协议名://服务器名(主机地址):端口号/项目名/,例如:http://localhost:8080/MyTest/。 (2)如果是浏览器端解析(出现在地址栏里的路径), “ / ” 代表相对于当前服务器的绝对路径,即:协议名://服务器名(主机地址):端口号/,例如:http://localhost:8080/。 常见的两种绝对路径的例子就是转发和重定向。 假设在当前动态web项目MyTest中,项目根目录webContent下有两个页面src.html和des.html。 src.html中,通过超链接访问项目中的Servlet,此时a标签的地址有浏览器端解析,路径的第一个 “ / ” 代表http://localhost:8080/,如果直接写 " /MyServlet " 就会报404错误。 在MyServlet中做如下处理,将请求转发到des.html做处理,此时转发器中的地址由服务器解析,路径的第一个 “ / ” 代表http://localhost:8080/MyTest/。 如果是重定向,重定向中的地址由浏览器解析,路径的第一个 “ / ” 代表http://localhost:8080/,如果直接写 " /des.html " 就会报404错误。 如果是相对路径的话较简单些,但相比绝对路径,相对路径更容易出错,当页面更换位置时,链接容易失效。 但是无论是相对路径还是绝对路径,都容易出问题。 2、动态获取路径(最不容易出错的方法) 在java后台同样可以这样获取到路径,但是更多的用于前台的访问路径和js、css、img等静态资源的访问路径问题。 web应用路径问题(相对路径,绝对路径,动态获取路径) 标签:body htm base div font blog server == 协议 原文地址:http://www.cnblogs.com/lixiang1993/p/7327385.htmla href="/MyTest/MyServlet">主页a>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/des.html").forward(request, response); // /des.html 等价于 http://localhost:8080/MyTest/des.html
// response.sendRedirect("/MyTest/des.html"); // /MyTest/des.html 等价于 http://localhost:8080/MyTest/des.html }
a href="MyServlet">主页a>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("des.html").forward(request, response);
// response.sendRedirect("des.html");
}
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
body>
request.getScheme()====request.getScheme() %>
br>
request.getServerName()====request.getServerName() %>
br>
request.getServerPort()====request.getServerPort() %>
br>
request.getContextPath()====request.getContextPath() %>
br>
basePath====basePath %>
br>
body>