JSP
och Java Servlets (Standard)
|
| 1 |
Hur
mycket kostar det? |
| 2 |
Vad är JSP? |
| 3 |
Vad
är servlets? |
| 4 |
Ska
jag använda servlets eller JSP? |
| 5 |
Vilka filer finns i mitt konto från början? |
| 6 |
Hur
lägger jag upp servlets och JSP? |
| 7 |
Vad
använder Telia Webbhotell Standard för att köra servlets och JSP? |
| 8 |
Varför
ska jag använda servlets och JSP? |
| 9 |
Hur
anropar jag JSP från WEB-Servern? |
| 10 |
Hur
anropar jag servlets från WEB-Servern? |
| 11 |
Har
jag tillgång till en databas? |
| 12 |
Hur
ansluter jag till min databas? |
| 13 |
Kan
mina JSP och servlets skapa data och log filer? |
| 14 |
Hur
skriver jag till filer med JSP och servlets? |
| 15 |
Var
hittar jag bra webbsajter om servlets och JSP? |
| 16 |
Hur använder jag mailformulär? |
| Fråga 1 |
Hur
mycket kostar det? |
| svar |
Det kostar inget och
det är aktiverat från start. |
| Fråga 2 |
Vad
är JSP? |
| Svar |
JavaServer Pages (JSP)
ger utvecklare av webbsidor möjligheten att blanda statisk HTML kod med
dynamiskt genererat innehåll med hjälp av JSP kod (scriptlets) eller
speciella JSP taggar liknande HTML kod. Du kan läsa mer om JSP på
Sun´s JSP site |
| Fråga 3 |
Vad är servlets? |
| Svar |
Servlets är program skrivna i
Java som kompileras och körs på en server, till skillnad från Applets
som körs i klienten. Du kan hitta mer information på Sun's
Servlet Site |
| Fråga 4 |
Ska
jag använda servlets eller JSP? |
| Svar |
Om du skriver en
websida med JSP kod kompileras den alltid automatiskt av servern till
en Servlet som sedan körs. Att använda JSP är ett bra allternativ
om din sida består till största delen av HTML-kod. Du kan alltid
skriva en Servlet direkt vilket kan vara effektivare om det är
mycket Java-kod som behövs. Man blandar ofta användningen
av JSP/HTML för själva sidpresentationen samt att den "nyttiga
logiken" utgörs av Servlets. |
| Fråga 5 |
Vilka
filer finns i mitt konto från början? |
| Svar |
Följande filer finns
i kontot från början och där java[xx] är ett versionsnummer
på JSP och Servlet funktionen:
java[xx]/ META-INF/
context.xml
WEB-INF/
classes/
TestMySQL.class
lib/
web.xml
helloworld.jsp
index.jsp
www/ |
Alla dessa filer och kataloger, utom TestMySQL.class och helloworld.jsp
vilka är en test-servlet respektive en test-JSP, måste vara kvar för att
allt skall fungera.
- /java[xx]/META-INF/context.xml innehåller databaskopplingar och
är beskriven i fråga 11.
- I /java[xx]/WEB-INF/ lägger man sina JSP-filer. Hur står beskrivet
i fråga 6.
- I /java[xx]/WEB-INF/classes lägger man sina servlets. Hur står beskrivet
i fråga 6.
- I /java[xx]/WEB-INF/web.xml kan man lägga in sina servletar för
att få en kortare anropnings-URL. Hur man gör detta står beskrivet
i fråga 9.
|
| Fråga 6 |
Hur
lägger jag upp servlets och JSP? |
| Svar |
Så här gör du:
- Koppla upp dig med FTP till din FTP-adress:
tiw-pro.web.internet.telia.com
- Här ser du en katalog som heter "java[xx]". Observera
att katalogen ska ligga på samma nivå som din www-katalog, dvs utanför
din www-area.
- Du lägger alla dina JSP-sidor direkt i java[xx]-katalogen medan
servlets och övriga class- filer skall läggas i /java[xx]/WEB-INF/classes/
- Efter du laddat upp filerna kan det ta upp till 1 minut innan du
kan köra dem i webbläsaren.
Se till att ställa din FTP-klient i ASCII läge när du laddar upp JSP-sidor
så fungerar det oftast bättre. Glöm dock inte att ställa tillbaka den
till BINARY om du skall ladda upp class-filer. |
| Fråga 7 |
Vad
använder Telia Webbhotell Standard för att köra servlets och JSP? |
| Svar |
Vi kör Tomcat 5.5.7
som Java-servlet motor, med stöd för Java2 v1.5, JSP v2.0 och Servlet
v2.4 API. Du kan läsa mer om Tomcat på http://jakarta.apache.org
|
| Fråga 8 |
Varför
ska jag använda servlets och JSP? |
| Svar |
Med servlets och JSP
kan du göra allt som du kan göra med traditionella CGI-script, och mer.
JSP och Servlets är kraftfullare och dessutom portabla. |
| Fråga 9 |
Hur anropar
jag JSP sidor på webservern? |
| Svar |
Dina JSP sidor kör du genom att anropa dem som vanliga HTML sidor:
http://tiw-pro.web.internet.telia.com/~****/java[xx]/helloworld.jsp
Om du har en egen domän kan du anropa via
http://www.domän.se/java[xx]/helloworld.jsp
|
| Fråga 10 |
Hur anropar
jag Servlets på webbservern? |
| Svar |
För att köra dina servlets (ex:
raknare.class) från webbservern skall du skriva:
http://tiw-pro.web.internet.telia.com/~****/java[xx]/servlet/TestMySQL
där **** är det konto-id som du har hos oss. På ditt FTP-inloggnings-konto
hittar du en fil som heter tiw-pro.txt, där finns information om ditt
konto-id.
Om du har en egen domän kan du anropa via
http://www.domän.se/java[xx]/servlet/TestMySQL
Du kan även anropa servleten via
http://tiw-pro.web.internet.telia.com/~****/java[xx]/TestMySQL
eller
http://www.domän.se/java[xx]/TestMySQL
men då måste du definiera servleten i filen /java[xx]/WEB-INF/web.xml. I
filen finns redan ett exempel på hur man gör detta. Se
Exempel TestMySQL |
| Fråga 11 |
Har
jag tillgång till en databas? |
| Svar |
Detta beror på om
du har aktiverat den (kontakta kundtjänst). Det finns stöd för både MySQL
och Microsoft SQL Server. |
| Fråga 12 |
Hur
ansluter jag till min databas? |
| Svar |
För att ansluta till
din databas behöver du först skriva in dina användaruppgifter i filen
/java[xx]/META-INF/context.xml
Den filen ser ut ungefär så här:
<Context path="" reloadable="true"
crossContext="false"> <!--- För MySQL --->
<Resource name="jdbc/mysqlDB" auth="Container" type="javax.sql.DataSource"
username="ANVÄNDARNAMN" password="LÖSENORD"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/DATABASNAMN"
maxActive="8" maxIdle="4"/> <!---
För Microsoft SQL Server ---> <Resource name="jdbc/mssqlDB"
auth="Container" type="javax.sql.DataSource"
username="ANVÄNDARNAMN" password="LÖSENORD"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:3306/DATABASNAMN"
maxActive="8" maxIdle="4"/> </Context>
|
Där finns ett stycke för MySQL (överst i stycket i exemplet ovan) upplagt
och ett för Microsoft SQL Server (nederst i stycket i exemplet ovan).
Beroende på vilken det är som du skall använda så skriver du in ditt användarnamn,
ditt lösenord samt databasnamnet. Efter man skrivit in sin kontoinformation
börjar databasanslutningen att fungera efter att Tomcat har startats om
(Detta sker vid kl 09:00, 12:00 och 15:00).
För att sedan använda databasen i din kod gör du t ex så här:
//Hämta ut datakällan
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/mysqlDB");
//Skapa en connection och definera en sql-fråga
Connection conn = ds.getConnection();
String sql = "select * from test";
//Kör frågan och spara resultatet i ett ResultSet
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql); |
Koden ovan ger dig ett resultat i ett ResultSet som kan användas för att
komma åt det som frågan genererade. Om du använder Microsoft SQL Server
istället för MySQL byter du ut "mysqlDB" (på den 4:e raden) till "mssqlDB".
|
| Fråga 13 |
Kan
mina JSP och servlets skapa data och log filer? |
| Svar |
Ja, du kan skapa,
ändra och ta bort filer i din hemkatalog, det vill säga i katalogen där
du ser katalogerna "www" och "java[xx]", och alla kataloger du skapar där
under. |
| Fråga 14 |
Hur
skriver jag till filer med JSP och servlets? |
| Svar |
I din Javakod så
anger du följande sökväg till filen,
t ex: /web/****/java[xx]/olle.dat, där **** är det konto-id som du har hos
oss. På ditt FTP-inloggnings-konto hittar du en fil som heter tiw-pro.txt,
där finns information om ditt konto-id. Exampel:
Denna servlet skriver raden "Kan jag skriva till filer?" till
filen olle.dat. Glöm inte att ersätta **** i sökvägen för filen med
ditt konto-id.
När du sedan kör servleten så ska den returnera raden:
Skrev till filen: /web/****/java[xx]/olle.dat
Om den inte kunde skriva till filen returneras:
Skrev till filen: null
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.net.*; public class SkrivFil extends HttpServlet
{
public void doGet (HttpServletRequest req,HttpServletResponse
res)
throws ServletException, IOException
{
res.setContentType("text/html");
PrintWriter pw
= res.getWriter();
URL f_path=null;
try
{
File f=new File("/web/****/java[xx]/olle.dat");
FileWriter fw=new FileWriter(f);
fw.write("Kan jag skriva till filer?");
f_path=f.toURL();
fw.close();
}
catch(FileNotFoundException
e)
{
System.err.println("Filen finns inte...");
}
catch(IOException
e)
{
System.err.println("I/O fel: " + e.getMessage());
}
pw.println("Skrev till
filen: " +f_path );
}
} |
|
| Fråga 15 |
Var
hittar jag bra webbsajter om servlets och JSP? |
| Svar |
|
| Fråga 16 |
Hur
använder jag mig av mailformulär? |
| Svar |
Om du vill skapa ett
formulär som kan skicka ut mail kan du använda dig av följande fält:
| Namn |
Förklaring |
Krav |
| from |
Avsändare |
Ja |
| to |
Mottagare |
Ja |
| cc |
Kopior |
Nej |
| bcc |
Dolda kopior |
Nej |
| subject |
Ämne |
Nej |
| message |
Meddelandetext |
Nej |
| redirect |
Sida vid OK |
Nej |
| onErrorPage |
Sida vid fel |
Nej |
| type |
HTML eller text |
Nej |
- ”from” skall vara avsändarens e-mailadress. Det är ett krav att den
innehåller en korrekt e-mailadress för att mailet skall skickas.
- "to” skall vara en mottagares e-postadress, eller flera mottagares
e-mailadresser kommaseparerade. Dessa måste vara korrekta e-mailadresser
för att mailet skall skickas.
- "cc” skall vara en mottagares e-mailadress, eller flera mottagares
e-mailadresser kommaseparerade. Denna skickar kopior av e-mailet.
- "bcc” skall vara en mottagares e-mailadress, eller flera mottagares
e-mailadresser kommaseparerade. Denna skickar dolda kopior av e-mailet.
- ”subject” innehåller titeln på e-mailet.
- "message” är själva texten i e-mailet.
- ”redirect” kan man sätta till en URL om man vill att användaren
automatiskt skall skickas vidare till en URL om mailet skickades utan
problem. Sätter man inte denna stannar användaren vid en text från
MailServlet där det står att mailet skickats.
- ”onErrorPage” är liknande ”redirect”, men istället är detta en URL
som användaren skickas till när något gick fel med sändandet av mailet.
Sätter man inte denna stannar användaren vid en text från MailServlet
där det står en problembeskrivning. Om man har satt ”onErrorPage” så
skickas även en variabel med till URL:en som heter ”error”. Om
mottagarsidan är ens egen sida kan man då, om man vill, plocka ut
felmeddelandet och visa det för användaren.
- "type" markerar om innehållet i mailet skall betraktas som text
eller html. Sätter man inte denna är standard att innehållet betraktas
som text.
När man skapar ett formulär och lägger på sin sida så är det brukligt att
man inte tillåter användaren själv att få fylla i några fält förutom "subject"
och "message". Dessa fält fyller man i med standardvärden och gömmer från
användaren (se exemplet nedan). Annars kan anonyma personer använda din
hemsida och ditt mailformulär för att skicka skräppost.
Exempelformulär:
<html>
<head><title>Send test</title></head>
<body>
<form method="POST" action="http://www.DOMAIN.com/java1/MailServlet">
<table>
<input type="hidden" name="from" value=”avsandare@telia.com”>
<input type="hidden" name="to" value=”mottagare@telia.com”>
<input type="hidden" name="cc" value="kopia1@telia.com,kopia2@telia.com">
<input type="hidden" name="bcc" value="doldkopia@telia.com">
<input type="hidden" name="redirect" value="http://www.telia.com">
<input type="hidden" name="onErrorPage" value="http://www.google.com">
<input type="hidden" name="type" value="text">
<tr>
<th align="center" colspan="2">
Enter The E-mail Message To Be Sent
</th>
</tr><tr>
<th align="right">Subject:</th>
<td align="left">
<input type="text" name="subject" size="60">
</td>
</tr><tr>
<td colspan="2">
<textarea name="message" rows="10" cols="80"></textarea>
</td>
</tr><tr>
<td align="right">
<input type="submit" value="Send">
</td>
<td align="left">
<input type="reset" value="Reset">
</td>
</tr>
</table></form></body></html>
|
De fält som du inte vill ha med från exmeplet och som enligt tabellen inte
är krav kan du ta bort. Utöver fälten som är beskrivna behöver formuläret
veta var informationen skall skickas. Detta skriver man in i "action" i <form>-taggen.
Den korrekta URL:en som skall stå där är: "http://www.DOMAIN.com/java1/MailServlet".
Den pekar på Telias egna mailutskickare.
|