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