Servlet完结篇
一.系列导航:
写在前面:
我相信很多童鞋刚开始时对于前台请求的url和我一样 时刻都有一种发怵的感觉,总没有办法从容应对:比如路径如何填写时慎之又慎,访问web出错因为路径错误久久查找不到原因 诸如此类很是苦恼,今天咱就把压轴拿出来----彻底搞定url
一.场景模拟:
比如我现在给一个简单的请求url: "FirstServlet"
我们知道a
标签默认时GET
请求
所以自然交给Servlet的doGet方法:
不过我这里模拟的时servlet2.5 所以请求交给servlet之前还有Web.xml对其进行拦截处理:
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>lkg.jsp.Servlet.FisrtServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/FisrtServlet</url-pattern>
</servlet-mapping>
<servlet>
之前我们只是粗略的介绍请求会被url-pattern
拦截:现在我们对其进行具体分析:
<url-pattern>/FisrtServlet</url-pattern>
注意"/"
在web.xml
中意思是:依据当前项目对请求路径为FisrtServlet开头的进行拦截,此时会形成一个映射关系:拦截的路径会给一个servelt-name 以此去真正的servlet中去匹配这个servlet-name,如果名字相同,说明匹配成功,这才会交由FirstServlet这个类去处理doGet方法是.否则请求失败—404
二.踩坑指南
细心的童鞋,应该察觉到我刚才说’/'是针对于web.xml中 它的涵义是相对于项目路径:也就是说完整的请求实质上是:
localhost:8888/项目名/ + 你的请求路径
但是如果你jsp等前台传来的时候前面加一个"/"义完全不同,例如:
<a href="/FisrtServlet/xxx">第一个servlet</a>
上面请求意思是:该请求是相对于服务器根路径,也就是说,和我们的web.xml脱离了,更准确地说我们项目和这个请求毫无关系,它会被tomcat服务器(这个已经你使用的服务器了)拦截直接拼接在端口后面:事实上服务器根本无法处理这个请求:所以也会报404:
当鼠标放到a标签上 就会出现如下路径,证实我们的结论.
三.曲终人散
到这,相信各位以后再填写路径的时候能够避免很多面对404无法应对的尴尬场面
同时这也是Servlet系列的完结,当然这仅仅是这一个模块的完结,笔者还会继续努力学习新的acknowledge ,擎等着你勒…