关于jsp表单提交中action所指向Servlet路径问题的总结

初学java web,在使用servlet处理jsp时发现很多提交表单时发生的错误都是因为提交路径出错造成的。

现以自己为例说明:

项目目录结构如下:


web.xml文件主要内容如下:

[html]  view plain  copy
  1. <servlet>  
  2.   <description>This is the description of my J2EE componentdescription>  
  3.   <display-name>This is the display name of my J2EE componentdisplay-name>  
  4.   <servlet-name>RegisterLoginServletservlet-name>  
  5.   <servlet-class>RegisterLoginServletservlet-class>  
  6. servlet>  
  7.   
  8. <servlet-mapping>  
  9.   <servlet-name>RegisterLoginServletservlet-name>  
  10.   <url-pattern>/servlet/RegisterLoginServleturl-pattern>  
  11. servlet-mapping>      
  12. <welcome-file-list>  
  13.   <welcome-file>index.jspwelcome-file>  
  14. welcome-file-list>  


1、在主页index.jsp或者pages/login.jsp中

使用如下语句:

[html]  view plain  copy
  1. <form action="servlet/RegisterLoginServlet" method="post">  
  2. ...  
  3. form>  
都可以正常跳转到目标servlet,链接如下:


2、而如此使用则会报404错误(在最前面加了一个 :  /):

[html]  view plain  copy
  1. <form action="/servlet/RegisterLoginServlet" method="post">  
  2. ...  
  3. form>  
浏览器报错如下(重点注意链接):


链接中缺失了项目名!

3、再将代码改为:

[html]  view plain  copy
  1. <form action="/SDUMap/servlet/RegisterLoginServlet" method="post">  
  2. ...  
  3. form>  
测试通过,与第1次测试相同


出错原因分析:

/代表根目录,如果使用/开头,对于Tomcat而言就是webApp那个目录,直接找相应的servlet当然找不到,只要再加上项目名即可。


总结:

JSP页面提交表单给servlet时有两种写法:

(一). 相对路径: 

...

(二). 绝对路径: 

1)

RegisterLoginServlet  " method=post>...

    其实绝对路径还有第二种方法:

2) /servlet/RegisterLoginServlet  " method=post>...

原文链接:http://blog.csdn.net/ss1221yy/article/details/70745611

你可能感兴趣的:(Servlet,Jsp)