Archiv der Kategorie: Java

jsoup Example

Example how to access HTML elements in Java.

HTML Code
http://woppr.de/html

<html>
<head>
<title>My HTML page</title>
</head>
<body>
<div id="1">
<h1>Inhalt div 1</h1>
</div>
<div id="2">
<h1>Inhalt div 2</h1>
</div>
</body>
</html>

Eclipse

jsoup_eclipse

Code

jsoup_code

Source
http://jsoup.org/cookbook/extracting-data/dom-navigation

Source Code (git)

https://github.com/woppr/jsoup_example

https://github.com/woppr/jsoup_example.git

Einfaches Log4j Beispiel

Folgendes Beispiel zeigt wie Log4j zum Logging in Java verwendet werden kann.
Achtung: Es wird Version 1.2.xx von Log4j benötigt. Version 2.0 funktioniert nicht!

Zunächst muss Log4j (1.2.17.jar) im Build Path hinzugefügt werden:

log4j1

 

  • Anlegen einer Dummyklasse (LoggingTest)
  • Importtieren der benötigten Klassen
    • import org.apache.log4j.Logger;
    • import org.apache.log4j.PropertyConfigurator.
  • Erzeugen eines Logger Objektes.

log4j2

Zur Konfiguration wird ein Konfigurationsfile verwendet (log4j.properties).

Das Konfigurationsfile (log4j.properties) im Root Verzeichnis des Projektes ablegen:

log4j3

Beispiel Konfigurationsfile (log4j.properties):

log4j4

Anhand der Einstellungen im .properties Files wird in der Console folgende Ausgabe erzeugt:

log4j5

Im Root Verzeichnis des Projektes wird die Datei sample.log mit denselben Einträgen erzeugt:

log4j6

 

Sourcecode:

Log4J_Example

Full Screen Black

Das Javaprogramm “ Full Screen Black“ erzeugt einen schwarzen Bildschirm im Vollbildmodus. Durch Doppelklicken der „FullScreenBlack_v1.0.jar“-Datei kann es ausgeführt werden, vorrausgesetzt eine JRE ist installiert.

Das Programm kann hier heruntergeladen werden:
FullScreenBlack_v1.0 (executable .jar file)

Funktion (“ Full Screen Black“ ):
Das Programm erzeugt einen JFrame in der Größe der akuellen Bilschirmauflösung. Der Frame wird in den Vordergrund gesetzt. Durch Drücken der Esc-Taste kann das Programm wieder beendet werden.

Javacode des Programms:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
 
public class BlackScreen {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		//Set JFrame size to full screen size follow current screen size
		frame.setSize(Toolkit.getDefaultToolkit().getScreenSize().width,Toolkit.getDefaultToolkit().getScreenSize().height);
		frame.getContentPane().setBackground(Color.BLACK);
		frame.setUndecorated(true);
		frame.setAlwaysOnTop(true);
 
		KeyListener kl=new KeyAdapter(){
		  public void keyPressed(KeyEvent evt){
		   //If someone click Esc key, this program will exit
			  if(evt.getKeyCode()==KeyEvent.VK_ESCAPE){
				  System.exit(0);
			  }
		  }
		};
		//add Key Listener to JFrame
		frame.addKeyListener(kl);		
		frame.setVisible(true);
	}
}

Reconnect FritzBox – Java Programm mit Quellcode

Zum Thema Reconnect und Beziehen einer neuen IP gibt es im Internet eine relativ große Anzahl von Lösungen. Auf gulli gibt es bereits fertige Implentierung zum herunterladen. Was mich an diesen Implementierungen ein wenig stört gestört hat ist, dass der Quellcode bei diesen .exe Dateien meistens nicht zur Verfügung gestellt wird. Kleine .exe Dateien erwecken bei mir nicht gerade einen „seriösen“ Eindruckt.

Deshalb möchte ich hier nun meinen Beitrag zum Thema reconnect leisten. Meine Implentierung ist ein kleines Java Programm, das den reconnect bei einer Fritz!Box automatisch durchführt. Damit das Programm funktioniert muss auf der FritzBox UPNP aktiviert sein.
Wie in den meisten anderen Implementierungen sendet auch mein Programm eine sogenannte XML-SOAP message an die FritzBox.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:ForceTermination xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" />
</s:Body>
</s:Envelope>

Diese SOAP Message bewirkt, dass die Fritz!Box ihre Internetverbindung terminiert und einen reconnect durchführt. Der Router erhält somit eine neue IP-Adresse. Den Quellcode möchte ich hier nicht im Einzelnen erklären. Wer sich ein wenig mit Java auskennt sollte eigentlich keine größeren Verständnisprobleme haben. Um es ausführen zu können sollte auf dem Rechner natürlich eine JRE installiert sein.

Eine ausführbare .jar Datei (einfach doppelklicken), sowie die Quellcode Datei können hier heruntergeladen werden:

ReconnectFritz (executable .jar file)
ReconnectFritz (Java Source file)

Die Datei kann kann dann beispielsweise in JDownloader eingebunden werden:

Quellcode des Java-FritzBox-Reconnect Programms:

import java.net.*;
import java.io.*;
 
public class PostSOAP {
 
  public static void main(String[] args) {
 
    sendSOAP();
    System.exit(0);
 
  }
 
  public static void sendSOAP(){
	  try {
	      String xmldata = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
	      "<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">"+
	      "<s:Body>"+
	      "<u:ForceTermination xmlns:u=\"urn:schemas-upnp-org:service:WANIPConnection:1\" />"+
	      "</s:Body>"+
	      "</s:Envelope>";
 
 
	      //Create socket
	      String hostname = "fritz.box";
	      int port = 49000;
	      InetAddress  addr = InetAddress.getByName(hostname);
	      Socket sock = new Socket(addr, port);
 
	      //Send header
	      BufferedWriter  wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(),"UTF-8"));
	      wr.write("POST /upnp/control/WANIPConn1 HTTP/1.1");
	      wr.write("Host: fritz.box:49000" + "\r\n");
	      wr.write("SOAPACTION: \"urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination\""+"\r\n");
	      wr.write("Content-Type: text/xml; charset=\"utf-8\""+"\r\n");
	      wr.write("Content-Length: " + xmldata.length() + "\r\n");
	      wr.write("\r\n");
 
	      //Send data
	      wr.write(xmldata);
	      wr.flush();
 
	    } catch (Exception e) {
	      e.printStackTrace();
	    }
  }
}