Gå til innhold

Fil I/O i JSP, samt et spm om mottak av POST/GET


Anbefalte innlegg

Har prøvd å skrive en liten internettside (en del er selvsagt hentet fra tutorials, jeg har ikke kommet lengre enn for-løkker i undervisninga, så syntaxen på try/catch-exeptions osv er fullstendig ukjent for meg (frem til nå)).

 

Jeg får ingen feil når jeg sender parameteret store=HaaaHaaaHaaaaaa, men det skjer litt mindre enn jeg hadde håpet. Det blir ikke sendt noen exeptions, eller ihvertfall ikke fanget noen. Det blir heller ikke skrevet noe i fila (det er dette jeg ønsker at det skal). Det eneste som funker er out.println(storage) som sender tilbake parameteren til nettleseren. Dersom det skulle være feil chmod på filene ville man vel fått en IO-exeption?

 

Jeg har prøvd flere forskjellige varianter av fw.write, som f.eks. fw.write(storage), fw.write(storage, true), fw.write(storage, 0, 15), osv. Det funker heller ikke om jeg prøver å hardkode en streng som fw.write("HaaaHaaa").

 

Noen som vet hva som er feil? Eller evt vet hvordan stud-web-områdene på NTNU er chmoddet?

 

Et annet spørsmål er om det er mulig å ta imot parametre uten å gi dem navn, dvs at jeg f.eks. vil sende noe til ei nettside slik: (...)/index.jsp?DataherDataher

 

<%@ page import="java.io.*" %>

<%
String storage = request.getParameter("store");
out.println(storage);

try{
FileWriter fw = new FileWriter("test.txt", true);
fw.write(storage);
fw.close();
}

catch (IOException io)
{
System.out.println ( "FILEWRITER EXCEPTION " +io.getMessage() );
}

catch (Exception e)
{
System.out.println (" FILEWRITER GENERIC EXCEPTION " +e.getMessage());
}
%>

Lenke til kommentar
Videoannonse
Annonse

prøv å endre io.getMessage() til bare io, da.

System.out.println(io); eller System.out.println(e);

 

Men System.out.println(storage); gir deg alt innholdet du prøver å skrive til filen? Slik at du vet du ikke prøver å skrive null til en fil og det faktisk vellykkes?

 

Har du sjekket når filene dine sist ble endret?

Lenke til kommentar
Men System.out.println(storage); gir deg alt innholdet du prøver å skrive til filen? Slik at du vet du ikke prøver å skrive null til en fil og det faktisk vellykkes?

 

Har du sjekket når filene dine sist ble endret?

6939608[/snapback]

Filene ble ikke endret, men en vanlig out.println gir meg alt innholdet jeg sender som en parameter til filen ja. Forstår ikke det her, men nå har jeg sendt et spørsmål til en eller annen stud/vit/und-ass og spurt og chmods på mappene/filene eller om det er noe annet feil. Om ikke de løser det så begynner jeg å lure =)

Lenke til kommentar

Ikke rukket å teste, skal gjøre det nu. Editer svar inn her så fort jeg har fått kobla meg opp til NTNU og endret nettsida.

 

edit:

Fremdeles ikke noe som helst å få ut fra catch-statementsene, så jeg frykter at det ikke blir sendt noen exeption. Av en eller annen grunn begynte den å klage om jeg hadde appendflagget satt når jeg kaller fw.write(), så jeg måtte fjerne det andre parameteret.

Testet slik:

<%@ page import="java.io.*" %>

<%
String storage = request.getParameter("store");
System.out.println(storage);

try{
FileWriter fw = new FileWriter("test.txt", true);
fw.write(storage);
fw.close();
}

catch (IOException io)
{
System.out.println( "FILEWRITER EXCEPTION " + io );
}

catch (Exception e)
{
System.out.println(" FILEWRITER GENERIC EXCEPTION " + e );
}
%>

Endret av Zethyr
Lenke til kommentar

Rart, for følgende fungerer jo helt fint som et vanlig Java-program:

import java.io.*;
class SkrivTilFil {
public static void main(String[] args) {
 String storage = "Hallo, der";
 try {
 FileWriter fw = new FileWriter("test.txt", true);
 fw.write(storage);
 fw.close();
 }
 catch (IOException ioe) {
 	System.out.println("IO: " + ioe);
 }
}
}

Lenke til kommentar

Jeg begynner å tro det er en kombinasjon av at man ikke har skrivetilgang til annet enn databaser, samt at Resin JSP-serveren ikke sender exeptions som den skal som er problemet. Jeg stikker en tur innom und-ass-kontoret i morgen og hører med dem, selv om de ikke klarte å finne et umiddelbart svar på den nokså strippede versjonen av problemet jeg mailet dem i går.

Lenke til kommentar

Har funnet ut en del ting, etter en lengre samtale med flere und.-asser. Selv om én av dem ikke forstår poenget med noen andre filer enn databaser, fikk jeg en del nyttig ut av de to andre:

Problemet er at JSP-serveren antakeligvis lagrer filene (derav ingen exeptions), men at de lagres et helt annet sted. Etter en god stund med hard-koding av adresser, leting, chmodding osv., tror jeg nesten at jeg gir opp. Når to und.-asser ikke klarer å hjelpe meg når de har en time til rådighet, tror jeg at jeg heller prøver å lære meg andre ting før jeg prøver å finne ut av hvordan JSP-serverene og mappe-hierarkiene på NTNU er satt opp. Om ikke lenge kommer jeg nok heller til å kjøre en JSP-server her hjemme, så jeg får testet ut lagring av plaintext-dokumenter osv.

Lenke til kommentar
Men du fikk ikke til å lagre med statisk adresse? Har du shell-tilgang? Prøvd å kjøre pwd?

 

Hvis det er sant at PATH er et annet sted enn webområdet bør jo du kunne åpne filen igjen etter den er skrevet...

6943037[/snapback]

Har prøvd pwd for å finne statisk adresse, men jeg prøvde også å kjøre getAbsolutePath(), noe som ga en annen output. Mye tyder på at sidene blir kopiert inn i et temp-område før de blir kjørt.

Lenke til kommentar

Har flere problemer, men jeg gidder ikke lage en ny tråd:

 

Har bestemt meg for å teste med databaser først, ettersom en leteaksjon etter .txt-filene vil iverksette hele NTNU's IT-stab.

 

Får nå følgende errors:

java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:532)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at _magnhaug._JSP_22dtestzone._sql__jsp._jspService(/magnhaug/JSP-testzone/sql.jsp:6)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.subservice(Page.java:486)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
at com.caucho.server.http.Invocation.service(Invocation.java:311)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:218)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:160)
at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
at java.lang.Thread.run(Thread.java:534)

 

Ved bruk av følgende kode:

<%
String userCookie =  request.getParameter("a");

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

java.sql.Connection db = java.sql.DriverManager.getConnection( 
   	"jdbc;mysql://mysql.stud.ntnu.no/magnhaug_ntnu", "magnhaug", "Iamroot1");
   
java.sql.Statement st = db.createStatement();
 
String sp = "INSERT INTO cookies(cookie) VALUES(userCookie)";
st.executeQuery(sp);

%>

 

Gjør jeg noe feil med driveren her? Jeg bruker bare det jeg har fått oppgitt i boka.

Lenke til kommentar
Gjør jeg noe feil med driveren her? Jeg bruker bare det jeg har fått oppgitt i boka.

6946891[/snapback]

 

Ved første og beste øyekast ser det til at det er en liten feil i URL'en, det skal være "jdbc:" ikke "jdbc;".

6966179[/snapback]

Gah, sånt er lett å misse på og overse =/ Thx.

Har ikke hatt tid til å se mer på det dog.

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...