ITK:P2
F10
Java servlets och
databaskopplingar
DSV Peter Mozelius
1
Repetition Tomcat
Anropa Tomcat genom:
http://127.0.0.1:8080/
http://localhost:8080/index.jsp
2
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
3
Repetition Tomcat
Två andra miljövariabler är:
JAVA_HOME (Exempelvis: C:\jdk1.5.x\)
och
CATALINA_HOME (Sökvägen
till Tomcat)
4
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\
5
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
6
JDBC
Gemensamt API
Olika drivrutiner
7
java.sql
Genom import java.sql.*; så ges
tillgång till klasser för metadata:
ResultSet resultSet =
statement.executeQuery(”SELECT …”);
ResultSetMetaData metaData =
resultSet.getMetaData();
8
MSAccess
Skapa t ex en tabell som heter ITK i en
databas som heter p2
9
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)
10
Att registera datakällan
I WinXP ska en Access-databas också
registreras som en ODBC-datakälla
Detta görs i Kontrollpanelen under
Administrationsverktyg
11
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!
12
MySQL
En på Internet mycket vanlig relationsdatabas
Finns både i kommersiella och gratisversioner
Liten, snabb och stabil
Det finns andra mer avancerade databaser
13
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
14
Databaskoppling i Java
En databaskoppling till MySQL kan
ske enligt:
1.
2.
3.
4.
5.
Registrera JDBC-drivrutinen
Etablera kontakten med databasen
Exekvera en SQL-fråga
Bearbeta resultatet av SQL-frågan
Koppla ner och stäng
15
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)
16
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://lo
calhost/uppgiftE?user=mia&password=47x2");
17
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");
18
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");
19
Bearbeta resultatet
Klassen
ResultSet har två
andvändbara metoder:
next()
previous()
while ( resultSet.next() ){
out.println("<tr>");
out.println("<td>" +
resultSet.getString(…
20
Koppla ner och stäng
Stäng ner det som öppnats:
out.close();
statement.close();
connection.close();
Vi tittar nu på kompendiumet som sammanfattar det vi har gått igenom OCH tar även
15 minuters PAUS!
21
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
22
Servlet-tekniker
HttpServletRequest har en metod
som hämtar in användarens angivna
parametrar
request.getParameter()
Parametrarna skrivs in på klientsidan i
rutor skapade med <input …
23
Parametrar
I din XHTML-fil:
<form
…
<input type = "text" name = "fnamn"
value ="James" />
<input type = "text" name = "enamn"
value ="Gosling" />
24
Parametrar
I din servlet:
public void doGet(HttpServletRequest
req, HttpServletResponse res){
String fNamn =
req.getParameter("fnamn");
String eNamn =
req.getParameter("enamn");
25
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
26
Cookies
Cookies finns i ett flertal språk
I Java finns
javax.servlet.http.Cookie
Cookie kaka =
new Cookie(name, value);
allaSessionensKakor =
request.getCookies()
27
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>");
}
28
Slut på P2s föreläsningar
29