初学者学习servlet常见错误总结(超详细) ## 初学者在学习servlet有很多容易犯的小错误,造成控制器无法跳转的情况,servlet404错误,servlet500错误。按照步骤彻底解决控制

文章总结了初学者在学习Servlet时可能会遇到的问题,包括Tomcat无法正常运行、JSP或HTML页面访问不到、控制器地址不一致等。特别提到了错误的WebServlet包导入和HttpServlet继承可能导致的404和500错误,提醒读者检查这些常见错误并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学者学习servlet常见错误总结(超详细)

初学者在学习servlet有很多容易犯的小错误,造成控制器无法跳转的情况,servlet404错误,servlet500错误。按照步骤彻底解决控制器无法跳转问题!!!

解决问题:

1.问题排除:Tomcat是否可以正常运行

如果不能正常运行需要先排除这个错误

2.问题排除:jsp页面或者html可以直接访问到吗?

如果访问不到说明jsp和html的页面位置有问题,需要调整路径。
在这里插入图片描述
** jsp和html的页面要放在webapp目录下 **
如果放在WEB-INF下将不能访问到jsp和html的页面
在这里插入图片描述
web项目不使用maven框架的情况下需要在WEB-INF–>lib下放jar包

2.问题排除:查看控制器地址是否一致

表单的跳转地址:在这里插入图片描述
控制器地址:在这里插入图片描述
检查跳转地址是否正确,跳转路径是否正确
另外需要注意的是:我描述的是idea的web骨架方式创建的项目,如果你的项目servlet放的位置和页面放的位置不在同级的话,需要按照实际情况进行修改,建议按照Idea的web骨架创建项目,如果你不会创建javaweb项目可以参考:

问题排除3:在确定配置正常,路由地址正确的情况下,可能是你犯了以下错误:

1.首先看图

在你是初学者编写代码的情况下很可能地址配置正确的情况下导错了相同的WebServlet包,在这里要使用正确的包下的才可以访问到。在这里插入图片描述
需要使用javax.servlet.annotation.WebServlet下的WebServlet才可以正常运行,这里才展示下使用错误后的界面,以便大家排除问题
页面加载正常
在这里插入图片描述
点击按钮后出现异常
在这里插入图片描述
HTTP状态 404 - 未找到
类型 状态报告
消息 请求的资源[/account]不可用
描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。
Apache Tomcat/8.5.85

2.在httpservlet的继承中也可能出现错误,你中招了吗?看图:

在你是初学者编写代码的情况下很可能地址配置正确的情况下,在继承HttpServlet时导错了相同的HtppServlet包,在这里要使用正确的包下的才可以访问到。
在这里插入图片描述
错误示例
当你用错的情况下,继承错类依旧可以找到doGet和doPost方法,相信这也是大多数初学者发现不了这个错误的原因。在这里插入图片描述
运行后的错误示例
页面加载正常
在这里插入图片描述
点击按钮后出现异常
在这里插入图片描述
HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 实例化Servlet类[com.yb.mybatis_demo06.web.AccountServlet]异常
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
javax.servlet.ServletException: 实例化Servlet类[com.yb.mybatis_demo06.web.AccountServlet]异常
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol C o n n e c t i o n H a n d l e r . p r o c e s s ( A b s t r a c t P r o t o c o l . j a v a : 885 ) o r g . a p a c h e . t o m c a t . u t i l . n e t . N i o E n d p o i n t ConnectionHandler.process(AbstractProtocol.java:885) org.apache.tomcat.util.net.NioEndpoint ConnectionHandler.process(AbstractProtocol.java:885)org.apache.tomcat.util.net.NioEndpointSocketProcessor.doRun(NioEndpoint.java:1688)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor W o r k e r . r u n ( T h r e a d P o o l E x e c u t o r . j a v a : 659 ) o r g . a p a c h e . t o m c a t . u t i l . t h r e a d s . T a s k T h r e a d Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread Worker.run(ThreadPoolExecutor.java:659)org.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:833)
根本原因。
java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpServlet
java.base/java.lang.ClassLoader.defineClass1(Native Method)
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2478)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:881)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1384)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol C o n n e c t i o n H a n d l e r . p r o c e s s ( A b s t r a c t P r o t o c o l . j a v a : 885 ) o r g . a p a c h e . t o m c a t . u t i l . n e t . N i o E n d p o i n t ConnectionHandler.process(AbstractProtocol.java:885) org.apache.tomcat.util.net.NioEndpoint ConnectionHandler.process(AbstractProtocol.java:885)org.apache.tomcat.util.net.NioEndpointSocketProcessor.doRun(NioEndpoint.java:1688)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor W o r k e r . r u n ( T h r e a d P o o l E x e c u t o r . j a v a : 659 ) o r g . a p a c h e . t o m c a t . u t i l . t h r e a d s . T a s k T h r e a d Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread Worker.run(ThreadPoolExecutor.java:659)org.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:833)
根本原因。
java.lang.ClassNotFoundException: jakarta.servlet.http.HttpServlet
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1420)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
java.base/java.lang.ClassLoader.defineClass1(Native Method)
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2478)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:881)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1384)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol C o n n e c t i o n H a n d l e r . p r o c e s s ( A b s t r a c t P r o t o c o l . j a v a : 885 ) o r g . a p a c h e . t o m c a t . u t i l . n e t . N i o E n d p o i n t ConnectionHandler.process(AbstractProtocol.java:885) org.apache.tomcat.util.net.NioEndpoint ConnectionHandler.process(AbstractProtocol.java:885)org.apache.tomcat.util.net.NioEndpointSocketProcessor.doRun(NioEndpoint.java:1688)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor W o r k e r . r u n ( T h r e a d P o o l E x e c u t o r . j a v a : 659 ) o r g . a p a c h e . t o m c a t . u t i l . t h r e a d s . T a s k T h r e a d Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread Worker.run(ThreadPoolExecutor.java:659)org.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:833)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看

总结:讲到这里,已经分析了几个初学者出血比较可能犯的错误,希望对你有用,祝各位帅哥美女代码无BUG。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值