Avatar billede dennish Nybegynder
23. oktober 2007 - 19:02 Der er 9 kommentarer og
1 løsning

Hjælp til en lille Servlet opgave

Hejsa jeg har langt om længe fundet en side der hoster JSP sider gratis :-). Men for at komme igang skal man lave en lille opgave. Jeg kan sådan set god finde ud af at lave en JSP side der "connecter" til en Servlet og lave en web.xml fil og smide det på min Tomcat.

Men jeg forstår altså ikke lige den stillede opgave. Hvad er det lige de vil have mig til. Nogen der kan hjælpe mig ? Jeg vil sådan set bare gerne hurtigs muligt igang

http://www.myjavaserver.com/signup
Avatar billede arne_v Ekspert
23. oktober 2007 - 19:12 #1
Det var godt nok et udvidet check mod spammere.

Som jeg laeser den skal du skrive en metode der kaldes med et konfig array og en URL,
metoden checker saa i config arrayets lige elementer (index 0, 2 etc.) og hvis
der er match returneres den tilsvarende ulige element (index 1, 2 etc.). Hvis ingen
match returneres en fast streng.

En simpel for loekke og lidt indeksering (husk kravet om at man skal bruge
det laengste match !) boer kunne loese den.
Avatar billede dennish Nybegynder
23. oktober 2007 - 20:25 #2
Hej Arne jeg har lavet følgende:

public class HandlerFactory {
   
    public String getHandler(String[] config, String requestUri) {
        String handle = "SXHoef9"; 
        for (int i = 0; i < config.length; i++) {
            if((i % 2) == 0) {
                if(config[i].trim().equals(requestUri.trim())) {
                return "??";
                }
            }
        }
        return handle;
      }

    public static void main(String[] args) {
        String[] config = { "/", "MainServlet", "/nav", "NavigationServlet" };
        String requestUri = "/nav/test";
        System.out.println(new HandlerFactory().getHandler(config, requestUri));
       
    }

}


Men hvis der er en match skal jeg returnere ??
Avatar billede arne_v Ekspert
23. oktober 2007 - 20:30 #3
config[i+1]
Avatar billede dennish Nybegynder
23. oktober 2007 - 20:36 #4
Ok hvad er det det lige du mener med det længste match ?
Avatar billede arne_v Ekspert
23. oktober 2007 - 20:54 #5
/nav/test matcher baade / og /nav, men fordi /nav er laengst er det den som gaelder
Avatar billede dennish Nybegynder
23. oktober 2007 - 21:39 #6
hvordan kan /nav/test matche /. Hvis det er tilfældet skal jeg så ikke lave en split på min streng /nav/test og splitte den op i ?? kan du ikke kigge lidt på min code. For nu er jeg lidt forvirret
Da jeg prøvede koden fik jeg følgende fejl: (Fra hjemmesiden )

Testcase 2 failed:
  config: { "/", "TestServlet", "/test", "TestServlet2" }
  request: "/servlet/TestServlet"
ERROR: A testcase failed, please revise your code
Avatar billede arne_v Ekspert
23. oktober 2007 - 21:49 #7
/nav/test starter med baade / og /nav
Avatar billede dennish Nybegynder
24. oktober 2007 - 00:48 #8
Også kom koden så til at se ud

public class HandlerFactory {
    private final static String REGEX = "[/\\\\]+";
    public String getHandler(String[] config, String requestUri) {
        String tmp = "";
        int index = -1;
        String[]split = new String[0];
        int counter = 0;
        String handle = "SXHoef9";

        for (int i = 0; i < requestUri.length(); i++) {
            String sub = requestUri.substring(i, i+1);
            if(sub.equals("/")) {
                counter++;
            }
        }

        split = requestUri.split(REGEX);
        for (int i = 1; i <= counter; i++) {
            if(!requestUri.endsWith("/")) {
                tmp = split[i];
                tmp = "/"+tmp;
            }
           
            if(requestUri.endsWith("/") && counter > 1) {
                tmp = split[i-1];
                tmp = "/"+tmp;
            }
            for (int j = 0; j < config.length; j++) {
                if((j % 2) == 0) {
                    if(requestUri.startsWith("/")) {
                        if(config[j].trim().equals("/")){
                            if(j > index) {
                                index = j;
                            }
                        }
                    }

                    if(config[j].trim().equals(requestUri.trim())) {
                        if(j > index) {
                            index = j;
                        }
                    }
                    if(config[j].trim().equals(tmp.trim())) {
                        if(j > index) {
                            index = j;
                        }
                    }
                }
            }   
        }
        if(index > -1 ) {
            return config[index+1];
        }
        else
            return handle;
    }
}

Arne smider du et svar :-)
Avatar billede arne_v Ekspert
24. oktober 2007 - 01:09 #9
Jeg tror at koden kan laes kortere.

Men hvad pokker.

Det er ihvertfald en lidt heftig test for at undgå spamere.

CATPCHA kan godt gå hjem og lægge sig !

Og svar.
Avatar billede eydun Nybegynder
28. oktober 2007 - 01:12 #10
Og samtidig over på Java... :-)

http://www.eksperten.dk/spm/800819#rid6898935
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester