私はレストランのオンライン予約アプリケーションを作成しようとしています。 htmlファイルはサーブレットを呼び出します。このサーブレットは、MSSQLデータベースを使用して予約を追跡します。問題は、サーブレットがデータベースに接続しようとすると例外をスローすることです(getMessage()メソッドはこれを返します: "com.microsoft.jdbc.sqlserver.SQLServerDriver")。 jdbcドライバにmsbase.jar、mssqlserver.jar、msutil.jarを追加しました。私はMSSQLを使用するたびにこの方法を行いました。それはいつも働いていました MSSQLに接続するためにサーブレットを取得するために何か必要なことはありますか?サーブレットのcu mssqlデータベースに接続できません
public class AddReservation extends HttpServlet{
public void doGet(HttpServletRequest cerere, HttpServletResponse raspuns)
throws ServletException, IOException{
PrintWriter out = raspuns.getWriter();
String nume,zi,luna,an,data,ora,minute;
//get parameters from html
raspuns.setContentType("text/html");
out.println("<HTML><HEAD></HEAD><BODY>");
if(nume.equals("")||zi.equals("")||luna.equals("")||an.equals("")||ora.equals("")||minute.equals("")){
out.println("<H3>NU S-AU COMPLETAT TOATE CAMPURILE</H3>");
}
else{
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://LAPTOP-TITI;DatabaseName=Restaurant_Servlet","sa","pass313307");
Statement st = con.createStatement();
data = zi+"/"+luna+"/"+an;
ora = ora +":"+minute;
ResultSet rs;
rs = st.executeQuery("select count(*) from Rezervari where Data ='"+data+"' and Ora ='"+ora+"'");
rs.next();
int n = rs.getInt(1);
if(n==2){
out.println("<H3>NU EXISTA LOCURI LIBERE</H3>");
}
else{//add to db
st.executeUpdate("insert into Rezervari(Nume, Data, Ora) values ('"+nume+"','"+data+"','"+ora+"')");
out.println("<H3>REZERVARE ADAUGATA</H3>");
}
rs.close();
st.close();
con.close();
}
catch(Exception e){
out.println("<H3>NU S-A REALIZAT CONEXIUNE LA BAZA DE DATE<br><br>"+
e.getMessage()+"</H3>");
}
}
out.println("</BODY></HTML>");
out.close();
}
public void doPost(HttpServletRequest cerere, HttpServletResponse raspuns)
throws ServletException, IOException{
doGet(cerere,raspuns);
}
}
P.S.:ここ
はservlet`sコードです私はWindows XP上でApache Tomcatサーバーを使用しています
まずはご返信ありがとうございます。私はlibにJARを入れて、今は正常に動作します!次に、大学でサーブレットを学び始めたので、JSPではなくサーブレットだけでサーブレットを行う必要があったのです。私はJSPでこれを行うより良い方法があると確信していますが、これは私が割り当てられたものです:)しかし、私たちもそれに気をつけます。再度、感謝します! e.printStackTrace()を出力する方法を教えてください。私は単純なJavaでそれを行う方法を知っていますが、出力を自分のHTMLに送信したいのですか?私は試しましたが、voidを返すメソッドをprintWriter経由でhtmlに送ることはできません。 – Liviu
代わりに 'e.printStackTrace(out);'を使用してください。しかし、これは正しいアプローチではありません。あなたは**例外を投げるべきです**。 '新しいServletExceptionをスローする(例外が発生した、e);'まだそのHTML *をポイントの前にすべて書き込んでいないことを確認してください。そのHTMLはすべてJSPに属しています。サーブレットのタグ情報ページは便利です:http://stackoverflow.com/tags/servlets/info – BalusC