View previous topic :: View next topic |
Author |
Message |
MatzeOne Guru


Joined: 07 Sep 2003 Posts: 579 Location: Hamburg, Germany
|
Posted: Sun Jan 30, 2005 4:54 am Post subject: [OT] Zusammenarbeit von Java Servlet und JSP? |
|
|
Moin moin!
Ich habe schon desöfteren neben den typischen Loginfeldern auf Webseiten (Benutzername + Passwort) eine zufällig generierte Grafik gesehen. Ein weiteres Input-Element forderte die Eingabe der in der Grafik zu sehenden Zahl, um Brute-Force-Angriffen auf Benutzernamen und Passwörter entgegen zu wirken.
*edit: code gelöscht... es funktioniert halt und ist auch nicht weiter relevant*
Daraus möchte ich dann nun ein Servlet machen bzw. eine wiederverwendbare Komponente, was dann wohl eine Java Bean wäre, wenn ich das Prinzip von Java Beans verstanden habe. Ich habe mir deswegen auch die Nacht rumgeschlagen und habe viel probiert. Die Grafik konnte ich bis jetzt aber nicht mehr anders generieren. Ich habe auch eine AHnung wieso, aber eine Lösung ist mir nicht eingefallen.
Erstmal das neu erstellte Java Bean:
Code: |
package shunter;
import java.beans.*;
import java.io.*;
import java.util.Random;
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
public class Glogin implements Serializable
{
Random rnd;
private int width, height, x;
public Glogin()
{
this.rnd = new Random();
}
public void setRandom(int i)
{
this.x = rnd.nextInt(i);
}
public int getRandom()
{
this.x = rnd.nextInt(this.x);
return this.x;
}
public void setHeight(int i)
{
this.height = i;
}
public int getHeight()
{
return height;
}
public void setWidth(int i)
{
this.width = i;
}
public int getWidth()
{
return width;
}
public BufferedImage getJPG() // In Arbeit
{
String str = ""+this.x;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
g.setColor(Color.red);
g.drawString(str,0,(Math.round(this.height/2)));
// ServletOutputStream out = response.getOutputStream();
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
// encoder.encode(image);
return image;
}
}
|
Jetzt noch ein weiteres Listing, um zu zeigen, dass die Bean bis auf die letzte Methode funktioniert:
Code: | <%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head><title>JSP Page</title></head>
<body>
<jsp:useBean id="q" class="shunter.Glogin" />
<jsp:setProperty name="q" property="random" value="100000" />
<jsp:setProperty name="q" property="height" value="25" />
<jsp:setProperty name="q" property="width" value="35" />
<jsp:getProperty name="q" property="random" />
</body>
</html>
|
Und nun das Listing, was auf die letzte Methode zugreift und die Grafik wie im ersten Listing (das JSP-Dokument ohne Bean) erstellen soll:
Code: |
<%@page contentType="image/jpg"%>
<jsp:useBean id="q" class="shunter.Glogin" />
<jsp:setProperty name="q" property="random" value="100000" />
<jsp:setProperty name="q" property="height" value="25" />
<jsp:setProperty name="q" property="width" value="35" />
<jsp:getProperty name="q" property="JPG" />
|
Wäre für Lösungsvorschläge dankbar.
Die Grafik soll übrigens nicht dauerhaft gespeichert werden. _________________ Mit null lässt sich eine ganze Menge machen.
Sportschule Hamburg
Last edited by MatzeOne on Mon Jan 31, 2005 8:22 pm; edited 2 times in total |
|
Back to top |
|
 |
MatzeOne Guru


Joined: 07 Sep 2003 Posts: 579 Location: Hamburg, Germany
|
Posted: Mon Jan 31, 2005 8:19 pm Post subject: |
|
|
Nachdem ich nun wieder einiges gelesen habe, habe ich ein Servlet erstellt.
Dieses generiert erstmal nur ein HTML-Dokument in dem eine zufällig generierte Zahl ausgegeben wird.
Nun möchte ich aber eigentlich den HTML-Source nicht in dem Servlet stehen haben, sondern in ein JSP-Dokument, was dann die Methode der class-Datei oder der class in einem jar (oder war(?)) aufruft. Auch habe ich in der Zeile 27 des folgenden Listings folgende Zuweisung:
x = rnd.nextInt(10000);
Den Parameter möchte ich aber durch eine Variable austauschen, dessen Wert eben auch in einem JSP-Dokument (oder web.xml(?)) definiert ist.
Bitte um Denkanstoß
Code: |
/*
* Login.java
*
* Created on January 31, 2005, 8:32 PM
*/
package shunter;
import java.io.*;
import java.net.*;
import java.util.Random;
import javax.servlet.*;
import javax.servlet.http.*;
public class Login extends HttpServlet
{
private String version = "0.1"; // ToDo: Versionsnummer aktuell halten
private Random rnd;
private int width, height, x;
protected void processRequest (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
rnd = new Random();
x = rnd.nextInt(10000); // Parameter sollte durch Variable ersetzt werden
response.setContentType ("text/html");
PrintWriter out = response.getWriter ();
out.print("<html><head>");
out.print("<title>Login Servlet " + version + "</title>");
out.print("</head><body>");
out.print(x);
out.print("</body></html>");
out.close ();
}
protected void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest (request, response);
}
protected void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest (request, response);
}
public String getServletInfo ()
{
return "Login Servlet Version " + version + " von mir :P";
}
}
|
Und nun änder ich mal den Threadtitel... _________________ Mit null lässt sich eine ganze Menge machen.
Sportschule Hamburg |
|
Back to top |
|
 |
MatzeOne Guru


Joined: 07 Sep 2003 Posts: 579 Location: Hamburg, Germany
|
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|