Gå til innhold

Applet med brukerdatabase


Anbefalte innlegg

Jag har laget en applet som lar en prøve seg i hoderegning og bruk av det numeriske tastaturet.

Nå har jeg lust å lage en database for brukere og testresultat. Jeg har forstått at en applet ikke kan lese fra og skrive til filer på serveren på samme måte som en applet leser og skriver til filer på PCen. Så jeg lurer på om noen kan fortelle meg hvilke teknikker som kan brukes.

 

Jeg akter å benytte et webhotel på netshop.

Lenke til kommentar
Videoannonse
Annonse

En Applet kjører på brukerens maskin, ikke på serveren, derfor vil ikke Applet'en ha tilgang til de samme ressursene som serveren.

Jeg tror den enkleste måten er å sette opp en enkel web-server som tar imot et sett med data og lagrer dette i databasen. Applet'en kan da kjøre enkle HTTP-kall mot serveren for å lagre/hente data.

Husk: En unsigned Applet, kan du kun opprette tilkobling til samme host som Applet'en ble hentet fra.

Lenke til kommentar

Jeg hadde tenkt å legge den ut på et web-hotel i regi av Domeneshop.no. Da regner jeg med at HTTP-kallet kan gå mot deres server?

Databasen vil ikke være rare greiene. I første omgang kun en fil med navn og en fil med navn + int-verdier. Filene kan ligge på samme område som appleten.

Hvordan gjøres et HTTP-kall?

Er det vanlige java-metoder som jeg finner dokuemntert på Suns api eller må jeg tilegne meg kunnskaper på helt andre områder, og hvor finner jeg i så tilfelle denne kunnskapen?

Lenke til kommentar

Hvis du legger applet'en på et web-hotel hos domeneshop, må server-delen (også der HTTP kallet skal gå til) også ligge på samme web-hotel.

Jeg vil anbefale apache sitt HttpClient bibliotek, veldig enkelt å bruke med både GET og POST.

Et lite eksempel på en HTTP POST:

PostMethod post = new PostMethod("dinurl");
NameValuePair[] data = new NameValuePair[]{
new NameValuePair("parameter", "value");
new NameValuePair("parameter", "value");
}
post.setRequestBody(data);
HttpClient client = new HttpClient();
int returncode=client.executeMethod(post);

 

Denne sender et sett med parametere og tilhørende verdi til en webserver.

Responsen kan enkelt leses via en InputStream fra PostMethod objectet (eller hurtigversjonen post.getResponseBodyAsString()).

 

Lykke til

Lenke til kommentar

Hvis du legger applet'en på et web-hotel hos domeneshop, må server-delen (også der HTTP kallet skal gå til) også ligge på samme web-hotel.

Jeg vil anbefale apache sitt HttpClient bibliotek, veldig enkelt å bruke med både GET og POST.

...

Dersom du mener at jeg må skrive java-kode som kjører Domeneshop sin server så er jeg usikker på om det støttes. Hvis den bare skal kjøre mot serveren så skel jeg sikkert greie å finne ut av det ved å lese Apache sin tutorial.

 

Hvis ikke det går må jeg kanskje lære meg PHP? Og MySQL?

 

Beklager om jeg virker treg, men ingen av de bøkene jeg har om jave behandler emnet og jeg finner ikke noen enkel veiledning på nettet heller.

Lenke til kommentar

Kan du ikke bare lage en SQL database? Det skal vel ikke være så vanskelig. Og det bør vel appletten kunne skrive og lese direkte til og fra, så sant du setter riktig policy instillinger.

http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/dba.html

Sql er helt nytt for meg, men jeg kan nok lere meg det først som sist. Det var uansett det som stod på planen. Jeg får prøve å finne en god tutorial.

Lenke til kommentar

Kan du ikke bare lage en SQL database? Det skal vel ikke være så vanskelig. Og det bør vel appletten kunne skrive og lese direkte til og fra, så sant du setter riktig policy instillinger.

http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/dba.html

 

Eller bare laste opp og ned en flat fil over http ... det krever jo ikke at noe kode kjører på serveren.

Det var det jeg prøvde, det er slik jeg har kjørt det på min egen PC. Det fungerer fint, men det ser ut til at jeg må sette rettighetene til appleten for at det skal gå. Jeg skal se litt på det, i mellomtiden har jeg lastet opp noe annet.

Lenke til kommentar

Nå har jeg i hvert fall kommet så langt at jeg kan lese filer på serveren, men jeg får det ikke til å endre dem. Jeg har en følelse av at det kanskje er Domeneshops serverinstillinger som forhindrer det, men dersom noen vet hvordan jeg skal få det til så er jeg veldig takknemlig.

Følgende lille testapplet leser filen, men skriving til filen går ikke. Appleten ligger på mitt domene på en server hos Domeneshop og filen ligger i den samme mappen.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedWriter;

public class Test extends JApplet implements ActionListener{

   JTextField textField;
   JTextArea textArea;
   URL popetersson;
   URLConnection poc;

 public Test() throws Exception
 {
     textField = new JTextField(20);
     textField.setText("Hallo?");
     textField.addActionListener(this);
     add(textField, BorderLayout.NORTH);
     textArea = new JTextArea(20,20);
     add(textArea, BorderLayout.CENTER);
     popetersson = new URL("http://popetersson.name/Test2/Brukere.txt");
     poc = popetersson.openConnection();
     BufferedReader in = new BufferedReader(new InputStreamReader(poc.getInputStream()));
     String inputline;

     while((inputline = in.readLine()) != null)
         textArea.append(inputline + "\n");
     in.close();
 }
public void actionPerformed(ActionEvent e)
{
           try     
           {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(poc.getOutputStream()));   
       out.write(textField.getText());
       out.close();
           }
           catch(Exception ex)
           {
                   textField.setText("Skriving til fil misslyktes");
       }
}
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...