服务器端地址
服务端的地址指的是相对于你的Web应用的地址,这个地址是在服务器端解析的(不同于HTML和JavaScript中的地址,他们是在浏览器端解析的),也就是说这时候在JSP和Servlet中的相对地址应该是相对于你的Web应用,即相对于http://localhost:8080/WebApp/的。
其用到的地方有:forward
Servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以如果要forward到login.jsp应该这样写:request.getRequestDispatcher("/user/login.jsp");其绝对地址是http://localhost:8080/WebApp/user/login.jsp。
在Servlet中,“/”表示Web应用根目录,和物理路径的相对表示。“./”表示当前目录,“../”表示上级目录,以此类推。
此外,Servlet和JSP中获得文件路径:1. JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI();
文件的绝对路径:application.getRealPath(request.getRequestURI());
当前web应用的绝对路径:application.getRealPath("/");
取得请求文件的上层目录:newFile(application.getRealPath(request.getRequestURI())).getParent();
- Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径:request.getSession().getServletContext().getRealPath();
当前web应用的绝对路径:servletConfig.getServletContext().getRealPath("/");
客户端的地址
所有的HTML页面中的相对地址都是相对于服务器跟目录(http:localhost:8080/)的,而不是根目录下的Web应用目录http://localhost:8080/WebApp/。
HTML中的form表单的action属性的地址应该是相对于服务器根目录http://localhost:8080/的,所以提交到loginjsp的路径应该为:action="/WebApp/user/login.jsp"。
JavaScript也是在客户端解析的,所以其相对路径和form表单一样。
所以一般情况下,在HTML页面中引用的CSS和JS还有表单的action属性前面都最好加上应用的名称。另外,尽量避免使用'./'和".//"等相对路径。