form表单的action路径如何写才能正确找到相应servlet!
- 首先明确,action后跟的路径是相对于所在jsp的,
如下图:
index.jsp在web目录下,而uk.jsp在web的jsp目录下
2.action后跟的地址是为了找到web.xml设置的servlet的url-pattern
<servlet-mapping>
<servlet-name>serdemo</servlet-name>
<url-pattern>/pass</url-pattern>
</servlet-mapping>
3.由于web的目录结构已经确定,只要找到项目的web目录,就相当于找到了web/web-inf/web.xml
明确一点,项目把什么内容部署到tomcat中?是把web下面的内容部署到tomcat,因此web目录就相当于项目的根目录
目录结构:
4.action后跟的路径分为两种写法:
4.1:相对路径:
以index.jsp举例
<form action="./pass">
<input type="submit" value="注册">
</form>
"./pass"中,“./”代表index的所在目录,也就是web目录,找到web目录相当于找到了
web/web-inf/web.xml,在此路径下就能找到pass,当然由于index本身就在web目录下,可以省略
“./ ” 因此也可以直接写action="pass"
以uk.jsp举例
<form action="../pass">
<input type="submit" value="注册">
</form>
"…/pass"中"…/"代表uk.jsp所在目录的父目录,也就是web目录,这样也能成功找到相应的servlet
4.2:绝对路径:
这里的绝对路径用一个单斜杠表示,“/”指的是当前jsp的根目录,所有jsp文件的根目录就是web目录
因此:
uk.jsp中可以这样写
<form action="/pass">
<input type="submit" value="注册">
</form>
同样:
index.jsp中也能这样写
<form action="/pass">
<input type="submit" value="注册">
</form>