调用ajax请求后java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver

时间:2014-01-03 15:49:59

标签: java jquery sql-server ajax jdbc

我有一个简单的index.html文件:

<!DOCTYPE HTML><html lang="de-DE">
<head>
    <title>DISPO Truck Star</title>
    <meta http-equiv="CONTENT-TYPE" content="text/html" charset="UTF-8">
    <link rel="stylesheet" href="jquery.mobile-1.3.2.css"/>

    <meta name="viewport" content="width=device-width, initial-scale=1 user-scalable=no"/>  
    <script src="jquery-1.9.1.min.js"></script>
    <script src="jquery.mobile-1.3.2.js"></script>

    <!-- weitere Scripts -->
    <script src="js/main.js"></script>

    <!-- Einstellungen zur Definition als WebApp -->
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
</head>
<body>
<div data-role="page" id="anmeldeBildschirm">
<div data-role="header" data-position="fixed">DISPO</div>
        <div data-role="content" id="anmeldeBildschrimInhalt">
            <div data-role="fieldcontain">
                <label for="FahrerAuswahl" class="select">Fahrer:</label>
                <select name="FahrerAuswahl" id="FahrerAuswahl"></select> <!-- Die Auswahl wird hier mit JavaScript dynamisch hinzugefügt -->
            </div>

            <div data-role="fieldcontain" id="PINLabel">
                <label for="password">PIN:</label>
                <input type="password" name="password" id="password" value="" data-clear-btn="true" />
            </div>

            <div data-role="fieldcontain">
                <label for="AufliegerAuswahl" class="select">Auflieger:</label>
                <select name="AufliegerAuswahl" id="AufliegerAuswahl"></select> <!-- Die Auswahl wird hier mit JavaScript dynamisch hinzugefügt -->
            </div>

            <div data-role="footer" id="anmeldeBildschirmFooter" data-position="fixed" data-tap-toggle="false">
                <div data-role="navbar">
                    <ul>
                        <li><a href="#startscreen" data-role="button"  data-icon="back">Zum Start</a></li>
                        <li><a href="#changePass"  data-role="button" data-rel="dialog" data-icon="refresh">PIN ändern</a></li>
                        <li><a data-role="button" id="zuDenTourenButton" onclick="vergleicheFahrer()" data-icon="arrow-r">Touren</a></li>
                    </ul>
                </div>
            </div>
        </div>

    </div>

在文本字段“password”中输入密码,在点击“Touren”按钮后,应将密码与存储在数据库中的密码进行比较。按钮单击会触发一个事件,然后调用以下函数:

function vergleicheFahrer(){
var pinCode = $('#password').val();
$.ajax({
    type: 'GET',
    url: rootURL + '/' + pinCode, // var rootURL = "http://localhost:8080/DISPOTruckStar-Backend/rest/api";
    dataType: "json",
    success:  function(data){
        alert("Very wonderful! You received following data:" + data);
        retrieveTourContent();
    },
    error: function(){
        alert("Fehler in der Methode vergleicheFahrer()");
        }
});}

请求通过并调用成功函数,但Eclipse控制台显示找不到com.microsoft.sqlserver.jdbc.SQLServerDriver。这里是处理“GET”请求的代码:

@Path("/api")
public class RestResource {
FahrerTruckModellDAO fahrerTruckModellDAO = new FahrerTruckModellDAO();

@GET @Path("{PinCode}")
@Produces({MediaType.APPLICATION_JSON})
public String getFahrerByPinCode(@PathParam("PinCode") String pinCode)
{
    return FahrerTruckModellDAO.getFahrerByPinCode(pinCode);

}
}

DAO对象代码:

public class FahrerTruckModellDAO {

/*public static void main(String[] args) {
    getFahrerByPinCode("1402");
}*/

public static String getFahrerByPinCode(String pinCode)
{
    String query = "SELECT * from dbo.tDriver WHERE PinCode = ?";
    Connection connection = null;
    try 
    {
        connection = Database.getConnection();
        PreparedStatement preparedStatement = connection.prepareStatement(query);
        preparedStatement.setString(1, pinCode);
        ResultSet resultSet = preparedStatement.executeQuery();
        if(resultSet.next())
        {
            String resultvalue = resultSet.getString(2);
            return resultvalue;
        }
    } 

    catch (Exception e) 
    {
        e.printStackTrace();
    }

    return null;
 }
}

最后是“getConnection()”方法的代码:

public static Connection getConnection() throws Exception{
    try
    {
        String url = "jdbc:sqlserver://MINPKRT_270913\\SQLEXPRESS;databaseName=TRUCK_DB;integratedSecurity=true";

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        Connection connection = DriverManager.getConnection(url);
        return connection;
    }

    catch(Exception ex)
    {
        ex.printStackTrace();
        return null;
    }
}

在ajax请求之后我得到了上面提到的异常,但是在DAO类中启动main方法的注释代码后,我得到了所需的连接并找到了驱动程序。我还在类路径和路径变量中添加了MS SQL Server 2008的jdbc驱动程序的.jar文件的路径。我想这是我指定的错误URL(“localhost / ...”)或者ajax调用中的函数需要更多时间来建立所需的连接。

0 个答案:

没有答案