form之action的绝对路径与相对路径
1、当你的form要提交到你自己的站点之外的URL的时候,就采取绝对路径:
<form action="http://www.xxx.yyy:zzzz/mmm/nn/kkk.jsp">
2、如果是提交到自己站点内的页面,务必使用相对路径(为什么?见http://www.cnblogs.com/qrlozte/p/3515836.html),以tomcat为例:
比如说你的站点文件夹是D:\MySite\WebContent,也就是说,WEB-INF文件夹的路径是D:\MySite\WebContent\WEB-INF
你在server.xml中配置了
<Context path="/mysite" docBase="D:\MySite\WebContent"/>
那么Listing1.1的含义就是提交到D:\MySite\WebContent\somepage.jsp,这里/mysite就等价于D:\MySite\WebContent,实际上,Listing1.1这种形式可以引用你的站点内的任何页面,因此,我个人更喜欢称之为“站内绝对路径”
Listing1.1
<form action="/mysite/somepage.jsp">
下面来看,比如说你当前浏览器的地址栏是http://localhost:8080/mysite/xxx/login.jsp
而你知道在/mysite/xxx/yyy/checker.jsp中有用户验证的代码,那么你在login.jsp中的form应该如何提交呢?见Listing1.2,其含义就是,以我当前的目录为基准,进入子目录yyy,找到yyy里面的页面checker.jsp并提交form。这里使用的就是(站内)相对路径了。
Listing1.2
<form action="yyy/checker.jsp">
假如说,checker.jsp也在xxx目录中呢?显然也是很简单了,见Listing1.3
Listing1.3
<form action="checker.jsp">
又假如,checker.jsp在/mysite/zzz这个目录中呢?我们需要返回上一级目录,再进入zzz目录,见Listing1.4
Listing1.4
<form action="../zzz/checker.jsp">
其实,由于我们已经了解了如何使用站内绝对路径,显然,Listing1.4这种情况也可以通过站内绝对路径来解决,见Listing1.5
Listing1.5
<form action="/mysite/zzz/checker.jsp">