저는 레스토랑에 대한 온라인 예약 응용 프로그램을 만들려고합니다. html 파일은 서블릿을 호출합니다. 이 서블릿은 MSSQL 데이터베이스를 사용하여 예약을 추적합니다. 문제는 서블릿이 데이터베이스에 연결하려고 할 때 예외를 throw한다는 것입니다 (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);
}
}
추신 : 여기
는 servlet`s 코드 나는 Windows XP에서 아파치 톰캣 서버를 사용하고
먼저 답장을 보내 주셔서 감사합니다. lib에 JAR 파일을 넣었으니 이제는 잘 작동합니다! 두 번째로, 우리는 방금 대학에서 서블릿을 배우기 시작했기 때문에 JSP가 아닌 서블릿 만 사용해야했습니다. JSP로이 작업을 수행하는 더 좋은 방법이있을 것이라고 확신하지만,이 작업을 수행하도록 지정되었습니다. :) 그러나 우리는 그것에 대해서도 이해할 것입니다. 다시 한 번 감사드립니다! e.printStackTrace()를 출력하는 방법을 알려주시겠습니까? 간단한 자바에서하는 방법을 알고 있지만 출력을 HTML로 보내고 싶다면? 나는 시도했다.하지만 void를 리턴하는 메소드는 printWriter를 통해 html로 보내질 수 없다고 말하면서, – Liviu
대신'e.printStackTrace (out);'를 사용하자. 그러나 이것은 올바른 접근법이 아닙니다. ** 예외를 던져야합니다. '새로운 ServletException을 던지십시오 ("예외가 발생했습니다", e);'당신이 이미 그 HTML *을 그 시점 이전에 모두 작성하지 않았는지 확인하십시오. JSP에서 HTML이 모두 포함됩니다. 서블릿 태그 정보 페이지가 유용하다는 것을 알 수 있습니다 : http://stackoverflow.com/tags/servlets/info – BalusC