Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[OT] Zusammenarbeit von Java Servlet und JSP?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
MatzeOne
Guru
Guru


Joined: 07 Sep 2003
Posts: 579
Location: Hamburg, Germany

PostPosted: Sun Jan 30, 2005 4:54 am    Post subject: [OT] Zusammenarbeit von Java Servlet und JSP? Reply with quote

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
View user's profile Send private message
MatzeOne
Guru
Guru


Joined: 07 Sep 2003
Posts: 579
Location: Hamburg, Germany

PostPosted: Mon Jan 31, 2005 8:19 pm    Post subject: Reply with quote

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
View user's profile Send private message
MatzeOne
Guru
Guru


Joined: 07 Sep 2003
Posts: 579
Location: Hamburg, Germany

PostPosted: Thu Feb 03, 2005 8:57 pm    Post subject: Reply with quote

Hat sich erledigt, ich weiß bescheid ;)
_________________
Mit null lässt sich eine ganze Menge machen.
Sportschule Hamburg
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
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