【问题标题】:How to use mysql-connector-driver with jsp [duplicate]如何在jsp中使用mysql-connector-driver [重复]
【发布时间】:2016-03-08 17:01:01
【问题描述】:

我需要使用 JSP 创建登录,所以我需要使用 mysql-connector-java

我将文件 jar:mysql-connector-java-5.1.38-bin.jar 插入到 WEB-INF/lib

我将这段代码用到jsp文件中:

<%@ 
        page import="java.sql.*"
    %>

<%
    String DRIVER = "com.mysql.jdbc.Driver";
    String URL_mioDB = "jdbc:mysql://localhost:3306/ditta";

    try
    {
       Class.forName(DRIVER);
    } 
    catch (ClassNotFoundException e) 
    {
       System.err.println("Driver not found" + e);
    } 

    Connection connessione = null;
    try
    {
       // apro la connesione verso il database.
       connessione = DriverManager.getConnection(URL_mioDB,"root","");
    } 
    catch (Exception e)
    {
       System.err.println("Error during connection with db : " + e);
    } 

    String mail="",pass="",send="",query="";

    try
    {
        mail=request.getParameter("email");
        pass=request.getParameter("password");
        send=request.getParameter("send");

        out.println("<FORM name='F1' method='post' action='login.jsp'>");
            out.println("Email: <INPUT type='text' name='email' value='' placeholder='mariorossi@gmail.com'><BR><BR>");
            out.println("Password: <INPUT type='password' name='password' value=''><BR><BR>");
            out.println("<INPUT type='submit' name='send' value='Invia'>&nbsp;&nbsp;&nbsp;&nbsp;<INPUT type='reset' name='reset' value='Reset'>");
        out.println("</FORM>");
    }
    catch (Exception e)
    {
       System.err.println(e);  
    } 

    if(send!=null && mail!="" && pass!="")
    {
        query="SELECT * FROM dipendenti WHERE email="+ mail + " AND password=" + pass + "";

        Statement statement = connessione.createStatement();
        ResultSet resultSet = statement.executeQuery(query);
        ResultSetMetaData rsmd = resultSet.getMetaData();

        for(int i=0;i<=rsmd.getColumnCount();i++)
        {
            out.println(resultSet.getString(i));
            }
    }

%>

之后,当我点击发送按钮时,页面给我这个错误:

errors image

【问题讨论】:

  • 不知何故,您粘贴的错误(“...处理 JSP 页面时发生异常...”)不应该是您收到的唯一错误消息。尝试在日志中搜索更具体的消息。

标签: java mysql jsp mysql-connector


【解决方案1】:

在这里猜一猜……

我想这可能与您如何将参数值传递到查询中有关。因此,如果邮件是“a@a.com”并且密码是“a”,那么您的查询最终会是:

SELECT * FROM dipendenti WHERE email=a@a.com AND password=a

这不是正确的 SQL。您缺少引号/撇号。我会尝试达到这样的查询:

SELECT * FROM dipendenti WHERE email='a@a.com' AND password='a'

这需要对您的定义方式进行简单的更改

query=...

同时,我知道这不是您在这里要问的,但我强烈建议您阅读有关 SQL Injection on Wikipedia 的内容。您在这里所做的并不是接受用户输入到您的后端程序并最终输入到数据库中的正确方法。

对于这个非常具体的用例,JDBC(和数据库)有一个预处理语句的概念: http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

所以你会从类似的东西开始:

    // not tested
    query="SELECT * FROM dipendenti WHERE email=? AND password=?";
    PreparedStatement statement = connessione.prepareStatement(query);

    statement.setString(1, mail);
    statement.setString(2, pass);

    ResultSet resultSet = statement.executeQuery();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多