Web服务器(容器)请求常见的错误及其解决方法
首先我们来看看容器如何找到service()方法?
(1)当在浏览器中输入 http://localhost:8080/firstweb/sayHi 这个地址后,容器是如何找到 HelloServlet.class这个文件并执行的呢?
(2)首先容器会根据firstweb这个应用名找到位于webapps下面对应的文件夹,
(3)然后根据地址中的“/sayHi”到web.xml文件中寻找与之匹配的<url-pattern>节点,找到匹配的节点后会找到与该节点紧邻的<servlet-name>节点,获取名称并在此寻找与该名称相等的<servlet-name>节点,找到相等的节点后,搜寻该节点下面紧邻的<servlet-class>节点,于是获取到了与该地址相对应的类名,借助于ClassLoader加载该类文件,创建对象并调用service()方法,客户端即看到了与该地址匹配的运行结果。
一、404错误产生原因及解决方法
在刚开始进行Web应用开发的时候,经常看见页面出现404这个数字,我们一般会称之为运行产生了404错误。类似于404这个数字,还有可能在页面上看到405、500这两个数字,他们都是服务器执行完客户端的请求以后,返回给客户端的一个关于执行结果的状态编码说明。 如果在运行结果页面中没有看到期待的页面,却看到了404、405、500这样的数字,那么代表着服务器告诉客户端运行产生了错误,掌握何种错误情况产生对应的数字将有利于问题的解决。
404产生的原因为Web服务器(容器)根据请求地址找不到对应资源,以下情况都会出现404的错误提示:
1. 输入的地址有误(应用名大小写不正确,名称拼写不正确)
2. 在web.xml文件中<servlet>和<servlet-mapping>中的两个<servlet-name>不一致
3. 没有将工程部署到Tomcat的webapps下面
4. Web工程部署时的结构没有遵循Servlet的规范
具体的解决办法就是根据上面提到的4种情况,逐条进行检查。
二、405错误产生原因及解决方法
405这个错误的产生原因是容器找不到service方法来处理请求。以下情况容器都将视为没有找到service()方法
1. service方法名写错,字母顺序不对或大小写错误
2. service方法参数类型与标准不一致,或参数顺序与标准不一致。一定是先HttpServletRequest,然后是HttpServletResponse类型
3. service方法异常、返回值类型与标准不一致,一定是抛出ServletException、IOException。返回值类型是void。
解决405错误的方法即检查service方法是否存在,签名(方法名、参数、返回值、异常类型)是否与覆盖的父类中的方法一致。
三、500错误产生原因及解决方法
500的错误原因是请求的Servlet在执行service方法的过程中出现了错误,程序不能继续运行了。以下情况容器都将视为500的一种情况,而返回给客户端这个错误说明。
1. Servlet没有继承HttpServlet或实现Servlet接口
2. web.xml文件中的<servlet-class>写错,与真正的包名类名不符
3. service方法中的代码运行时抛出异常
解决500的方法为依据上面三种情况依次进行检测,逐条排除。
原文作者:daliu_it
博文出处:http://www.cnblogs.com/liuhongfeng/p/4180579.html
本文版权归作者和博客园共有,但未经作者同意转载必须保留以上的声明且在放在文章页面明显位置。谢谢合作。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。