Servlet-报错

访问出错怎么办?

出现 404

404 表示用户访问的资源不存在. 大概率是 URL 的路径写的不正确.

错误实例1: 少写了 Context Path

通过 /hello 访问服务器

错误实例2: 少写了 Servlet Path

通过 /ServletHelloWorld 访问服务器

错误实例3: Servlet Path 写的和 URL 不匹配

修改 @WebServlet 注解的路径

重启 Tomcat 服务器.

URL 中的路径写作 "/hello" , 而代码中写作的 Servlet Path 为 "/helloServlet", 两者不匹配.

错误实例4: web.xml 写错了

清除 web.xml 中的内容

重启 Tomcat 服务器.

通过浏览器访问 URL, 可以看到:

在 Tomcat 启动的时候也有相关的错误提示

还有可能是文件名错了,文件路径错了,文件位置错了等等

出现405

405 表示对应的 HTTP 请求方法没有实现.

错误实例1: 没有实现 doGet 方法.
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
}

重启 Tomcat 服务器.

在浏览器中访问, 可以看到:

在浏览器地址栏直接输入 URL , 会发送一个 HTTP GET 请求.

此时就会根据 /ServletHelloWorld/hello 这个路径找到 HelloServlet 这个类. 并且尝试调HelloServlet 的 doGet 方法.

但是如果没有实现 doGet 方法, 就会出现上述现象.

错误实例2:super.doGet()没有干掉~

重启 Tomcat 服务器.

在浏览器中访问, 可以看到:

出现505

往往是 Servlet 代码中抛出异常导致的.

错误实例:修改代码
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
    String s = null;
    resp.getWriter().write(s.length());
 }
}

重启 Tomcat 服务器.
重新访问页面, 可以看到:

在页面上已经有具体的异常调用栈.

异常信息里已经提示了出现异常的代码是 HelloServlet.java 的第 13 行. 
resp.getWriter().write(s.length());
仔细检查这里的代码就可以看到空指针异常.

出现空白页

错误实例:修改代码, 去掉 resp.getWritter().write() 操作.
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("hello");
 }
}

重启服务器,

访问服务器, 可以看到一个空白页面:

抓包可以看到, 响应 body 中的内容就是 "空数据"

出现 "无法访问此网站"

一般是 Tomcat 启动就失败了.

错误实例: Servlet Path 写错了.

应该写作 "/hello", Tomcat 在启动的时候已经提示了相关的错误.
Tomcat 启动的日志里面报错信息可能比较多, 需要耐心观察, 找到关键的提示.

看到的现象:

小结

初学 Servlet, 遇到的这类问题会非常多. 我们不光要学习 Servlet 代码的基本写法, 也要学习排查错误的思路.

例如:
  • 熟悉 HTTP 协议能够让我们调试问题事半功倍.
  • 4xx 的状态码表示路径不存在, 往往需要检查 URL 是否正确, 和代码中设定的 Context Path 以及Servlet Path 是否一致.
  • 5xx 的状态码表示服务器出现错误, 往往需要观察页面提示的内容和 Tomcat 自身的日志, 观察是否存在报错.
  • 出现连接失败往往意味着 Tomcat 没有正确启动, 也需要观察 Tomcat 的自身日志是否有错误提示.
  • 空白页面这种情况则需要我们使用抓包工具来分析 HTTP 请求响应的具体交互过程.

观察日志是调试程序的重要途径. Tomcat 的日志往往很多, 需要同学们耐心阅读, 经常阅读, 熟练
了就能更快速的找到问题了.

若还是找不到问题,问老师带上这三个:

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值