【JavaEE】_Servlet程序常见问题

本文详细探讨了JavaEE开发中遇到的常见HTTP错误,包括404、405、500页面,如URL配置错误、webapp部署问题、Servlet方法未正确实现等。还涉及如何解决Tomcat未启动和@WebServlet注解的使用规范。
摘要由CSDN通过智能技术生成

目录

1. 404 页面

1.1 url问题

1.2 webapp加载问题

2. 405 页面

2.1 doGet()方法未重写问题

2.2 super.doGet()未删去问题

3. 500页面

4. 空白页面

5. 无法访问此网站


1. 404 页面

1.1 url问题

常见原因有:

1. url 的 context path 缺失或不匹配;

2. url 的 servlet path 缺失或不匹配;

注意正确的url为:127.0.0.1:8080//context path/servlet path;

 详情可参考本专栏servlet程序编写方法一文,文章链接如下:

【JavaEE】_Servlet程序的编写方法-CSDN博客

1.2 webapp加载问题

1. web.xml文件内容错误;

web.xml内容为:

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

2. webapp没有正确部署;

3. 目录结构以及目录名、文件名错误;

目录结构应为:

详情可参考本专栏servlet程序编写方法一文,文章链接如下:

【JavaEE】_Servlet程序的编写方法-CSDN博客

2. 405 页面

出现405页面的情况有:

2.1 doGet()方法未重写问题

当浏览器发送了GET请求,但在服务器端代码中没有重写doGet问题,就会导致405页面;

(注意不要写为doPost请求)

方法没有被实现,自然不允许调用;

2.2 super.doGet()未删去问题

当在.java文件中输入doGet方法后,idea会自动补全重写内容为super.doGet(),如果super.doGet()没有注释掉,运行后再按照原url访问页面,也会出现405页面;

 因为super.doGet方法的内部实现就是返回405页面:

3. 500页面

500页面是服务器内部错误,往往是由于Servlet程序抛异常导致的,出现500页面时,日志会明确说明异常调用栈;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String s = null;
        System.out.println(s.length());
    }
}

刷新页面:

4. 空白页面

如果没有写resp.getWriter().writre()方法,即没有给前端返回任何东西,就会出现空白页面:

.java文件如下:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/Test1")
public class TestServletDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("你好 Servlet");
    }
}

页面如下:

注意resp.getWriter().write()才是像浏览器写响应的操作,System.out.println()是输出在服务器端的内容;

5. 无法访问此网站

没有启动tomcat(tomcat没有正确运行)时,或是IP与端口号有误时,

按原url访问页面就会提示无法访问此网站:

此情况下需要检查tomcat是否正常工作,IP与端口号是否正确;

6. 关于@webServlet注解问题

对于在类前标注的@WebServlet注解,需保证:

(1)注解中的参数需以 / 开头;

(2)一个项目中,多个servlet中这部分指定的路径不能重复;

6.1 参数未以 / 开头

6.2 同一项目的多个servlet的此处参数相同

如果在同一项目中的多个servlet程序中设置相同的参数,在日志中会显示异常调用栈。

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值