2I1073 Lektion 2

21
2I1073 Lektion 2 KTH-MI Peter Mozelius Servlets, säkerhet, och filhantering

description

2I1073 Lektion 2. Servlets, säkerhet, och filhantering. KTH-MI Peter Mozelius. Lektion 2a. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Lektion2a extends HttpServlet { public void doGet(HttpServletRequest req, - PowerPoint PPT Presentation

Transcript of 2I1073 Lektion 2

Page 1: 2I1073 Lektion 2

2I1073 Lektion 2

KTH-MI Peter Mozelius

Servlets, säkerhet,och filhantering

Page 2: 2I1073 Lektion 2

Lektion 2a

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Lektion2a extends HttpServlet {

public void doGet(HttpServletRequest req,

HttpServletResponse res)

throws ServletException,

IOException {

Page 3: 2I1073 Lektion 2

Lektion 2a

res.setContentType("text/html");

PrintWriter out = res.getWriter();

String protokoll = req.getProtocol();

// Skriv ut som ett validerande XHTML1.1-dokument

out.println(

"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"");

out.println(

"\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">");

out.println(

"<html xmlns =\"http://www.w3.org/1999/xhtml\">");

Page 4: 2I1073 Lektion 2

Lektion 2a

out.println(" <head>");out.println( " <meta http-equiv=\"Content-Type\" content=\"text/html;" +

"charset=iso-8859-1\" />"); out.println(" <title>2I1073-Lektion2a</title>" );out.println(" </head>" ); out.println(" <body>" );out.println(" <h2>Hej, detta är en hälsning via " + protokoll + "</h2>" );out.println(" </body>" );

Page 5: 2I1073 Lektion 2

Lektion 2a

out.println("</html>" ); out.close();

}//doGet

public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req, res); }//doPost}//Lektion2a

Page 6: 2I1073 Lektion 2

Lektion 2b - web.xml

<!-- Definition   --> - <servlet> 

<servlet-name>

Lektion2a

</servlet-name>

 

<servlet-class>

Lektion2a

</servlet-class>  

</servlet>

Page 7: 2I1073 Lektion 2

Lektion 2b - web.xml

<!-- Mappning   --> - <servlet-mapping>

  <servlet-name>

Lektion2a

</servlet-name>  

<url-pattern>

/Lektion2a

</url-pattern>  

</servlet-mapping> 

</web-app> 15 min paus!

Page 8: 2I1073 Lektion 2

Lektion 2c

import java.io.*;

import java.security.*;

public class Lektion2c {

public static void main(String[] args) {

String recept = "";

//öppna filen med recept och läs in

BufferedReader receptFil = null;

Page 9: 2I1073 Lektion 2

Lektion 2c

try { receptFil = new BufferedReader(

new FileReader("recept.fil")); String rad; while((rad = receptFil.readLine()) != null) recept += "\n" + rad;

} catch (FileNotFoundException fnfe){ System.err.println("Filen hittades inte!"); System.exit(1);

} catch (IOException e){ System.err.println("Filen gick inte att läsa!"); System.exit(2); }

Page 10: 2I1073 Lektion 2

Lektion 2c

//låt klassen MessageDigest beräkna ett kontrollvärde byte[] buffer = recept.getBytes(); try { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(buffer); System.out.println(md.digest()); System.out.print("är kontrollvärdet för följande recept: \n\n"); System.out.println(recept); } catch(NoSuchAlgorithmException nsae) { System.err.println(nsae.getMessage()); } }//main

Page 11: 2I1073 Lektion 2

Lektion 2d

import java.io.*;import javax.swing.*;

import javax.swing.filechooser.*;

import java.awt.*;

import java.awt.event.*;

public class Lektion2d extends JFrame {

private Container container;

private JTextField infoRuta;

private JTextArea meddelandeRuta;

private JPanel nordPanel, mittPanel, sydPanel;

Page 12: 2I1073 Lektion 2

Lektion 2d

private JMenuBar filBar; private JMenu arkivMeny; private JMenuItem mItem; private String filnamn;

public Lektion2d() { skapaGränsSnitt(); } public void skapaGränsSnitt() { this.setSize(400, 200); this.setTitle(“MIwebb, en liten filläsare för Lektion2.");

Page 13: 2I1073 Lektion 2

Lektion 2d

container = this.getContentPane(); container.setLayout(new BorderLayout());

nordPanel = new JPanel();

container.add(nordPanel, BorderLayout.NORTH);

mittPanel = new JPanel();

mittPanel.setBackground(new Color(255,255,255));

mittPanel.setSize(400, 150);

meddelandeRuta = new JTextArea();

mittPanel.add(meddelandeRuta);

container.add(mittPanel, BorderLayout.CENTER);

Page 14: 2I1073 Lektion 2

Lektion 2d

sydPanel = new JPanel(); sydPanel.setLayout(new GridLayout(1, 2)); infoRuta = new JTextField("Läs in en fil genom att välja Öppna från Arkiv-menyn här ovanför!"); sydPanel.add(infoRuta); container.add(sydPanel, BorderLayout.SOUTH);

setJMenuBar(skapaArkivMeny());

setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true);

}//skapaGränsSnitt

Page 15: 2I1073 Lektion 2

Lektion 2d

public JMenuBar skapaArkivMeny() { filBar = new JMenuBar(); arkivMeny = new JMenu("Arkiv"); arkivMeny.setMnemonic('a'); filBar.add(arkivMeny);

MenuListener ml = new MenuListener(this, meddelandeRuta, infoRuta);

mItem = arkivMeny.add( new JMenuItem("Öppna", 'ö')); mItem.addActionListener(ml); mItem = arkivMeny.add( new JMenuItem("Avsluta", 'a')); mItem.addActionListener(ml); return filBar; }

Page 16: 2I1073 Lektion 2

Lektion 2d

public static void main(String[] args) { Lektion2d l2d = new Lektion2d();

}//main

}//Lektion2d

class MenuListener implements ActionListener {

private Lektion2d compo;

private JTextArea meddelandeRuta;

private JTextField infoRuta;

Page 17: 2I1073 Lektion 2

Lektion 2d

public void actionPerformed(ActionEvent e) { String val = e.getActionCommand(); if(val.equals("Öppna")) { öppnaFil(); } else if(val.equals("Avsluta")) System.exit(0); }

public void öppnaFil() { JFileChooser jfc = new JFileChooser("./"); jfc.setFileFilter(new InFilter()); int val = jfc.showOpenDialog(compo);

Page 18: 2I1073 Lektion 2

Lektion 2d

if(val == JFileChooser.APPROVE_OPTION) { String meddelande = "";

//öppna ström och läs in BufferedReader inFil = null; try {

inFil = new BufferedReader(new FileReader(jfc.getSelectedFile())); infoRuta.setText("Inläst från: " + jfc.getSelectedFile()); String rad; while((rad = inFil.readLine()) != null) meddelande += "\n" + rad;

}

Page 19: 2I1073 Lektion 2

Lektion 2d

}catch (FileNotFoundException fnfe){

System.err.println("Filen hittades inte!"); System.exit(1);

}catch (IOException e){ System.err.println("Filen gick inte att läsa!"); System.exit(2); }

meddelandeRuta.setText(meddelande); } }

Page 20: 2I1073 Lektion 2

Lektion 2d

private class InFilter extends javax.swing.filechooser.FileFilter {

public boolean accept(File f) { if(f.getName().toLowerCase().endsWith(".fil")) return true; else return false; }

public String getDescription() { return "Visar endast filer med ändelsen .fil"; } }//InFilter}//MenuListener

Page 21: 2I1073 Lektion 2

Lektion 2

Det var allt för idag.

Glad Påsk!