Avatar billede noerdar-dilling Nybegynder
23. november 2004 - 19:22 Der er 5 kommentarer og
1 løsning

Angående posting af data uden form

Jeg ønsker at vidre sende data til en servlet, men ikke med en form man selv skal udfylde men simpelthen bare ved at klikke på forskellige links der repræsenterer forskellige værdier som servletten skal lede efter.

Jeg har et eksempel hvor jeg har en masse bøger og disse bøger har en genre. Der kunne f.eks. være:

Krimi
Gyser

Disse skal fremstå som et link og når man klikker på linket vidre sendes værdien for genren til servletten. Jeg har lavet et eksempel hvor jeg selv skal indtaste genren i et felt og derefter klikke Vis Liste, men jeg ønsker istedet at man skal trykke på de genre som links istedet, da det ikke altid man ved hvilke genre der er, så er det nemre de står som en liste links.

Nedenfor er mit eksempel som Arne_V har bidraget til

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Bog Liste</title>
</head>

<body>

<strong>Bog liste</strong>
<br/>
<br/>
<form method="post" action="listeServlet">

<table cellspacing="2" cellpadding="2" border="0">
<tr>
<td>Genre:</td>    ()Ønsker links istedet der sender den

/*relevante genre parameter der kan opfanges på s
*/amme måde som servletten.
   
<td><input type="text" name="genre" size="20"/></td>
</tr>
</table>

<br/>
<input type="submit" value="Vis Liste"/>
</form>
<br/>

<jsp:useBean id="bogListe" scope="request" class="java.util.ArrayList"/>
<jsp:useBean id="search" scope="request" class="java.lang.String"/>
<jsp:useBean id="searchnone" scope="request" class="java.lang.String"/>

<%
if(search.equals("done")) {
%>
Bogliste
<br/>
<br/>

<%
if(bogListe.size()==0) {
%>
Der er ikke nogle bøger under denne kategori
<%
}
for(int i = 0; i < bogListe.size(); i++) {
  test.bog bog = (test.bog)bogListe.get(i);
%>
<table cellspacing="2" cellpadding="2" border="0">

<tr>
    <td>Titel:</td>
    <td><%=bog.getTitel()%></td>
</tr>
<%
}
}


%>

<%if(searchnone.equals("none")) {
%>
Denne Kategori findes ikke
<%
}
%>

</body>
</html>

Jeg har inkluderet min bean og min servlet der skal returnerer alle de bøger der befinder sig inden for den aktuelle genre, kun repræsenteret ved titel. Denne konstruktør med kun titel er medtaget i min bean.

Servletten

package test;

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

public class listeServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


     
        try {
           
String genre;


int counter =0;


DbUtil dbu = new DbUtil();
Connection con = dbu.getConnection();
Statement stmt = con.createStatement();


genre = request.getParameter("genre");



if(genre.length() > 0)    {

ResultSet rs = stmt.executeQuery("SELECT titel FROM boeger WHERE genre = '" + genre + "'");     

ArrayList boger = new ArrayList();

while(rs.next()) {
   
boger.add(new bog(rs.getString(1)));

}
request.setAttribute("search", "done");
request.setAttribute("boger", boger);

rs.close();

stmt.close();

counter = 1;

    }

else  {
    if(counter ==0)
    request.setAttribute("searchnone", "none");
}


con.close();


     
} catch (Exception e) {
        }
        getServletConfig().getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
    }
}

BEANEN

package test;

public class bog {


private int isbn;
private String forfatter;
private String titel;
private String forlag;
private String beskrivelse;

   
public bog() {

     
isbn = 0;
forfatter = "";
titel = "";
forlag = "";
beskrivelse = "";

}

public bog(String titel) {
this.titel = titel;

}
   
   
    public bog(int isbn, String forfatter, String titel, String forlag, String beskrivelse) {
      this.isbn = isbn;
      this.forfatter = forfatter;
      this.titel = titel;
      this.forlag = forlag;
      this.beskrivelse = beskrivelse;
     
      }

   
    public int getIsbn() {
        return isbn;
    }
    public void setIsbn(int isbn) {
        this.isbn = isbn;
    }
    public String getForfatter() {
        return forfatter;
    }
    public void setForfatter(String forfatter) {
        this.forfatter = forfatter;
    }
   
      public String getTitel() {
        return titel;
    }
    public void setTitel(String titel) {
        this.titel = titel;
    }
   
      public String getForlag() {
        return forlag;
    }
    public void setForlag(String forlag) {
        this.forlag = forlag;
    }
      public String getBeskrivelse() {
        return beskrivelse;
    }
    public void setBeskrivelse(String beskrivelse) {
        this.beskrivelse = beskrivelse;
    }
   
}
Avatar billede arne_v Ekspert
23. november 2004 - 20:03 #1
Vi er faktisk mere ovre i noget client side HTML/JavaScript her.

Umiddelbart synes jeg at det var pænest at lave genre som en combo box
(SELECT OPTION i HTML) og så beholde submit knappen seperat. Den SELECT OPTION kode
kan nemt genereres server side udfra en SQL SELECT statement.

Men jeg tror at man kan lave noget smart med JavaScript. Det ligger dog
lidt udenfor mit ekspertise område.
Avatar billede arne_v Ekspert
23. november 2004 - 20:05 #2
Et stykke kode jeg havde på lager:

        out.println("<FORM METHOD='GET' ACTION='RememberServlet'>");
        out.println("<SELECT NAME='selbox'>");
        for(int i = 0; i < fromdatabase.length; i++) {
            if(fromdatabase[i].equals(sel)) {
                out.println("<OPTION SELECTED>" + fromdatabase[i]);   
            } else {
                out.println("<OPTION>" + fromdatabase[i]);   
            }
        }
        out.println("</SELECT>");   
        out.println("<INPUT TYPE='SUBMIT' VALUE='Submit'>");
        out.println("</FORM>");
Avatar billede arne_v Ekspert
23. november 2004 - 20:11 #3
Eller har jeg misforstået dig og du vil bare vise bøger og så kan man klikke på genre
og så viser den oplysninger om genren ?
Avatar billede noerdar-dilling Nybegynder
23. november 2004 - 20:34 #4
Nej det er fint har løst det men tak fro det send et svar Arne. Løste det med en listeServlet jeg lavede der tog imog nogle Get request.
Avatar billede arne_v Ekspert
23. november 2004 - 20:39 #5
Jeg synes ikke at jeg har bidraget med noget, så læg selv et svar og
accepter det.
Avatar billede noerdar-dilling Nybegynder
23. november 2004 - 20:46 #6
ok
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