Java XML SAX Parser

Um mit Java eine XML Datei zu parsen, empfehle ich einen SAX Parser, da dieser schneller ist als ein DOM Parser. Die Implementierung eines SAX Parsers in Java ist einfach. Man muss nur eine routinemäßige Initialisierung vornehmen und einen eigenen Handler schreiben. Wie das funktioniert, zeigt mein nachfolgendes Code-Beispiel. Ich erkläre ebenfalls, wie man den SAX Parser in Google Android verwenden kann!
Java XML SAX Parser weiterlesen

Andere JSPs in Scriptlets einfügen

Wie man andere JavaServer Pages in einer JavaServer Page einfügen kann, zeigt das folgende Code-Stückchen. Es handelt sich dabei um ein Scriptlet, das bei Vorhandensein eines User-Objektes ein Logout-Formular anzeigt.

scriptlet.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@page import="util.SecurityUtil, persistence.User" %>
<%
	SecurityUtil security = SecurityUtil.getInstance();
	User user = security.getUser();
	if(user != null)
	{
%>
	<%@include file="form-logout.jsp" %>
<%
	}
	else
	{
%>
	<%@include file="form-login.jsp" %>
<%
	}
%>

Datei zeilenweise auslesen in PHP

Mit diesem Code kann man mit PHP eine Textdatei zeilenweise auslesen und anzeigen:

1
2
3
4
5
6
7
<?php
	$file = fopen("namensliste.txt","r");
	while($row = fgets($file, 4096))
	{
		echo $row."<br/>";
	}	
?>

Möchte man eine zufällige Zeile auslesen, so geht das wie folgt:

1
2
3
4
5
6
7
8
9
10
<?php
	$file = fopen("namensliste.txt","r");
	while($row = fgets($file, 4096))
	{
		$rows[] = $row;
	}	
 
	$randomRow = mt_rand(0, count($rows)-1);
	echo $rows[$randomRow];
?>

Zufallszahlen in Java

Um Zufallszahlen in Java zu erstellen, kann man die Bibliothek java.util.Random verwenden. Die Zufalls-Klasse von Java ist sehr vielseitig und bietet unter anderem die Möglichkeit, Zufallszahlen in einem bestimmten Bereich zu definieren. An dieser Stelle folgt ein kleiner Beispiel-Code, welcher 20 Zufallszahlen im Bereich von 0 und 72 (72 selbst wird ausgeschlossen) ausgibt:

1
2
3
4
5
6
7
8
9
10
    public void erstelleZufallsZahl()
    {
        Random zufallsgenerator = new Random();
 
        for(int i=0; i<20; i++)
        {
            int zahl = zufallsgenerator.nextInt(72);
            System.out.println(zahl);
        }
    }

Etwas ausführlicher:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Random;
 
public class JavaApplication1
{
 
  public static void main(String[] args)
  {
    erstelleZufallsZahl();
  }
 
  public static void erstelleZufallsZahl()
  {
    Random zufallsgenerator = new Random();
 
    for (int i = 0; i < 20; i++)
    {
      int zahl = zufallsgenerator.nextInt(72);
      System.out.println(zahl);
    }
  }
}

Java Server Pages – Beispiel

Es folgt ein Beispiel zur Erstellung einer Java Server Page (kurz JSP).

Die Java Server Page wird durch ein Servlet (im Beispiel NewServlet.java) aufgerufen. Daher muss im Webbrowser auch die Adresse des Servlets eingegeben werden. Als Parameter wird dabei das gewünschte Command mit einer dazugehörigen Action ausgeführt.

Im Beispielaufruf heißt das Command „cmd“ und die Action „actionman“:
http://localhost:8080/Projekt/servlet?do=actionman

Quellcode:

Projektname > „Source Packages“ > controller.web > NewServlet.java

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
30
package controller.web;
 
import java.util.HashMap;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
 
@WebServlet(name="NewServlet", urlPatterns={"/servlet"})
public class NewServlet extends HttpServletControllerBase
{
    public void init(ServletConfig conf) throws ServletException
    {
        HttpRequestActionBase action = null;
        actions = new HashMap();
 
        // Action: Möglicher Wert (Value) für einen Steuerbefehl (Command)
        action = new MyAction();
        actions.put("actionman", action);
 
        // Weitere "action" erstellen und "actions" hinzufügen...
    }
 
    protected String getOperation(HttpServletRequest req)
    {
        // Command: Steuerbefehl
        return req.getParameter("do");
    }
}

Projektname > „Source Packages“ > controller.web > MyAction.java

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
package controller.web;
 
import java.io.IOException;
import javax.servlet.RequestDispatcher;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class MyAction extends HttpRequestActionBase
{
    public void perform(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException
    {
        try
        {
            String strTemp = "Willkommen auf der JSP-Seite.";
            req.setAttribute("willkommen", strTemp);
            RequestDispatcher reqDisp = req.getRequestDispatcher("showaction.jsp");
            reqDisp.forward(req, resp);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

Projektname > „Web Pages“ > showaction.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <!-- Variante 1 -->
        <h1><%=request.getAttribute("willkommen")%></h1>
        <!-- Variante 2 -->
        <h1>${hallo}</h1>
    </body>
</html>

Benötigte Ressourcen:
Projektname > „Source Packages“ > controller.web > HttpServletControllerBase.java

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package controller.web;
 
import java.io.IOException;
import java.util.HashMap;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public abstract class HttpServletControllerBase extends HttpServlet
{
	protected HashMap actions;
 
	public void init(ServletConfig conf) throws ServletException
        {
            HttpRequestActionBase action = null;
            actions = new HashMap();
	}
 
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException, ServletException
        {
	    String op = getOperation(req);
	    HttpRequestActionBase action = (HttpRequestActionBase)actions.get(op);
	    action.perform(req, resp);
	}
 
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws IOException, ServletException
        {
 
	    // Zunaechst wird die URL analysiert,
            // um die Operation, die ausgefueht werden soll zu bestimmen
	    String op = getOperation(req);
	    // dann wird die entsprechende Aktion aus der Map geholt ...
	    HttpRequestActionBase action = (HttpRequestActionBase)actions.get(op);
	    // ... und angestossen
	    action.perform(req, resp);
	}
 
	/** Methode muss noch definiert werden, um die Kennung der
	  * Operation aus der URL zu lesen
	  * @param req Http-Request
	  * @return Name der Aktion, die ausgefuehrt werden soll
	  */
	protected abstract String getOperation(HttpServletRequest req);
}

Projektname > „Source Packages“ > controller.web > HttpRequestActionBase.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package controller.web;
 
import java.io.IOException;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public abstract class HttpRequestActionBase
{
    public abstract void perform(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException;
 
    protected void forward(HttpServletRequest req, HttpServletResponse resp, String forwardName)
    throws ServletException, IOException
    {
        RequestDispatcher reqDis = req.getRequestDispatcher(forwardName);
        reqDis.forward(req, resp);
    }
}

Java Enterprise Edition 6 – Servlet

Ein einfaches Code-Beispiel für ein Java Servlet nach JEE6-Konventionen. Voll kompatibel mit GlassFish v3.

Beispiel:
Ausführen mit: http://localhost:8080/Projektname/servletpower?power=1&name=Benny

controller.web.PowerServlet.java

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package controller.web;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet(name="Power Servlet", urlPatterns={"/servletpower"})
public class PowerServlet extends HttpServlet
{
    // Die Request-Methode realisiert die Ausgabe an den Client (Web-Browser)
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        response.setContentType("text/html");
        Enumeration parameters = request.getParameterNames();
        String strParameter;
        String strValue;
 
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>PowerServlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>PowerServlet</h1>");
        out.println("Homepage: <a href=\"http://localhost" + request.getContextPath() + ">Weblink</a><br/>");
        if(parameters.hasMoreElements() == false)
        {
            out.println("Keine Parameter &uuml;bergeben.");
        }
        else
        {
            while(parameters.hasMoreElements())
            {
                strParameter    = parameters.nextElement().toString();
                strValue        = request.getParameter(strParameter);
                out.print(strParameter+": ");
                out.print(strValue);
                out.print("<br/>");
            }
        }
        out.println("</body>");
        out.println("</html>");
    }
 
    @Override
    // Die Methode doGet wird automatisch bei Eingabe
    // der Webseite in der Adresszeile des Browsers aufgerufen
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }
 
    @Override
    public String getServletInfo()
    {
        return "Kurze Beschreibung";
    }
}