在jsp页面中,等提交表单数据时,最好用觉得路径。
写法如下:
<form action ="<%=request.getContextPath()%>/do_login.jsp" method="post">
其中 request.getContextPath() 方法是取得当前项目的根目录位置。
这种用法叫做 “绝对路径” 使用绝对路径的好处是不太容易出错。缺点是目标路径字符串容易写的很长(如果目录层数过深的话)。如果使用相对路径,有时路径中免不了出现(..)上层目录,(../..)上层目录的上层目录这种写法。
这种写法容易引起逻辑上的混乱,如 :<form action ="../do/do_login.jsp" method="post">
当点号出现一次两次时还是可以接受的。但如果目录的层数过深,那这种写法就容易引起逻辑的混乱。
同理,在使用 response.sendRedirect() 方法实现客户端跳转时,也建议使用绝对路径。
但是当使用 request.getRequestDispatcher()方法实现服务器端跳转时,情况有些许的不同。这个方法使用的是相对路径。
但是我们同样也是可以使用觉得路径的。如:request.getRequestDispatcher("/result/success.jsp");
整个字符串的最前面的 ”/“ 就代表了项目的绝对路径。接着我们就可以用统一的 ”绝对路径写法“来实现跳转了。
还有一个就是servlet在web.xml文件中进行映射时使用的 <url-pattern> 进行逻辑地址映射是,也要使用绝对路径。
如 :<url-pattern>/login.do</url-pattern>
jsp 表单提交,request.getRequestDispatcher方法 及 response.sendRedirect 路径问题