我有一个简单的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调用中的函数需要更多时间来建立所需的连接。