LinuxAmateur 发表于 2012-11-22 18:15

JSP操作mysql数据库

各位大神,小弟用myeclipse写了个web工程,其中一个jsp文件代码如下:

<%@ page language="java" import="java.util.*,java.sql.*"
        pageEncoding="gbk"%>
<%@page import="javax.servlet.jsp.tagext.TryCatchFinally"%>
<%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                        + request.getServerName() + ":" + request.getServerPort()
                        + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
        <head>


                <meta http-equiv="pragma" content="no-cache">
                <meta http-equiv="cache-control" content="no-cache">
                <meta http-equiv="expires" content="0">
                <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
                <meta http-equiv="description" content="This is my page">
                <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->

        </head>

        <body>
                <%
                        //接收
                        String u = request.getParameter("username");

                        String p = request.getParameter("password");

                        //到数据库中验证用户
                       
                        Connection conn=null;
                        Statement sm=null;
                        ResultSet rs=null;
                        try {
                                //1.加载驱动
                                Class.forName("com.mysql.jdbc.Driver");

                                //2.获得连接
                                conn = DriverManager.getConnection(
                                                "jdbc:mysql://127.0.0.1:8080/mydb1", "root", "111111");

                                //3.创建Statement
                                sm = conn.createStatement();

                                //4.查询
                                rs = sm.executeQuery("select password from users where username='"+u+"'");

                                //根据查询结果判断
                                if (rs.next()) {

                                        //说明用户名 存在
                                        if (rs.getString(1).equals(p)) {

                                                //一定是合法的
                                                response.sendRedirect("wel.jsp?userName="+u);
                                        } else {

                                                //密码错误
                                                response.sendRedirect("login.jsp?");
                                        }
                                } else {

                                        //用户名都错误 的
                                        response.sendRedirect("login.jsp");
                                }

                        } catch (Exception e) {
                                e.printStackTrace();
                        }finally{
                               
                                if(rs!=null){
                                        rs.close();
                                }if(sm!=null){
                                        sm.close();
                                }if(conn!=null){
                                        conn.close();
                                }
                        }
                %>
        </body>
</html>

已经导入了驱动包,如图:




错误信息如图下:


com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
        at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:668)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1078)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2412)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2445)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
        at java.sql.DriverManager.getConnection(DriverManager.java:579)
        at java.sql.DriverManager.getConnection(DriverManager.java:221)
        at org.apache.jsp.loginCl_jsp._jspService(loginCl_jsp.java:100)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3039)
        at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:592)
        ... 34 more

请各位高人指定,小弟感激不尽,谢谢啦

21克爱情 发表于 2012-11-23 09:29

try-catch里面的部分有点问题
把 if(rs.next()) 改为 while(rs.next())试试

LinuxAmateur 发表于 2012-11-23 20:37

回复 2# 21克爱情


    我知道了,是端口号弄错了,mysql的应该是3306,我写到8080了,呵呵,谢谢你了。
页: [1]
查看完整版本: JSP操作mysql数据库