一直报404错误

一直报404错误

http://img1.sycdn.imooc.com//climg/5daac9480900be7409390295.jpg

http://img1.sycdn.imooc.com//climg/5daac95209f59b0917090993.jpg老师,这两张图的url要一样吗?list.do是做什么的?我都试了可是还是报404错误

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

10回答
提问者 Levinson 2019-10-20 18:15:18

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
 at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
 at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
 at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
 at com.mysql.jdbc.Util.getInstance(Util.java:386)
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
 at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
 at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
 at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
 at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
 at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
 at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
 at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
 at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
 at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
 at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
 at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
 at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
 at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
 at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
 at com.imooc.jdbc.common.ConnectionUtil.getConnection(ConnectionUtil.java:39)
 at com.imooc.jdbc.dao.MessageDAO.getMessages(MessageDAO.java:55)
 at com.imooc.jdbc.service.MessageService.getMessages(MessageService.java:34)
 at com.imooc.jdbc.servlet.MessageListServlet.service(MessageListServlet.java:41)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at com.imooc.jdbc.filter.UserFilter.doFilter(UserFilter.java:30)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at com.imooc.jdbc.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:28)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.base/java.lang.Thread.run(Thread.java:830)

  • 可能是你数据库版本的问题吧,你按照这个试试看行不行 https://blog.csdn.net/m_amazing/article/details/84313789
    2019-10-20 18:39:33
提问者 Levinson 2019-10-20 11:42:22

老师,400是没有了。可是报出500错误。

http://img1.sycdn.imooc.com//climg/5dabd7890968571115260234.jpg

  • 提问者 Levinson #1
    404错误
    2019-10-20 11:42:39
  • 好帮手慕阿莹 回复 提问者 Levinson #2
    请同学把报错信息贴全哦 注意不要贴在回复里,会失去代码的格式。可以在回答里贴一下。祝学习愉快。
    2019-10-20 14:51:36
  • 提问者 Levinson 回复 好帮手慕阿莹 #3
    老师,会不会是我的数据库里没有这个数据表,可以我查看了确实有这个数据表
    2019-10-20 18:16:20
好帮手慕阿莹 2019-10-20 10:27:38

看起来比较奇怪,也有可能是编辑器没有编译好,建议同学可以尝试重新编译一下,并重新启动一下idea再试试。

http://img1.sycdn.imooc.com//climg/5dabc5fe09d09e0f03450222.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


提问者 Levinson 2019-10-19 19:21:14
好帮手慕珊 2019-10-19 19:15:09

同学, 你好!是看控制台输出,不是这里。启动服务器后,下面选中的内容是控制台

http://img1.sycdn.imooc.com//climg/5daaeff609636a9916300293.jpg

另外,将浏览器中的路径改成http://localhost:8080/message/list.do   ,再运行试试

祝学习愉快!

提问者 Levinson 2019-10-19 19:05:49

老师,没有输出。

http://img1.sycdn.imooc.com//climg/5daaedcc098e5b0c14620500.jpg



好帮手慕珊 2019-10-19 19:00:18

同学,你好!可以按如下方法排查一下问题:

1、看一下控制台有没有输出如下选中的语句的内容,如果有输出,说明Servlet的配置没有问题。

http://img1.sycdn.imooc.com//climg/5daae92f09ca9b9d06330097.jpg

如果没有输出,将404页面显示效果截图贴出来,注意一定要有url地址

2、如果有输出,则继续排查问题,看一下下面的文件是否存在,如果不存在要添加

http://img1.sycdn.imooc.com//climg/5daaea0a0987c20206310177.jpg

祝学习愉快! 

提问者 Levinson 2019-10-19 18:26:54
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list>

    <error-page>
        <error-code>404</error-code>
        <location>/WEB-INF/views/error/404.jsp</location>
    </error-page>

    <error-page>
        <error-code>500</error-code>
        <location>/WEB-INF/views/error/500.jsp</location>
    </error-page>
    
    <servlet>
        <servlet-name>MessageListServlet</servlet-name>
        <servlet-class>com.imooc.jdbc.servlet.MessageListServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MessageListServlet</servlet-name>
        <url-pattern>/message/list.do</url-pattern>
    </servlet-mapping>
</web-app>
package com.imooc.jdbc.servlet;

import com.imooc.jdbc.bean.Message;
import com.imooc.jdbc.service.MesaageService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class MessageListServlet extends HttpServlet {
    private MesaageService mesaageService;

    @Override
    public void init() throws ServletException {
        super.init();
        mesaageService = new MesaageService();
    }

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("=============进入MessageListServlet===================");
        String pageStr = request.getParameter("page"); //当前页码
        int page = 1;/* 页码默认值为1 */
        if (null != pageStr && (!"".equals(pageStr))){
            try{
                page = Integer.parseInt(pageStr);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        List<Message> messages = mesaageService.getMessage(page,5);//分页查询全部留言
        int count = mesaageService.countMessage();
        int last = count % 5 == 0 ? (count / 5) : ((count / 5) + 1);
        request.setAttribute("last",last);
        request.setAttribute("messages",messages);
        request.setAttribute("page",page);
        request.getRequestDispatcher("/WEB-INF/views/biz/message_list.jsp").forward(request,response);
    }

    @Override
    public void destroy() {
        super.destroy();
        mesaageService = null;
    }
}
package com.imooc.jdbc.dao;

import com.imooc.jdbc.bean.Message;
import com.imooc.jdbc.common.ConnectionUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 消息的DAO
 */
public class MessageDAO {
    /**
     * 分页查询全部留言
     * @param page 当前页码
     * @param pageSize 每一页记录数
     * @return
     */
    public List<Message> getMessage(int page,int pageSize){
        Connection conn = ConnectionUtil.getConnection();
        String sql = "select * from message order by create_time desc limit ?,?";//limit m,n:从第m条开始,取出总共n条记录
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        List<Message> messages = new ArrayList<Message>();
        try {
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1,(page - 1) * pageSize);
            pstmt.setInt(2,pageSize);
            rs = pstmt.executeQuery();
            while (rs.next()){
                messages.add(new Message(rs.getLong("id"),rs.getLong("user_id"),rs.getString("username"),
                        rs.getString("title"),rs.getString("content"),rs.getTimestamp("create_time")));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            ConnectionUtil.release(rs,pstmt,conn);
        }

        return messages;
    }

    /**
     * 计算所有留言数量
     * @return
     */
    public int countMessage(){
        Connection conn = ConnectionUtil.getConnection();
        String sql = "select count(*) total from message";
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while(rs.next()){
                return rs.getInt("total");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            ConnectionUtil.release(rs,pstmt,conn);
        }
        return 0;
    }
}

老师。我改完之后页面还是出现404

好帮手慕珊 2019-10-19 18:23:56

你好!把下面选中的内容直接改成/

http://img1.sycdn.imooc.com//climg/5daae42609420a5a06590094.jpg

祝学习愉快!

好帮手慕珊 2019-10-19 17:54:45

同学,你好!这两个url不一样,首先说一下Servlet的配置。下面选中的内容是url-pattern的值。就是之前学习过程中Servlet的访问路径,比如之前配置的是servlet1。那么访问地址就是http://localhost:8080/工程名/servlet1,就可以访问Servlet了。而这里只是给url-pattern起了一个比较特殊的名字,/message/list.do等价于/servlet1。在开发过程中,习惯路径名以.do结尾

http://img1.sycdn.imooc.com//climg/5daadc03091975d907320223.jpg

然后再来看一下Application context,在IDEA中的Application context就相当于我们之前在Eclipse工程中访问url时的工程名。其实准确的说法不是工程名,实际上就是Application context。只是在Eclipse中默认的Application context是工程名。IDEA中的Application Context可以写成/,/后的内容都去掉。这时候访问路径就是http://localhost:8080/message/list.do。如果Application context值为/MyProject,则访问路径就是:http://localhost:8080/MyProject/message/list.do

http://img1.sycdn.imooc.com//climg/5daadcab09a9e1c907890100.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 Levinson #1
    所以老师要怎么改啊。
    2019-10-19 18:19:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师