Avatar billede f_bar Nybegynder
10. februar 2003 - 22:46 Der er 18 kommentarer og
1 løsning

simpel doGet servlet

Er der en der lige hurtigt kan lave en simpel doGet servlet, der laver en forespørgsel til en url
http://noget.dk?noget=1
og skriver det output der kommer retur ud på skærmen ?
Avatar billede disky Nybegynder
10. februar 2003 - 23:04 #1
kig på f.eks.:
http://www.eksperten.dk/spm/50143

Der er det vist en servlet, også med en doGet() metode.
Avatar billede f_bar Nybegynder
10. februar 2003 - 23:06 #2
jaa en multi lang servlet, men jeg synes ikke at kunne finde et http-request og et response der bliver fanget og skrevet ud ?
Avatar billede disky Nybegynder
10. februar 2003 - 23:09 #3
prøv med:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class testServlet extends HttpServlet
{
    /**
    * Service
    * Handles GET request-response
    * @param    HttpServletRequest, HttpServletResponse
    */
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
      response.setContentType("text/html");
      PrintWriter out = new PrintWriter (response.getOutputStream());
     
      String data=request.getParameter("noget");
      out.println("noget = "+noget);
    }

}
Avatar billede disky Nybegynder
10. februar 2003 - 23:09 #4
den er dog ikke testet, skal det lige siges.
Avatar billede f_bar Nybegynder
10. februar 2003 - 23:11 #5
mener du ikke
String data=request.getParameter("http://noget.dk/noget");
eller ? hvordan skal jeg liige forklare ved hvilken ip denne variabel skal hentes ?
Avatar billede f_bar Nybegynder
10. februar 2003 - 23:15 #6
hmm nej det vil nok heller ikke virke, hmmm
Avatar billede disky Nybegynder
10. februar 2003 - 23:16 #7
nej jeg mener det jeg skrev.

Hvis vi siger du i din web.xml har mappet denne servlet til navnet 'testeren' skal du skrive:

http://www.mitdomain.dk/testeren?noget=87

Så laver linien :      String data=request.getParameter("noget");

at den henter det parameter der hedder 'noget' fra http dataen sendt fra browseren, det vil sige Stringen 'data' kommer til at indeholde '87'

www.mitdomain.dk skal selvfølgelig være det domæne du vil bruge
Avatar billede f_bar Nybegynder
10. februar 2003 - 23:17 #8
og ellers vel også
String data=request.getParameter("noget");
      out.println("noget = "+ data);
da noget ikke er en variabel, men data er. men jeg kan ikek lige se hvordan man skal fortælle hvilken ip man skal hente fra ?
Avatar billede disky Nybegynder
10. februar 2003 - 23:18 #9
Du skal ikke nævne nogen IP, servletten bliver jo kaldt fra en browser, og serveren håndterer selv det med IP'en
Avatar billede disky Nybegynder
10. februar 2003 - 23:20 #10
ups
out.println("noget = "+noget);
skal være
out.println("noget = "+data);


som du selv opdagede :)
Avatar billede f_bar Nybegynder
10. februar 2003 - 23:20 #11
hmm, jeg ved ikke, men jeg tror vi snakker lidt forbi hinanden, hvis ikke så forstår jeg ikke helt dit svar.
Jeg skal hente noget data fra en anden side ude på nettet, somewhere. dvs. ikke samme sted som min servlet. vi kan sige at min servlet står på http://localhost/testeren
og den side jeg skal hente oplysninger fra står på
http://ikkelocalhost.dk?noget=87
hvorefter jeg så gerne skulle få et svar tilbage
Avatar billede disky Nybegynder
10. februar 2003 - 23:26 #12
ah okay, så snakker vi ikke om doGet() eller doPost() metoder, så skal du åbne en URL forbindelse og læser det serveren i den anden ende generere. Det den laver kan godt skyldes den 'get' du sender til serveren.
Avatar billede f_bar Nybegynder
10. februar 2003 - 23:28 #13
hmm nej det kan godt være, men kan det ikke laves ??
Avatar billede disky Nybegynder
10. februar 2003 - 23:35 #14
den servlet du vil lave skal den ligge på localhost eller ikkelocalhost ?

på localhost giver det ingen mening at bruge en servlets doGet() eller doPost() metode.
Okay du kan godt lade doGet() metoden åbne en URL forbindelse så den henter en side fra ikkelocalhost serveren
Avatar billede f_bar Nybegynder
10. februar 2003 - 23:39 #15
ok det er slet ikke sikkert det skal ligge i servleten så, for det var meningen at jeg skulle ha en php siden, der skulle kalde op til servleten(localhost), som derefter skulle kalde op til en url og læse det der bliver genereret i den anden ende.
Men det kan godt ske at det hele kan laves i php så ???
Eller ??
MEn jeg skal i hvert tilfælde ha hentet det der bliver genereret på siden på ikkelocalhost
Avatar billede disky Nybegynder
10. februar 2003 - 23:46 #16
Hvis du bruger PHP til de andre ting, ville jeg holde det hele i PHP.

Man kan godt sige at alt du kan lave i PHP også kan laves i JSP,ASP,......

Så hold dig til et sprog, det giver oftest den pæneste og bedste løsning.

Det du gør i PHP er at den side du kalder fra en browser åbner filen (html siden) på den anden server.

F.eks. via:

$fp = fopen("http://www.blabla.dk/siden.html", "r");
Avatar billede disky Nybegynder
10. februar 2003 - 23:46 #17
held og lykke, jeg kravler i seng nu :)
Avatar billede f_bar Nybegynder
11. februar 2003 - 10:02 #18
okay, kan ikke helt få det til at virke, men det tager jeg med over i php forumet, så takker
Avatar billede arne_v Ekspert
11. februar 2003 - 11:32 #19
Nu har du jo allerede lukket spørgsmålet, men her er et par
stykker simpel kode, som måske kunne give dig nogle gode ideer:

package test;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class Servlet1 extends HttpServlet {
  //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.sendRedirect("http://noget.dk?noget=1");
    }
}

package test;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import java.util.*;

public class Servlet2 extends HttpServlet {
    //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        URL url = new URL("http://noget.dk?noget=1");
        BufferedInputStream in = new BufferedInputStream(url.openStream());
        byte[] buffer = new byte[8192];
        int bytes_read;
        while ((bytes_read = in.read(buffer) ) != -1) {
            out.println(new String(buffer,0,bytes_read));
        }
        in.close();
    }
}

Den første laver en redirect til din side. Den anden henter
indholdet og displayer den.

Forskellen vil bl.a. vise sig i den URL der vises i browseren.
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