/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
servlet-> write and read from/to file
Fra : bah


Dato : 10-11-01 19:01

Hej! Jeg vil lave en servlet, så man kan skrive til en fil i samme bibliotek
som servlet'en ligger. Men jeg ved ikke rigtig hvordan? Koden jeg har leget
indtil videre( som ikke kan gøre jobbet) er :


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

public class MainServ extends HttpServlet {
ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
static String exam_name=null;
static String course_name=null;

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
PrintWriter out = response.getWriter();

response.setContentType("text/html");
out.println("<html>");
out.println("<body>");
out.println("<head>");

String title = rb.getString("requestparams.title");
out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");

out.println("<h3>" + title + "</h3>");
exam_name = request.getParameter("exam");
course_name = request.getParameter("course");
out.println(rb.getString("requestparams.params-in-req") + "<br>");
if (exam_name != null || course_name != null) {
out.println(rb.getString("requestparams.exam"));
out.println(" = " + exam_name + "<br>");
out.println(rb.getString("requestparams.course"));
out.println(" = " + course_name);
} else {
out.println(rb.getString("requestparams.no-params"));
}
out.println("<P>");
out.print("<form action=\"");
out.print("MainServ\"");
out.println("method=POST>");
out.println(rb.getString("requestparams.exam"));
out.println("<input type=text size=20 name=exam>");
out.println("<br>");
out.println(rb.getString("requestparams.course"));
out.println("<input type=text size=20 name=course>");
out.println("<br>");
out.println("<input type=submit>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
}//method doGet ends

public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException{

String newline;
String filename="dbExam.dat";
PrintWriter out = response.getWriter();
newline=exam_name + "|" + course_name;

// class control er den klasse, som har methoden til at skrive til
filen
// methoden i Control klasse returnerer boolean.
// problemet er at jeg får intet at vide fra dette metode kald.

Control c= new Control(filename);
if (c.addToFile(newline,
name)){
out.println("<add to file completed>");
} else{out.println("<add to file failed>");
}
doGet(request, response);
}//method doPost ends
}

Jeg tror der er noget galt med den måde, som request og respond i doGet og doPost metode er brugt, og at det skal arrangeres på en anden måde. Nogen der kan hjælpe mig med det? Eller generale tips om hvad princippet er for at bruge doGet og doPost (skrive og læse fra/til en fil)? Det er apcahe tomcat jeg bruger som server.

Mvh/Emil






 
 
Dennis Thrysøe (11-11-2001)
Kommentar
Fra : Dennis Thrysøe


Dato : 11-11-01 14:53

doPost() og doGet() er convenience-metoder for at håndtere HTTP's GET og
POST kommandoer. Oftest gør disse to metoder det samme (ved at den ene
bare altid kalder den anden).

doPost() har ikke noget med at gemme en fil på serveren at gøre. Det kan
du gøre med en FileOutputStream eller lignende.

Hvad angår placeringen af filen vil det ikke altid kunne være samme sted
som Servlet'en, da Servlet specifikationen giver mulighed for at pakke
web applikationer (herunder Servlets) i en jar (war) fil.

Jeg vil foreslå at konfigurere som en init-parameter hvor filerne skal
gemmes.

-dennis



bah wrote:

> Hej! Jeg vil lave en servlet, så man kan skrive til en fil i samme bibliotek
> som servlet'en ligger. Men jeg ved ikke rigtig hvordan? Koden jeg har leget
> indtil videre( som ikke kan gøre jobbet) er :
>
>
> import java.io.*;
> import java.text.*;
> import java.util.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> public class MainServ extends HttpServlet {
> ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
> static String exam_name=null;
> static String course_name=null;
>
> public void doGet(HttpServletRequest request,
> HttpServletResponse response)
> throws IOException, ServletException {
> PrintWriter out = response.getWriter();
>
> response.setContentType("text/html");
> out.println("<html>");
> out.println("<body>");
> out.println("<head>");
>
> String title = rb.getString("requestparams.title");
> out.println("<title>" + title + "</title>");
> out.println("</head>");
> out.println("<body bgcolor=\"white\">");
>
> out.println("<h3>" + title + "</h3>");
> exam_name = request.getParameter("exam");
> course_name = request.getParameter("course");
> out.println(rb.getString("requestparams.params-in-req") + "<br>");
> if (exam_name != null || course_name != null) {
> out.println(rb.getString("requestparams.exam"));
> out.println(" = " + exam_name + "<br>");
> out.println(rb.getString("requestparams.course"));
> out.println(" = " + course_name);
> } else {
> out.println(rb.getString("requestparams.no-params"));
> }
> out.println("<P>");
> out.print("<form action=\"");
> out.print("MainServ\"");
> out.println("method=POST>");
> out.println(rb.getString("requestparams.exam"));
> out.println("<input type=text size=20 name=exam>");
> out.println("<br>");
> out.println(rb.getString("requestparams.course"));
> out.println("<input type=text size=20 name=course>");
> out.println("<br>");
> out.println("<input type=submit>");
> out.println("</form>");
> out.println("</body>");
> out.println("</html>");
> }//method doGet ends
>
> public void doPost(HttpServletRequest request,
> HttpServletResponse response)
> throws IOException, ServletException{
>
> String newline;
> String filename="dbExam.dat";
> PrintWriter out = response.getWriter();
> newline=exam_name + "|" + course_name;
>
> // class control er den klasse, som har methoden til at skrive til
> filen
> // methoden i Control klasse returnerer boolean.
> // problemet er at jeg får intet at vide fra dette metode kald.
>
> Control c= new Control(filename);
> if (c.addToFile(newline,
> name)){
> out.println("<add to file completed>");
> } else{out.println("<add to file failed>");
> }
> doGet(request, response);
> }//method doPost ends
> }
>
> Jeg tror der er noget galt med den måde, som request og respond i doGet og doPost metode er brugt, og at det skal arrangeres på en anden måde. Nogen der kan hjælpe mig med det? Eller generale tips om hvad princippet er for at bruge doGet og doPost (skrive og læse fra/til en fil)? Det er apcahe tomcat jeg bruger som server.
>
> Mvh/Emil
>
>
>
>
>
>


bah (11-11-2001)
Kommentar
Fra : bah


Dato : 11-11-01 16:56

Hej! Jeg bruger også "FileOutputStream " til at skrive til filen. Men det
ligger i classen Control, som gerne skulle blive kaldt fra servletten. Der
ligger også alle væsentlige og mere komplekse funktionkald (i klassen
Control).

Control c= new Control(filename);
if (c.addToFile(newline,filename)){
out.println("<add to file completed>");
} else{out.println("<add to file failed>");
}

Men problemet er tilsyneladende at de metode kald til klassen Control fra
serletten "MainServ.java" bliver overhovedet ikke sendt til den. Hvordan
kalrer man det (metodekald til andre klasser)? Du nævnte noget med "init".
Jeg har set det i tomcat documentation. Men det er ikke lige til at oveskue.
Ved du, hvordan bruges det ?

Mvh/Emil


"Dennis Thrysøe" <qabi@qabi.dk> wrote in message
news:3BEE82D2.8080901@qabi.dk...
> doPost() og doGet() er convenience-metoder for at håndtere HTTP's GET og
> POST kommandoer. Oftest gør disse to metoder det samme (ved at den ene
> bare altid kalder den anden).
>
> doPost() har ikke noget med at gemme en fil på serveren at gøre. Det kan
> du gøre med en FileOutputStream eller lignende.
>
> Hvad angår placeringen af filen vil det ikke altid kunne være samme sted
> som Servlet'en, da Servlet specifikationen giver mulighed for at pakke
> web applikationer (herunder Servlets) i en jar (war) fil.
>
> Jeg vil foreslå at konfigurere som en init-parameter hvor filerne skal
> gemmes.
>
> -dennis
>
>
>
> bah wrote:
>
> > Hej! Jeg vil lave en servlet, så man kan skrive til en fil i samme
bibliotek
> > som servlet'en ligger. Men jeg ved ikke rigtig hvordan? Koden jeg har
leget
> > indtil videre( som ikke kan gøre jobbet) er :
> >
> >
> > import java.io.*;
> > import java.text.*;
> > import java.util.*;
> > import javax.servlet.*;
> > import javax.servlet.http.*;
> >
> > public class MainServ extends HttpServlet {
> > ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
> > static String exam_name=null;
> > static String course_name=null;
> >
> > public void doGet(HttpServletRequest request,
> > HttpServletResponse response)
> > throws IOException, ServletException {
> > PrintWriter out = response.getWriter();
> >
> > response.setContentType("text/html");
> > out.println("<html>");
> > out.println("<body>");
> > out.println("<head>");
> >
> > String title = rb.getString("requestparams.title");
> > out.println("<title>" + title + "</title>");
> > out.println("</head>");
> > out.println("<body bgcolor=\"white\">");
> >
> > out.println("<h3>" + title + "</h3>");
> > exam_name = request.getParameter("exam");
> > course_name = request.getParameter("course");
> > out.println(rb.getString("requestparams.params-in-req") +
"<br>");
> > if (exam_name != null || course_name != null) {
> > out.println(rb.getString("requestparams.exam"));
> > out.println(" = " + exam_name + "<br>");
> > out.println(rb.getString("requestparams.course"));
> > out.println(" = " + course_name);
> > } else {
> > out.println(rb.getString("requestparams.no-params"));
> > }
> > out.println("<P>");
> > out.print("<form action=\"");
> > out.print("MainServ\"");
> > out.println("method=POST>");
> > out.println(rb.getString("requestparams.exam"));
> > out.println("<input type=text size=20 name=exam>");
> > out.println("<br>");
> > out.println(rb.getString("requestparams.course"));
> > out.println("<input type=text size=20 name=course>");
> > out.println("<br>");
> > out.println("<input type=submit>");
> > out.println("</form>");
> > out.println("</body>");
> > out.println("</html>");
> > }//method doGet ends
> >
> > public void doPost(HttpServletRequest request,
> > HttpServletResponse response)
> > throws IOException, ServletException{
> >
> > String newline;
> > String filename="dbExam.dat";
> > PrintWriter out = response.getWriter();
> > newline=exam_name + "|" + course_name;
> >
> > // class control er den klasse, som har methoden til at skrive
til
> > filen
> > // methoden i Control klasse returnerer boolean.
> > // problemet er at jeg får intet at vide fra dette metode kald.
> >
> > Control c= new Control(filename);
> > if (c.addToFile(newline,
> >
)){
> > out.println("<add to file completed>");
> > } else{out.println("<add to file failed>");
> > }
> > doGet(request, response);
> > }//method doPost ends
> > }
> >
> > Jeg tror der er noget galt med den måde, som request og respond i doGet og doPost metode er brugt, og at det skal arrangeres på en anden måde. Nogen der kan hjælpe mig med det? Eller generale tips om hvad princippet er for at bruge doGet og doPost (skrive og læse fra/til en fil)? Det er apcahe tomcat jeg bruger som server.
> >
> > Mvh/Emil
> >
> >
> >
> >
> >
> >
>




Dennis Thrysøe (12-11-2001)
Kommentar
Fra : Dennis Thrysøe


Dato : 12-11-01 08:24

bah wrote:

> Hej! Jeg bruger også "FileOutputStream " til at skrive til filen. Men det
> ligger i classen Control, som gerne skulle blive kaldt fra servletten. Der
> ligger også alle væsentlige og mere komplekse funktionkald (i klassen
> Control).

>
> Control c= new Control(filename);
> if (c.addToFile(newline,filename)){
> out.println("<add to file completed>");
> } else{out.println("<add to file failed>");
> }
>
> Men problemet er tilsyneladende at de metode kald til klassen Control fra
> serletten "MainServ.java" bliver overhovedet ikke sendt til den. Hvordan
> kalrer man det (metodekald til andre klasser)? Du nævnte noget med "init".
> Jeg har set det i tomcat documentation. Men det er ikke lige til at oveskue.
> Ved du, hvordan bruges det ?


Når en Servlet gøres klar kaldes init(ServletContext) metoden på den. På
HttpServlet er der også en init() metode der kaldes når
ServletContext'en allerede er sat i en medlemsvariabel. Tilsvarende er
der en destroy() metode.

Ellers ser det rimeligt korrekt ud, forudsat at din servlet er mounted
som angivet i <form<'ens target attribut.

-dennis


Lars Mosegård (12-11-2001)
Kommentar
Fra : Lars Mosegård


Dato : 12-11-01 16:27


"bah" <hanapo@get2net.dk> skrev i en meddelelse
news:3bed6c95$0$4864$ba624c82@nntp02.dk.telia.net...
> Hej! Jeg vil lave en servlet, så man kan skrive til en fil i samme bibliotek
> som servlet'en ligger.
>
Du har kontrolleret at servletten har rettigheder til at skrive til filen /
oprette filer i folderen?

Mvh
Lars



bah (14-11-2001)
Kommentar
Fra : bah


Dato : 14-11-01 11:31

Næ, det har jeg ikke checket. Mener du at ligesom applet skal den have
rettigheder til ar skrive til file? Hvordan får man evt. rettighed?

Emil


"Lars Mosegård" <lamos@post8.tele.dk> wrote in message
news:3befe9e2$0$250$edfadb0f@dspool01.news.tele.dk...
>
> "bah" <hanapo@get2net.dk> skrev i en meddelelse
> news:3bed6c95$0$4864$ba624c82@nntp02.dk.telia.net...
> > Hej! Jeg vil lave en servlet, så man kan skrive til en fil i samme
bibliotek
> > som servlet'en ligger.
> >
> Du har kontrolleret at servletten har rettigheder til at skrive til filen
/
> oprette filer i folderen?
>
> Mvh
> Lars
>
>



Lars Mosegård (14-11-2001)
Kommentar
Fra : Lars Mosegård


Dato : 14-11-01 20:56

"bah" <hanapo@get2net.dk> skrev i en meddelelse
news:3bf24919$0$11602$ba624c82@nntp01.dk.telia.net...
> Næ, det har jeg ikke checket. Mener du at ligesom applet skal den have
> rettigheder til ar skrive til file? Hvordan får man evt. rettighed?
>
Servletten har samme rettigheder som webserveren/servletrunneren. Så hvis
webserveren kører som bruger 'httpd', skal brugeren 'httpd' have rettigheder til
at oprette filer i pågældende bibliotek og/eller skrive til pågældende fil.
I Linux anvendes chmod/chown til at give rettigheder, under windowze klikker man
lidt rundt med musen

Mvh
Lars



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste