首页 > 代码库 > jsp 表单提交,request.getRequestDispatcher方法 及 response.sendRedirect 路径问题

jsp 表单提交,request.getRequestDispatcher方法 及 response.sendRedirect 路径问题

在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>