Zum Inhalt springen

themaster

Mitglieder
  • Gesamte Inhalte

    289
  • Benutzer seit

  • Letzter Besuch

Beiträge von themaster

  1. Erstmal wird ja eh nur HTML zurück geliefert. Die "Verschlüsselung" ist also von jsp oder asp vollkommen unabhängig. Es wird auch kein asp-Code an den Browser ausgeliefert unter keinen Umständen.

    Man kann den HTML-Code etwas krypisch schreiben (z.B. keine Zeilenumbrüche, etc) und man kann per JS verhindert, dass jemand die rechte Maustaste benutzt (um an Quellcode ansehen zu kommen), aber beide Versionen lassen sich umgehen?

    Ansonsten ist mir nichts bekannt, was den HTML-Quelltext wirksam verschlüsseln würde.

  2. Du lädst du das FTP/Webdav-Plugin von der Seite herunter die ich im letzten Posting erwähnt habe.

    Diese Dateien kopierst du in das plugin-Verzeichnis von Eclipse (evtl. vorher entpacken).

    Nach einem Neustart sollte das PLugin aktiv sein. Wenn du jezt mit der Rechtenmaustaste auf Projekt klickst und auf sollte da unter Team -> Share Project die Möglichkeit bestehen FTP auszuwählen.

    split

    Eigentlich sieht die Funktion gut aus und split("=") reicht sollte als Regex ausreichen.

    Aber split funktioniert erst ab Java Version 1.4? Welche Version setzt du ein?

  3. OK, hier der Code. Kenntnisse über C und über die Funktionsweise von JNI wären nicht schlecht. Über JNI findet man einiges auf der Java-Seite von Sun.

    C-Header-Datei:


    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class <<package>>_<<classname>> */

    #ifndef _Included_<<package>>_<<classname>>
    #define _Included_<<package>>_<<classname>>
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
    * Class: <<package>>_<<classname>>
    * Method: int_netSend
    * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    */
    JNIEXPORT jstring JNICALL Java_<<package>>_<<classname>>_int_1netSend
    (JNIEnv *, jobject, jstring, jstring, jstring);

    #ifdef __cplusplus
    }
    #endif
    #endif[/PHP]

    C-Quelldatei:

    [PHP]
    #include <jni.h>
    #include <windows.h>
    #include <tchar.h>
    #include <lm.h>

    void SendNTMessage(char* from,char* to,char* message,char* rc);

    JNIEXPORT jstring JNICALL Java_<<package>>_<<classname>>_int_1netSend
    (JNIEnv * env, jobject obj, jstring from, jstring to , jstring message)
    {

    const char* cf = NULL;
    const char* ct = NULL;
    const char* cm = NULL;
    char rc[256];
    ct = (*env)->GetStringUTFChars(env, to, 0);
    cm = (*env)->GetStringUTFChars(env, message, 0);
    if(from!=NULL){
    cf = (*env)->GetStringUTFChars(env, from, 0);
    SendNTMessage(cf,ct,cm,rc);
    (*env)->ReleaseStringUTFChars(env, from, cf);
    }
    else{
    SendNTMessage(NULL,ct,cm,rc);
    }
    (*env)->ReleaseStringUTFChars(env, to, ct);
    (*env)->ReleaseStringUTFChars(env, message, cm);
    return (*env)->NewStringUTF(env, rc);
    }

    void SendNTMessage(char* from,char* to,char* message,char* rc){
    int nasRc = 0;

    WCHAR t[1024];
    WCHAR m[1024];
    int len = strlen(to);
    int size =len/sizeof(char);
    MultiByteToWideChar(CP_OEMCP,MB_COMPOSITE,to,size,t,size*sizeof(WCHAR));
    t[len] = 0;

    len = strlen(message);
    size = len/sizeof(char);
    MultiByteToWideChar(CP_OEMCP,MB_COMPOSITE,message,size,m,size*sizeof(WCHAR));
    m[len] = 0;
    if(from!=NULL){
    WCHAR f[1024];
    len = strlen(from);
    size = len/sizeof(char);
    MultiByteToWideChar(CP_OEMCP,MB_COMPOSITE,from,size,f,size*sizeof(WCHAR));
    f[len] = 0;
    nasRc = NetMessageBufferSend(NULL, // server name (null means this machine)
    t, // name (alias) of recipient
    f, // who this is from
    (LPBYTE)m, // message
    wcslen(m) * sizeof(WCHAR));
    }
    else{
    nasRc = NetMessageBufferSend(NULL, // server name (null means this machine)
    t, // name (alias) of recipient
    NULL, // who this is from
    (LPBYTE)m, // message
    wcslen(m) * sizeof(WCHAR));
    }

    switch(nasRc)
    {
    case ERROR_ACCESS_DENIED:
    strcpy(rc,_TEXT("ERROR: You do not have access to the requested function.\n"));
    break;

    case ERROR_INVALID_PARAMETER:
    strcpy(rc,_TEXT("ERROR: One of the passed parameters is invalid.\n"));
    break;

    case ERROR_NOT_SUPPORTED:
    strcpy(rc,_TEXT("ERROR: This network request is not supported.\n"));
    break;

    case NERR_NameNotFound:
    strcpy(rc,_TEXT("ERROR: The user name could not be found or is not logged in."));
    break;

    case NERR_NetworkError:
    strcpy(rc,_TEXT("ERROR: A general failure occurred in the network hardware.\n"));
    break;

    case NERR_Success:
    strcpy(rc,_TEXT("Message successfully sent!\n"));
    break;

    default:
    sprintf(rc,_TEXT("ERROR %d: Unknown error\n"),nasRc);
    }
    }

    Java-Datei:


    package <<package>>;

    public class <<classname>> {

    static {
    System.loadLibrary("<<name der bibliothek>>");
    }

    private native String int_netSend(String from, String to, String message);

    <<cut>>
    }
    [/PHP]

    Der Aufruf erfolgt über int_netSend eines entsprechenden Java-Objects.

    Die C-Dateien müssen zu einer dll-Datei compiliert werden. Der Name der dll wird (ohne die Endung) mit System.loadLibrary von der JVM geladen. Die C-Headerdatei wird automatisch von dem Programm javah (sollte bei jedem SDK dabei sein) erstellt.

    Für JNI braucht man keine zusatzprogramme oder so alles ist bei einem SUN JDK dabei.

    Grüße

    themaster

  4. Wenn dein Ziel ist net sends zu senden, dann mußt du IMHO JNI (Java Native Interface) zur Hilfe nehmen (unter Windows) oder unter Linux Samba-Befehle aufrufen. Zur der JNI-Version kann ich hier ein bißchen posten, wenn das absenden, dass ist was du willst.

  5. Ich sollte auch Feierabend machen, schreibe ja nur noch Mist:

    Noch ein Fehler in meinem Codelisting:

    Es muß line.sepa rator heißen und nicht line.sepe rator.

    Weil er seperator nicht findet, wird null angefügt, es sollte aber ein Zeilenumbruch sein.

    Grüße

    themaster

  6. Ich bin jetzt nicht 100%ig sicher, ob ich weiß was du meinst, aber hier mein Versuch:


    Writer writer = new FileWriter("filename.txt");
    for(int i = 0;studentenArray[i];i++){
    Student std = studentenArray[i];
    StringBuffer buf = new StringBuffer();
    buf.append(std.getName());
    buf.append(" ");
    buf.append(std.getGeschlecht());
    buf.append(" ");
    buf.append(std.getMatrikelnummer());
    buf.append(" ");
    buf.append(std.getAlter());
    buf.append(" ");
    buf.append(std.getFach());
    buf.append(System.getProperty("line.seperator"));
    writer.write(buf.toString());
    }
    writer.close();
    [/PHP]

  7. Der Link ist wirklich gut. hat die Vorteile und die Nachteile aufgelistet.

    Besonders, dass php fast nur im nicht professionllen Bereich eingesetzt wird. Für ein Spaß-Seite als Hobby vollkommen ok, gerade die Sharedhoster bieten meisten auch nur php an.

    Aber deinen Chef beeindruckst du mit php wahrscheinlich weniger und beitet für professionelle Projekte auch einfach zu wenig Möglichkeiten. Zusätzlich bietet sich php für schlechte strukturierte Seiten gerade zu an (Model 1 Seiten mit Ausgabe und Verarbeitung auf einer Seite).

  8. Original geschrieben von Vafe

    if (studentArray.getMatrikel() == suchtext)

    {

    ....

    }

    Wie ETnachHause schon sagte, kann man in Java Strings (leider) nicht mit dem Gleichheitsoperator überprüfen (dies ist nur bei nativen Datentypen: int, float möglich) sondern mit der Methode equals.

    Wenn getMatrikel() einen String zurück gibt, dann könnte man es so schreiben:

    if(studentArray.getMatrikel().equals(suchtext){

    }

  9. Original geschrieben von MasterC

    Oder aber du guckst dir C# an.

    Ist wohl das modernste, was man auf dem Markt so findet.

    Skriptspache?

    Ich finde Perl als php auch besser als es damit einfacher ist sauber zu programmieren alleine schon wegen use strict und es auf CPAN alles gibt was man braucht.

    Ansonsten soll (ich habe es bisher nicht selbst getestet) Python gut und auf dem absolut aufsteigenden Ast sein.

  10. Original geschrieben von kingofbrain


    if(arr[0] indexof String)
    {
    // ist ein String
    }
    else
    {
    // ist kein String
    }
    [/PHP]

    [/b]

    Kleiner Fehler: instanceof anstatt indexof.

    Wenn ich das richtig verstanden habe, dann sollte er so testen, ob ein Leerzeichen steht:

    arr[0].equals("") oder

    arr[0].length==0

  11. Original geschrieben von roaxius

    http://www.exxcellent.de/pdf/JM_01.2003_S.68-71.pdf

    Also unter dem Link finde ich "nur" einen Artikel des JavaMagazins für über einen Entwicklungsprozesstyps, aber kein Struts.

    Das englische Buch Struts Kick Start würde ich nicht empfehlen. Behandelt Themen wie EJB Zugriff und Webservices-Zugriff aus Actionklassen sehr ausführlich, aber dafür gibt es ja eigene Literator. Dafür kommen Design Prinzipen für Struts meiner Meinung nach zu kurz.

  12. Original geschrieben von PerdianMG

    Ich weiss nicht, ob das mit der Standard URLConnection so ohne weiteres möglich ist. Ich benutze für HTTP Automatisierungs-Geschichten eigentlich immer Jakarta HttpClient oder HttpUnit (http://httpunit.sourceforge.net/) da geht die ganze Verarbeitung deutlich komfortabler mit.

    Nein, nein, der Link hat schon genau die Lösung gebracht, die ich benötigt habe. Vielen Dank nochmal

    Stimmt, die Authentierung von HttpUnit ist einfach, aber ich genau eigentlich davon aus, dass diese setAuthenication()-Methode (nicht schlagen, wenn ich mich da im Namen verteue) intern genau, dass macht, was auf der gelinkten Seite steht.

    HttpUnit ist dennoch glaube ich, kein so guter Ansatz dafür, da es eigentlich für genau einen Zweck bestimmt ist (Unittests) und eigentlich nicht andere Automatisierungsaufgaben. Ich bin immer etwas vorsichtig, wenn ich Tools für einen anderen Zweck benutze als für den wofür sie gemacht worden sind.

    HttpClient kenne ich jetzt gar nicht. Wenn ich nochmal so eine Aufgabe habe, dann gucke ich mir das mal an.

    Der Vorschlag meines Kollegen war "trace den TCP/IP-Verkehr und schreibe es dir selbst". Euer Vorschlag war bestimmt schneller.

    Danke nochmal für die Hilfe.

    Grüße

    themaster

  13. Ich denke es kommt wirklich darauf an.

    Mit Frontend meinte ich (und mir ist nun auch klar dass dies Mißverständlich war), dass man Access zum Zugriff auf andere Datenbanksysteme zur Administration (z.B. als SQL Navigator-Ersatz).

    Wir hatten damit ziemliche Probleme wenn man mit Access eine Tabelle anzeigt und dann z.B. am Abend den Rechner herunterfährt und Access nicht beendet. Dann ist die ganze Tabelle evtl. gelockt und die z.B. Batchläufe laufen nicht korrekt.

    Access wird häufig für diese Arbeit als Datenbankfrontend benutzt, aber ist nicht dafür gemacht.

  14. Original geschrieben von Pinhead

    Zusätzlich bietet Oracle im Gegensatz zu Access eine gewissen Transaktionssicherheit.

    Das bedeutet wenn mehrer User auf die Daten zugreifen und diese auch verändern, werden die Änderungen für die anderen User erst dann sichtbar wenn der User der die Daten bearbeitet hat einen "commit" absetzt.

    Weiterhin kann man aber auch mit dem "rollback" Befehl die Daten seit dem letzten commit wieder herstellen

    Also Access (d.h. die Jet-Engine) unterstützt mit ziemlicher Sicherheit nach Transaktionen.

    Die DB-Engine von Access ist ganz nett, wenn in sehr kurzer Zeit ein Datenbankanwendung bauen (oder besser zusammen klicken ) will, die von möglichst weniger Personen benutzt wird.

    Meine Erfahrung ist, dass ab ca. 50.000 Datensätze die Performance stark nachlässt. (ok,ok, kommt immer auch darauf an was man macht)

    Für alles andere gibt eine ganze reihe an anderen guten DB-Systemen (mein Favorit sapdb)

    Als Datenbankfrontend für andere Datenbanken ist Access fast nicht zugebrauchen, weil es sehr stark die Datensätze lockt.

  15. Hallo,

    ich muß mit einem Programm eine http-Verbindung zu einer url aufbauen und den Content auslesen, dass Problem dabei ist, dass die Seite Passwortgeschützt ist.

    (Es popt dieses Browserfenster zur Eingabe von Benutzername und Passwort hoch).

    allowUserInteraction (java.net.HttpURLConnection) kann ich auf true gesetzt werden, da das Programm automatisch laufen muss.

    Wie kann ich dennoch auf diese Seite zugreifen?

    Wie kann ich mich programmseitig authorisieren? (Benutzername und Passwort habe ich natürlich)

  16. Original geschrieben von Marsellus Wallace

    Danke für den Code. Sieht ja ziemlich :eek: aus.

    Wäre es nicht einfacher, gleich alles in C zu machen? (Brauche es irgendwann abe auch unter Unix...) Oder gleich mit dem JNI?

    Wenn die Anwendung nur die Prozessliste anzeigt wäre es zugegebener Massen ziemlich hirnriesig, dafür eine Anwendung mit Java zu schreiben, die per JNI auf C-Funktionen zugreift. Wenn die Anwendung aber sehr groß ist und die Anzeige der Prozesslist nur ein ganz kleiner Teil davon ist, dann ist es für mich ok.

    Könntest du mir ein paar Fakten zum JNI geben? Aktuelle Version vorallem? Muss man da was zusätzlich installieren?

    Das wär :cool:

    JNI ist das Java Native Interface und ist bei jedem Java Software Development Kit dabei.

    Wichtig dafür ist das Programm javah, dass die speziellen Headerdateien generiert.

    Mein Code setzt Java 1.4 voraus, da ich die Funktion split in java.lang.String verwende, aber das leiße sich natürlich auch anders machen.

    Beim Kompilieren des C-Codes muß die Headerdatei jni.h aus dem Java SDK eingebunden sein, damit alles klappt.

    Und was ist eigentlich eine Ant-Datei?

    Ant ist ein Programm das eine Art spezielle Scriptdatei ausführt mit der man Compilieren, Deployen, etc kann.

    Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles.
    (ant.apache.org)

    Grüße

    themaster

  17. Original geschrieben von Jaraz

    Wieso nicht? Erleichtert vieles. :D

    Das glaube ich gern aber als das Projekt began war es noch eine Beta.

    (Das dachte ich zumindest.)

    Seit wenn ist 1.1 überhaupt stable?

    Quelle: Struts in Action

    -------------------------------------

    8.4 Chaining Actions

    [cut]

    ------------------------

    1) Gibt es das ganze BUch irgendwo online?

    2) Es ist ja weniger ein Action Chaining (im eigentlichen Sinn), es ist mehr so

    wie bei meiner zweiten Frage.

    Eine Action soll auf eine PrepareAction verweisen, damit eine jsp mit gültigen Werten angezeigt werden kann.

    Grüße

    themaster

  18. Original geschrieben von jan76

    Damit betreibst Du "Action-Chaining", d.h. eine Action A ruft Action B auf, die dann evtl. noch Action C um dann schlussendlich wieder auf einer JSP-Seite zu landen.

    Das ist ein Mechanismus der von Struts zwar nicht unmöglich gemacht wird, aber nicht in die Architektur passt und daher fast immer zwangsläufig zu Problemen führen wird (z.B. gehen die Request-Parameter beim "Weiterleiten" verloren).

    Falls Action B auch Teile der Logik von Action A als Voraussetzung braucht, ist das eine gute Gelegenheit diese Methoden in eine Service-Klasse auszulagern (sollte man sowieso machen, die Actions sind bestenfalls als "rein-->Entscheidung-->raus" - Methoden zu verstehen), um sie dann von den Actions aus aufzurufen ("Code duplication is the root of all evil.." oder wie war das).

    Es ist nicht so, dass die zweite Action Logik von der ersten benötigt. Das dies faul ist, leuchtet ein.

    Meine jsp-Seite benötigt Daten aus einer Action damit sie richtig angezeigt werden kann. (Damit ist die Action weniger eine Action mehr ein Datenlieferant)

    Wahrscheinlich auch nicht im Sinne der Architektur, aber

    es läuft (auch eine schlechte Entschuldigung für blödes Design...):confused:

    Baue eine "PrepareEditUserAction" und z.B. verlinken und als Request-Parameter die User-ID übergeben, in dieser wird das in der struts-config.xml definierte ActionForm mit den vorhandenen Daten gefüllt und beim Weiterleiten zur JSP stehen alle benötigten Daten schon im Formular drin, können bearbeitet und in einer "UpdateEditUserAction" wieder vom Formular zurück in die Datenbank geschrieben werden (falls Du Struts 1.1 benutzt kannst Du aus den 2 Action-Klassen hier schön eine XXXDispatchAction basteln).

    Damit hatte ich heute größere Probleme.

    Ich habe diese Prepare-Action gemacht auch mit der Userid als Parameter und ein UserForm erzeugt und mit Daten gefüllt und in den Request gestellt.

    Danach habe ich auf die jsp-Seite weitergeleitet, aber das Userform war in dem Moment leer.

    Ich weiß nicht wirklich wieso.

    Werden beim Forward aus der Action heraus, alle Daten im Request-Context gelöscht?

    (Struts 1.1 benutze ich nicht, diese Möglichkeit steht mir also nicht zur Verfügung)

    Grüße

    themaster

  19. Hier meine Dateien, aber ein bißchen einlesen in JNI und C ersetzt es nicht. Man sollte schon das Prinzip verstehen.

    Javaklasse:


    package <<Package>>

    public class <<Klassenname>>{

    static {
    System.loadLibrary("crmon_native");
    }

    private native String int_getRunningProcesses();

    public void execute() throws Exception {
    String list = int_getRunningProcesses();
    String[] all = list.split(";");
    }
    }
    [/PHP]

    C-Headerdatei:

    [PHP]
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>

    #ifndef _Included_<<PACKAGE>>_<<KLASSENNAME>>
    #define _Included_<<PACKAGE>>_<<KLASSENNAME>>
    #ifdef __cplusplus
    extern "C" {
    #endif
    JNIEXPORT jstring JNICALL Java_<<PACKAGE>>_int_1<<KLASSENNAME>>
    (JNIEnv *, jobject);

    #ifdef __cplusplus
    }
    #endif
    #endif

    C-Quelldatei:


    #include <jni.h>
    #include "windows.h"
    #include "Tlhelp32.h"
    #include "tchar.h"

    JNIEXPORT jstring JNICALL Java_<<PACKAGE>>_int_1<<KLASSENNAME>>
    (JNIEnv * env, jobject object)
    {
    char result[1024*64];
    int hRes;
    PROCESSENTRY32 pEntry;
    HANDLE hSnapShot;

    hSnapShot=CreateToolhelp32Snapshot (TH32CS_SNAPALL,0);
    pEntry.dwSize =sizeof(pEntry);

    //Get first process
    Process32First (hSnapShot,&pEntry);

    //Iterate thru all processes
    _tcscpy(result,"");

    hRes=Process32Next (hSnapShot,&pEntry);
    _tcscat(result,pEntry.szExeFile);
    while(1)
    {
    hRes=Process32Next (hSnapShot,&pEntry);
    if(hRes==FALSE)
    break;

    _tcscat(result,";");
    _tcscat(result,pEntry.szExeFile);
    }
    CloseHandle(hSnapShot);
    return (*env)->NewStringUTF(env, result);
    }
    [/PHP]

    Ant-Dateiausschnitt:

    zum generatieren der C-Headerdatei

    [PHP]
    <target name="generate-header">
    <javah
    destdir="win/nativesrc"
    classpath="win/bin;*.jar;common/bin;........."
    verbose="false"
    force="true">
    <class name="<<PACKAGE>>.<<KLASSE>>"/>

    </javah>

    </target>

  20. Hallo,

    ich entwickele gerade eine JSP-Anwendung mit Struts, dabei habe ich ein paar Fragen/Probleme:

    1) Darf ich eigentlich in die Action-spezifischen Forwards verweise auf Actions angeben (z.B. /bla.do) oder darf dort nur auf jsp-Seiten verweisen werden.

    Easystruts (ein Strutsplugin für Eclipse) meckert immer wenn in dem Forward keine jsp-Datei steht. Warum soll man dies so machen?

    2)Etwas gemeiner.

    Teil der Anwendung ist eine Benutzerverwaltung. Mit zwei JSPs mit (fast) gleichen Actionformularen newuser.jsp und edituser.jsp.

    Bei newuser klappt alles wunderbar. Aber was ist der (beste) Weg die Daten des Benutzers der editiert werden soll in das Formular von edituser.jsp zu bekommen?

    Wenn ich edituser.jsp aufrufe ist das formular leer wie bei newuser.jsp. Was ist die Pest Practice dafür?

    Danke,

    themaster

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...