1 / 12

import javax.swing.text.html.*; import java.*; import java.io.*; public class Fetkoll {

1. Skriv programmet Fetkoll som läser igenom valfri webbsida och skriver ut alla ord och fraser som står med fetstil . I HTML anges det med starttaggen <B> och sluttaggen </B>. (Andvändbart i lab6). import javax.swing.text.html.*; import java.net.*; import java.io.*; public class Fetkoll {

Download Presentation

import javax.swing.text.html.*; import java.*; import java.io.*; public class Fetkoll {

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 1.Skriv programmet Fetkoll som läser igenom valfri webbsida och skriver ut alla ord och fraser som står med fetstil. I HTML anges det med starttaggen <B> och sluttaggen </B>. (Andvändbart i lab6)

  2. import javax.swing.text.html.*; import java.net.*; import java.io.*; public class Fetkoll { public static void main(String[] args) { String webbsida="http://www.nada.kth.se/~henrik"; if (args.length>0) { webbsida=args[0]; } try { InputStream in=new URL(webbsida).openConnection().getInputStream(); HTMLDocument doc=new HTMLDocument(); InputStreamReader reader=new InputStreamReader(in); new HTMLEditorKit().read(reader, doc, 0); HTMLDocument.Iterator it=doc.getIterator(HTML.Tag.B); while (it.isValid()) { int start=it.getStartOffset(); int slut=it.getEndOffset(); System.out.println(doc.getText(start, slut-start)); it.next(); } } catch (Exception e) { System.out.println("Kan inte koppla mej till "+webbsida); } } }

  3. Uppg 2. Du ska utveckla ett program för den som vill ha full koll på sina klasskamrater. För varje klasskamrat har man förstås namn och adress. För kamraterna i överklassen noteras dessutom Rolexmodell och yachtsegelyta; för kamraterna i underklassen noteras om dom knarkar, super eller svär.      Objektmodellera med namn och typer på metoder och parametrar och med angivande av eventuella static, public, private osv. I modellen ska en underklass heta Överklass.

  4. Klassdiagram

  5. 3. Ditt program är klart men några problem kvarstår. • Segelyta anges ibland i kvadratmeter, ibland i kvadratfot. För att undvika problem vill du göra segelytan abstrakt. Vad innebär det? (3p) (Visa på tavlan.) • Kompilatorn klagar på en sats i följande avsnitt av Underklass. Vilken och varför? (2p)boolean knarkar(){return knarkare;}boolean super(){return (drinkare==true);}boolean svär(){if(svärare) return true; return false;} • Du skulle vilja göra en applet av programmet men anar klagomål från Datainspektionen. På vilka punkter? Föreslå åtgärd! (3p)

  6. 4. • Ditt klasskamratprogram blev en sådan framgång att du nu tänker sätta upp en webbplats för klasskamrater av alla slag i hela landet. Alla ska kunna lägga in sin egen klass i en stor databas, men för att det ska fungera tänker du bara lägga in XML-filer med av dej specificerade taggar. Föreslå taggar och attribut om man vill ha med uppgifter av följande typ: • Årskurs F-59 på KTHAndersson, Eva, f 40-06-23, barn Bo 1965, Åsa 1968, Pia 1976.Bengtsson, Jan, f 39-11-01, d 99-12-30, barn Jon 1961.Eriksson, Henrik, f 42-01-19, barn Viggo 1964, Kimmo 1967, Jonna 1972.- - - • Skriv början på XML-filen så långt som exemplet går.

  7. XML – eXtensible Markup Language <?xml version="1.0"?> <klasskamrater skola="KTH" klass="F-59"> <kamrat enamn="Andersson" fnamn="Eva"> <födelsedatum år="1940" månad="06" dag="23"> </födelsedatum> <barn fnamn="Bo" födelseår="1965"> </barn> <barn fnamn="Åsa" födelseår="1968"> </barn> <barn fnamn="Pia" födelseår="1976"> </barn> </kamrat> <kamrat enamn="Bengtsson" fnamn="Jan"> <födelsedatum år="1939" månad="11" dag="01"> </födelsedatum> <dödsdatum år="1999" månad="12" dag="30"> </dödsdatum> <barn fnamn="Jon" födelseår="1961"> </barn> </kamrat> <kamrat enamn="Eriksson" fnamn="Henrik"> <födelsedatum år="1942" månad="01" dag="19"> </födelsedatum> <barn fnamn="Viggo" födelseår="1964"> </barn> <barn fnamn="Kimmo" födelseår="1967"> </barn> <barn fnamn="Jonna" födelseår="1972"> </barn> </kamrat> - - - </klasskamrater>

  8. 5. • Din kamratwebbsajt blev en sådan dundersuccé att KTH vill ha upp ett kamratträd på webben, ett JTree där gamlingar ska kunna klicka på KTH-roten och få fram sektionerna, på sin sektion och få fram årskurserna och så vidare. • Du måste nu läsa en jättestor XML-fil och bygga upp detta träd från roten. Till din hjälp har du metoder av det slag som finns i xml.SAX eller i HTML.Document, dvs du itererar automatiskt över starttaggarna och kan avläsa värdet på attributen och eventuell text mellan start och sluttagg. • Skriv helst ingen javakod men beskriv i ord hur du skulle göra, till exempel "...och så skapar jag ett nytt barn till noden och lägger in namnet där och så...".

  9. Man skapar en rotnod med en sats av typen root = new DefaultMutableTreeNode("KTH")och sedan börjar man parsa xml-filen. Varje gång man stöter på starttaggen klasskamrater läser man av attributet skola och kollar att det har värdet KTH. I så fall skapar man en ny nod med det namn som attributet klass och adderar den som barn till rotnoden. När man stöter på starttaggen kamrat skapar man en ny nod och adderar den som barn till aktuell klassnod och när man hittar starttaggen barn skapar man en ny nod och adderar den som barn till aktuell kamratnod. På så sätt skapas ett träd där man kan klicka sej ner till Viggo.

  10. Noderna vi talat om tillhör datamodellen men till varje nod hör också ett grafiskt objekt, till exempel en mappsymbol med namn på. När rotnoden skapades skickade vi med detta namn och det gjorde vi också för klassnoden. Men kamratnoder och barnnoder har så mycket information att den inte får plats på mappikonen. Man får skicka med den som ett informationsobjekt (designmönstret State), alltså till exempel new DefaultMutableTreeNode(new Barndata("Viggo",1964)) Objektet har en toString() som bestämmer vad som ska stå på mappikonen. På samma sätt gör man med kamratnoderna.Den fullständiga informationen kan till exempel komma upp i en JOptionPane om man högerklickar på en kamrat eller ett barn. (Detta används i lab 4)

  11. 6. • Grattis! Din kamratwebbsajt är nu bland dom tio populäraste. Trycket är stort på att den ska byggas ut med en tjattfunktion. Kraven är följande: • Inläggen ska krypteras så att endast klasskamraterna kan läsa dom. • Den som läser ett inlägg ska kunna vara säker på vem som skrivit det. • Om skrivaren så anger ska endast en viss klasskamrat kunna läsa. • Beskriv i ord hur detta ska kunna fungera. Du kan anta att alla som vill vara med på egen hand skaffar sej PGP-nyckel.

  12. Om alla klasskamrater ska kunna läsa inläggen måste dom vara lösenordskrypterade med ett lösenord som alla klasskamrater känner till. Antingen kan ett program slumpa fram ett lösenord för varje klass eller också kan klassens ledargestalt bestämma ett roligt lösenord. Detta skickas till alla klasskamrater, krypterat med mottagarens publika nyckel. • Om man ska kunna vara säker på vem som skrivit ett inlägg måste det ha signerats med avsändarens hemliga nyckel. Men det duger inte att kryptera orden "Morsning! /Hempa" och lägga till sist i filen - då kan ju en skurk lägga detta sist i vilken fil som helst. Vid PGP-signering hashas hela inlägget ihop till ett tjugosiffrigt tal och det är detta tal som krypteras och läggs sist. Mottagaren dekrypterar det med avsändarens publika nyckel och kollar att det blir det tal man får när man hashar inlägget. • Om endast en viss klasskamrat ska kunna läsa måste inlägget vara krypterat med dennes publika nyckel. Tjattprogrammet kan göra det automatiskt om den som skriver begär det. Om det är ett mycket långt inlägg, t ex en bild, kan det ta för lång tid med denna typ av kryptering och då är det bättre med lösenordskryptering där lösenordet skickas över separat och krypterat med publika nyckeln.

More Related