Java servlets och databaskopplingar ITK:P2 F10 Java servlets och databaskopplingar DSV Peter Mozelius
Repetition Tomcat Anropa Tomcat genom: http://127.0.0.1:8080/ http://localhost:8080/index.jsp
Repetition Tomcat Om du använder JDK standard edition Se till så att servlet-api.jar finns med i CLASSPATH Exempelvis: SET CLASSPATH= .;E:\tomcat\lib\servlet-api.jar OBS jar-filen heter i äldre versioner servlet.jar I autoexec.bat för Win9X I kontrollpanelen/miljövariabler för WinXP
Repetition Tomcat Två andra miljövariabler är: JAVA_HOME (Exempelvis: C:\jdk1.5.x\) och CATALINA_HOME (Sökvägen till Tomcat)
Tomcat konfigurationsfiler Tomcat har flera konfigurationsfiler Två av dem är: web.xml mappning av servlets CATALINA_HOME\webapps\P2\WEB-INF\ server.xml CATALINA_HOME\conf\
ODBC - JDBC Open Data Base Connectivity Microsoftstandard för databaskopplingar JDBC framtagen av Javasoft Motsvarighet för att koppla från Java En huvudpoäng är interoperabilitet
JDBC Gemensamt API Olika drivrutiner
java.sql ResultSet resultSet = ResultSetMetaData metaData = Genom import java.sql.*; så ges tillgång till klasser för metadata: ResultSet resultSet = statement.executeQuery(”SELECT …”); ResultSetMetaData metaData = resultSet.getMetaData();
MSAccess Skapa t ex en tabell som heter ITK i en databas som heter p2
MSAccess från Java Tabellen ITK kan också skapas med kod från en servlet: Statement statement = connection.createStatement(); statement.execute("create table ITK (kolumn integer)"); (om det finns en koppling till databasen p2)
Att registera datakällan I WinXP ska en Access-databas också registreras som en ODBC-datakälla Detta görs i Kontrollpanelen under Administrationsverktyg
Att koppla datakällan Datakällans namn ska sedan anges när en koppling skapas från koden i din servlet: Connection connection = DriverManager.getConnection(… 15 minuters rast!
MySQL En på Internet mycket vanlig relationsdatabas Finns både i kommersiella och gratisversioner Liten, snabb och stabil Det finns andra mer avancerade databaser
MySQL MySQL har blivit enklare att installera och mer lättanvänd i de senaste versionerna MEN, allt är inte intuitivt och lättillgängligt Information och stödprogram finns att hämta på: http://dev.mysql.com/doc/ Den som vill får även ett kompendium för framtida bruk
Databaskoppling i Java En databaskoppling till MySQL kan ske enligt: Registrera JDBC-drivrutinen Etablera kontakten med databasen Exekvera en SQL-fråga Bearbeta resultatet av SQL-frågan Koppla ner och stäng
Registrera drivrutinen Innan JDBC-drivrutinen kan användas så ska den registreras: try{ Class.forName("org.gjt.mm.mysql.Driver”); } catch (ClassNotFoundException cnfe) { out.println(”Det gick inte att ladda drivrutinen: " + cnfe.getMessage()); } (En JDBC-drivrutin är en javaklass nåbar via CLASSPATH)
Etablera kopplingen När drivrutinen är laddad går det sedan bra att upprätta en koppling till MySQL genom: jdbc:mysql://SERVER/DATABASE_NAME Vilket i en koppling lokalt till den egna datorn kan se ut enligt: Connection connection = DriverManager.getConnection(”jdbc:mysql://localhost/uppgiftE?user=mia&password=47x2");
Etablera kopplingen En liten databas finns någonstans på den världsvida väven Koppla dig dit enligt: Connection connection = DriverManager.getConnection(” jdbc:mysql://server.adress.se/user=peter &password=hemligt");
Exekvera en SQL-fråga När det finns en koppling till databasen går det sedan bra att köra SQL-frågan: Statement stmt = connection.createStatement(); ResultSet resultSet = stmt.executeQuery("SELECT * FROM ITKP2");
Bearbeta resultatet Klassen ResultSet har två andvändbara metoder: next() previous() while ( resultSet.next() ){ out.println("<tr>"); out.println("<td>" + resultSet.getString(…
Koppla ner och stäng Stäng ner det som öppnats: out.close(); statement.close(); connection.close(); Vi tittar nu på kompendiumet som samman- fattar det vi har gått igenom OCH tar även 15 minuters PAUS!
ITK:ID Att känna till lite om hur man kopplar sig till en databas är inte enbart bra att veta när man skriver P2s tentamen Databaser och servlets är mycket användbart för ITK:ID
Servlet-tekniker request.getParameter() HttpServletRequest har en metod som hämtar in användarens angivna parametrar request.getParameter() Parametrarna skrivs in på klientsidan i rutor skapade med <input …
Parametrar I din XHTML-fil: <form … <input type = "text" name = "fnamn" value ="James" /> <input type = "text" name = "enamn" value ="Gosling" />
Parametrar I din servlet: String fNamn = req.getParameter("fnamn"); public void doGet(HttpServletRequest req, HttpServletResponse res){ String fNamn = req.getParameter("fnamn"); String eNamn = req.getParameter("enamn");
Cookies Med kakor så kan besökarnas individuella önskemål registreras och kommas ihåg En vanlig MEN omdiskuterad teknik I en del webbläsare är kakfunktionen avstängd Från början en Netscape extension Cookies är inte en del av HTTP utan en bit data som kan bäddas in i en request | response
Cookies Cookies finns i ett flertal språk I Java finns javax.servlet.http.Cookie Cookie kaka = new Cookie(name, value); allaSessionensKakor = request.getCookies()
Samla ihop dina kakor Lägg in dem i en kakburk: Cookie[] kakburk = req.getCookies(); Skriv ut dina kakor: for(int i = 0; i < kakburk.length; i++) { out.println("<tr><td>" + kakburk[i].getName() + "</b></td>"); out.print("<td>" + kakburk[i].getValue() + "</td></tr>"); }
Slut på P2s föreläsningar Tack för i år!