Zwei Monate lang habe ich täglich Blogposts auf Englisch verfasst um zu schauen, ob sich die Reichweite meiner Posts vergrößert (immerhin sprechen/schreiben mehr Menschen auf der Welt Englisch anstatt Deutsch). Die Auswirkung war eher mäßig (Steigerung der englischen Leserschaft um +1,04%), was mit Sicherheit auch daran liegt, dass über 600 andere deutsche Posts auf diesem Blog mit den englischen Posts konkurrieren und man mit einer .de Domain im englischen Sprachraum auch nicht weit kommt. Deshalb werden die nächsten Posts wieder von mir auf Deutsch verfasst. Vielleicht gebe ich aber englische Tags hinzu, um die Einträge besser auffindbar zu machen.
Wie die Redaktion von CHIP Online im Artikel “Facebook knacken” zeigt, ist es nicht sonderlich schwer, fremde Facebook-Accounts zu klauen.
Der Diebstahl funktioniert durch die Übernahme von aktiven Sitzungs-Cookies im gleichen Netzwerk. Man kann sich vor diesem Angriff schützen, wenn man sich immer über die HTTPS-Seite von Facebook (https://www.facebook.com/) anmeldet.
Für Firefox-Benutzer gibt es die Erweiterung “HTTPS Everywhere“, welche automatisch dafür sorgt, dass Seiten wie Facebook, Google, Amazon, Twitter oder GMX über HTTPS aufgerufen werden.
Ich war gerade auf der Webseite von Vodafone, um mich über aktuelle Handys und Tarife zu informieren. Beim Blick in den Vertragsdetails öffnete sich dann plötzlich ein Chat-Fenster indem mich Christian, der für mich zuständige Vodafone Chat-Partner, begrüßte.
Zuerst hielt ich dieses Fenster für einen Trick, bei dem mir die künstliche Intelligenz einer Webapplikation glaubhaft machen wollte, dass mir um 23:15 Uhr noch ein Berater zur Verfügung steht. Um das zu Überprüfen stellte ich dem Berater ein paar Fragen und fand dabei heraus, dass es sich wirklich um einen echten (!) Menschen handelte, der mich Freitagnacht noch berät. Sogar die Rechtschreibung war einwandfrei! Ich war wirklich überrascht, denn sowas habe ich noch nie erlebt. Das ist wirklich einwandfreier Kundenservice, denn bei Vodafone kann man sich online bis 24 Uhr beraten lassen. Ob das bei technischen Problemen auch so ist, weiß ich allerdings nicht.
Zum Beweis hier ein Screenshot der Unterhaltung:
Studenten bezahlen dank Office 2010 Technologie-Garantie-Upgrade nur 52 EUR für Microsoft Office 2010 Professional. Die Aktion ist verfügbar bis zum 30. Juni 2010.
Musikvideo: Adobe Flash Player (Version 9 oder höher) wird benötigt um dieses Musikvideo abzuspielen. Die aktuellste Version steht hier zum herunterladen bereit. Außerdem muss JavaScript in Ihrem Browser aktiviert sein.
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); } } |




0