之前一直报404,孩子要哭了
类型 状态报告 消息 请求的资源[/book_war_exploded/user.let]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。
然后看了好多好多帖子,我觉得就是我的项目的里面路径的问题,它找不到我的UserServlet类
我原来的代码长这样:
@WebServlet("/user.let")
public class UserServlet extends HttpServlet {
//构建UserBiz对象
UserBiz userBiz= new UserBiz();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out=resp.getWriter();//响应输出流的对象
//1.判断用户请求的类型为login
String method=req.getParameter("type");
switch(method){
case "login":
//2.从login.html中获取用户名和密码
String name=req.getParameter("name");
String pwd=req.getParameter("pwd");
//3.调用UserBiz的getUser()方法,更具用户名和密码获取对应的用户对象
User user=userBiz.getUser(name,pwd);
//4.判断用户对象是否为null
if(user==null){
//4.1 如果是null表示用户名或密码不正确,提示错误,回到登录页面
out.println("");
}else{
//4.2 非空,表示登录成功,将用户对象保存到session中,提示登录成功后,将页面跳转到index.jsp
out.println("");
}
break;
}
}
}
然后项目结构长这样:
然后看了好多
帖子用Servlet类的都直接在web.xml上加配置,就也去试了一试
UserServlet com.yyy.book.action.UserServlet UserServlet /user.let
它终于报500了,感天动地
一段不知道那里有错的500
akarta.servlet.ServletException: 实例化Servlet类[com.yyy.book.action.UserServlet]异常
解决方法是把tomcat换成9.*版本的,出现这个问题的原因是tomcat 10中的servlet-api与maven中导入的servlet-api依赖不兼容所导致的
第一次报错500,可太开心了
HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 实例化Servlet类[com.yyy.book.action.UserServlet]异常 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 javax.servlet.ServletException: 实例化Servlet类[com.yyy.book.action.UserServlet]异常 org.apache.catalina.authenticator.Authenticatorbase.invoke(Authenticatorbase.java:540) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732) 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$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) 根本原因。 java.lang.NoClassDefFoundError: org/apache/commons/dbutils/ResultSetHandler **** com.yyy.book.biz.UserBiz.(UserBiz.java:10) com.yyy.book.action.UserServlet. (UserServlet.java:15) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) org.apache.catalina.authenticator.Authenticatorbase.invoke(Authenticatorbase.java:540) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732) 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$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) 根本原因。 java.lang.ClassNotFoundException: org.apache.commons.dbutils.ResultSetHandler org.apache.catalina.loader.WebappClassLoaderbase.loadClass(WebappClassLoaderbase.java:1407) org.apache.catalina.loader.WebappClassLoaderbase.loadClass(WebappClassLoaderbase.java:1215) com.yyy.book.biz.UserBiz. (UserBiz.java:10) com.yyy.book.action.UserServlet. (UserServlet.java:15) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) org.apache.catalina.authenticator.Authenticatorbase.invoke(Authenticatorbase.java:540) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732) 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$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看 Apache Tomcat/9.0.56
更改项目结构
类型 异常报告 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.NullPointerException com.yyy.book.action.UserServlet.doPost(UserServlet.java:44) javax.servlet.http.HttpServlet.service(HttpServlet.java:681) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看
这个,等我重启了几次tomcat之后,就没报错了
登录成功
错误的密码也通过了



