Avatar billede noerdar-dilling Nybegynder
15. november 2004 - 11:36 Der er 14 kommentarer og
1 løsning

Overførsel fra jsp side til servlet

En webapplikation

Ved en form ønsker jeg at sende nogle informationer til en servlet, der skal bruge disse informationer til at lave et opslag i en database. Er der nogel der kan give mig et eksempel på hvordan man sender disse form data til en specefic servlet. I servlettten er der sql sætninger osv der leder i en database udfra den form data der skal være tilgængelig.
Avatar billede arne_v Ekspert
15. november 2004 - 11:50 #1
Er det ikke bare:

<form method="post" action="DinDatabaseOpslagsServlet">
...
</form>

?
Avatar billede arne_v Ekspert
15. november 2004 - 11:57 #2
I servletten henter du så feltværdierne med:

request.getParameter("feltnavn")
Avatar billede noerdar-dilling Nybegynder
15. november 2004 - 12:19 #3
ok. Har du tid til lige at kigge på noget kode. En given funktionen i et JSP dokument med <%! funktion %> er inkluderet, men jeg ønsker at flytte den over i en selvstændig servlet. Normalt ser den kode der kalder funktionen således ud.

<% Total_Show(request, response, session, out, sTotalErr, sForm, sAction, conn, stat); %>

Men øsnker at bruge en samme funktionen med de gældne parameter i en ekstern servlet.
Avatar billede noerdar-dilling Nybegynder
15. november 2004 - 12:20 #4
Sådan ser funktionen ud

public void Results_Show (javax.servlet.http.HttpServletRequest request,
  javax.servlet.http.HttpServletResponse response, javax.servlet.http.HttpSession session, javax.servlet.jsp.JspWriter out,
  String sResultsErr, String sForm, String sAction, java.sql.Connection conn, java.sql.Statement stat) throws java.io.IOException  {
 
    String sWhere = "";
    int iCounter=0;
    int iPage = 0;
    boolean bIsScroll = true;
    boolean hasParam = false;
    String sOrder = "";
    String sSQL="";
    String transitParams = "";
    String sQueryString = "";
    String sPage = "";
    int RecordsPerPage = 20;
    String sSortParams = "";
    String formParams = "";

      String pauthor="";
      String pcategory_id="";
      String pname="";
      String ppricemax="";
      String ppricemin="";


    transitParams = "category_id=" + toURL(getParam( request, "category_id")) + "&name=" + toURL(getParam( request, "name")) + "&pricemin=" + toURL(getParam( request, "pricemin")) + "&pricemax=" + toURL(getParam( request, "pricemax")) + "&author=" + toURL(getParam( request, "author")) + "&";
    formParams = "category_id=" + toURL(getParam( request, "category_id")) + "&name=" + toURL(getParam( request, "name")) + "&pricemin=" + toURL(getParam( request, "pricemin")) + "&pricemax=" + toURL(getParam( request, "pricemax")) + "&author=" + toURL(getParam( request, "author")) + "&";
    // Build WHERE statement
       
    //-- Check author parameter and create a valid sql for where clause
 
    pauthor = getParam( request, "author");
    if (pauthor != null && ! pauthor.equals("")) {
           
        hasParam = true;
        sWhere += "i.author like '%" + replace(pauthor, "'", "''") + "%'";
    }
   
    //-- Check category_id parameter and create a valid sql for where clause
 
    pcategory_id = getParam( request, "category_id");
    if ( ! isNumber (pcategory_id)) {
      pcategory_id = "";
    }
   
    if (pcategory_id != null && ! pcategory_id.equals("")) {
           
      if (! sWhere.equals("")) sWhere += " and ";
        hasParam = true;
        sWhere += "i.category_id=" + pcategory_id;
    }
   
    //-- Check name parameter and create a valid sql for where clause
 
    pname = getParam( request, "name");
    if (pname != null && ! pname.equals("")) {
           
      if (! sWhere.equals("")) sWhere += " and ";
        hasParam = true;
        sWhere += "i.name like '%" + replace(pname, "'", "''") + "%'";
    }
   
    //-- Check pricemax parameter and create a valid sql for where clause
 
    ppricemax = getParam( request, "pricemax");
    if ( ! isNumber (ppricemax)) {
      ppricemax = "";
    }
   
    if (ppricemax != null && ! ppricemax.equals("")) {
           
      if (! sWhere.equals("")) sWhere += " and ";
        hasParam = true;
        sWhere += "i.price<" + ppricemax;
    }
   
    //-- Check pricemin parameter and create a valid sql for where clause
 
    ppricemin = getParam( request, "pricemin");
    if ( ! isNumber (ppricemin)) {
      ppricemin = "";
    }
   
    if (ppricemin != null && ! ppricemin.equals("")) {
           
      if (! sWhere.equals("")) sWhere += " and ";
        hasParam = true;
        sWhere += "i.price>" + ppricemin;
    }
   
    if (hasParam) { sWhere = " AND (" + sWhere + ")"; }
    // Build ORDER statement
    sOrder = " order by i.name Asc";
    String sSort = getParam( request, "FormResults_Sorting");
    String sSorted = getParam( request, "FormResults_Sorted");
    String sDirection = "";
    String sForm_Sorting = "";
    int iSort = 0;
    try {
      iSort = Integer.parseInt(sSort);
    }
    catch (NumberFormatException e ) {
      sSort = "";
    }
    if ( iSort == 0 ) {
      sForm_Sorting = "";
    }
    else {
      if ( sSort.equals(sSorted)) {
        sSorted="0";
        sForm_Sorting = "";
        sDirection = " DESC";
        sSortParams = "FormResults_Sorting=" + sSort + "&FormResults_Sorted=" + sSort + "&";
      }
      else {
        sSorted=sSort;
        sForm_Sorting = sSort;
        sDirection = " ASC";
        sSortParams = "FormResults_Sorting=" + sSort + "&FormResults_Sorted=" + "&";
      }
   
      if ( iSort == 1) { sOrder = " order by i.name" + sDirection; }
      if ( iSort == 2) { sOrder = " order by i.author" + sDirection; }
      if ( iSort == 3) { sOrder = " order by i.price" + sDirection; }
      if ( iSort == 4) { sOrder = " order by c.name" + sDirection; }
      if ( iSort == 5) { sOrder = " order by i.image_url" + sDirection; }
    }
 

  // Build full SQL statement
 
  sSQL = "select i.author as i_author, " +
    "i.category_id as i_category_id, " +
    "i.image_url as i_image_url, " +
    "i.item_id as i_item_id, " +
    "i.name as i_name, " +
    "i.priceas i_price, " +
    "c.catego ry_id as c_category_id, " +
    "c.name as c_name " +
    " from items i, categories c" +
    " where c.category_id=i.category_id  ";
 
  sSQL = sSQL + sWhere + sOrder;

  String sNoRecords = "    <tr>\n      <td colspan=\"2\" style=\"background-color: #FFFFFF; border-width: 1\"><font style=\"font-size: 10pt; color: #000000\">No records</font></td>\n    </tr>";


  String tableHeader = "";
   
 
  try {
    out.println("    <table style=\"\">");
    out.println("    <tr>\n      <td style=\"background-color: #336699; text-align: Center; border-style: outset; border-width: 1\" colspan=\"2\"><a name=\"Results\"><font style=\"font-size: 12pt; color: #FFFFFF; font-weight: bold\">Search Results</font></a></td>\n    </tr>");
    out.println(tableHeader);

  }
  catch (Exception e) {}

 
  try {
    // Select current page
    iPage = Integer.parseInt(getParam( request, "FormResults_Page"));
  }
  catch (NumberFormatException e ) {
    iPage = 0;
  }

  if (iPage == 0) { iPage = 1; }
  RecordsPerPage = 20;
  try {
    java.sql.ResultSet rs = null;
    // Open recordset
    rs = openrs( stat, sSQL);
    iCounter = 0;
    absolute (rs, (iPage-1)*RecordsPerPage+1);
    java.util.Hashtable rsHash = new java.util.Hashtable();
    String[] aFields = getFieldsName( rs );

    // Show main table based on recordset
    while ( (iCounter < RecordsPerPage) && rs.next() ) {

      getRecordToHash( rs, rsHash, aFields );
      String fldauthor = (String) rsHash.get("i_author");
      String fldcategory_id = (String) rsHash.get("c_name");
      String fldimage_url = (String) rsHash.get("i_image_url");
      String fldname = (String) rsHash.get("i_name");
      String fldprice = (String) rsHash.get("i_price");
fldimage_url="<img border=0 src=" + fldimage_url + ">";

      out.print("    <tr>\n      <td style=\"background-color: #FFFFFF; border-style: inset; border-width: 0\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Title</font> </td><td style=\"background-color: #FFFFFF; border-width: 1\">"); out.print("<a href=\"BookDetail.jsp?"+transitParams+"item_id="+toURL((String) rsHash.get("i_item_id"))+"&\"><font style=\"font-size: 10pt; color: #000000\">"+toHTML(fldname)+"</font></a>");

      out.println("</td>\n    </tr>");
      out.print("    <tr>\n      <td style=\"background-color: #FFFFFF; border-style: inset; border-width: 0\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Author</font> </td><td style=\"background-color: #FFFFFF; border-width: 1\">"); out.print("<font style=\"font-size: 10pt; color: #000000\">"+toHTML(fldauthor)+"&nbsp;</font>");
      out.println("</td>\n    </tr>");
      out.print("    <tr>\n      <td style=\"background-color: #FFFFFF; border-style: inset; border-width: 0\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Price</font> </td><td style=\"background-color: #FFFFFF; border-width: 1\">"); out.print("<font style=\"font-size: 10pt; color: #000000\">"+toHTML(fldprice)+"&nbsp;</font>");
      out.println("</td>\n    </tr>");
      out.print("    <tr>\n      <td style=\"background-color: #FFFFFF; border-style: inset; border-width: 0\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Category</font> </td><td style=\"background-color: #FFFFFF; border-width: 1\">"); out.print("<font style=\"font-size: 10pt; color: #000000\">"+toHTML(fldcategory_id)+"&nbsp;</font>");
      out.println("</td>\n    </tr>");
      out.print("    <tr>\n      <td style=\"background-color: #FFFFFF; border-style: inset; border-width: 0\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Image URL</font> </td><td style=\"background-color: #FFFFFF; border-width: 1\">"); out.print("<a href=\"BookDetail.jsp?"+transitParams+"item_id="+toURL((String) rsHash.get("i_item_id"))+"&\"><font style=\"font-size: 10pt; color: #000000\">"+fldimage_url+"</font></a>");

      out.println("</td>\n    </tr>");
      out.println("    <tr>\n      <td colspan=\"2\" style=\"background-color: #FFFFFF; border-width: 1\">&nbsp;</td>\n    </tr>");
   
      iCounter++;
    }
    if (iCounter == 0) {
      // Recordset is empty
      out.println(sNoRecords);
   
      iCounter = RecordsPerPage+1;
      bIsScroll = false;
    }

    else {

 
    // Parse scroller
    boolean bInsert = false;
    boolean bNext = rs.next();
    if ( !bNext && iPage == 1 ) {
   
    }
    else {
      out.print("    <tr>\n      <td colspan=\"2\" style=\"background-color: #FFFFFF; border-style: inset; border-width: 0\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">");
   
      if ( iPage == 1 ) {
        out.print("\n      <a href_=\"#\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Previous</font></a>");
      }
      else {
        out.print("\n      <a href=\""+sFileName+"?"+formParams+sSortParams+"FormResults_Page="+(iPage - 1)+"#Form\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Previous</font></a>");
      }
 
      out.print("\n      [ "+iPage+" ]");
 
      if (!bNext) {
        out.print("\n      <a href_=\"#\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Next</font></a><br>");
      }
      else {
        out.print("\n      <a href=\""+sFileName+"?"+formParams+sSortParams+"FormResults_Page="+(iPage + 1)+"#Form\"><font style=\"font-size: 10pt; color: #CE7E00; font-weight: bold\">Next</font></a><br>");
      }
   
      out.println("</td>\n    </tr>");
    }
 
    }

    if ( rs != null ) rs.close();
    out.println("    </table>");
   
  }
  catch (Exception e) { out.println(e.toString()); }
}
Avatar billede arne_v Ekspert
15. november 2004 - 12:25 #5
Så har jeg misforstået hvad du vil.

Du vil slet ikk ehave en servlet - du vil have en bean.

En servlet er noget som requestes fra browser.

En bean er bare en Java klasse som kan bruges fra enten en JSP side eller
en servlet.
Avatar billede arne_v Ekspert
15. november 2004 - 12:26 #6
Bean klasser som skal bruges fra JSP sider skal i package.

dinpakke.DinBean klassen skal ligge som:

WEB-INF/classes/dinpakke/DinBean.class

(ligesom servlet)
Avatar billede arne_v Ekspert
15. november 2004 - 12:27 #7
Beans kan bruges fra JSP sider på flere måder.

To af de mere simple er:

<%
DinBean b = new DinBean();
b.enikkestatiskmetode(1,2,3);
%>

eller:

<%
DinBean.enstatiskmetode(1,2,3);
%>
Avatar billede noerdar-dilling Nybegynder
15. november 2004 - 12:30 #8
Nej det er fordi jeg sider med noget kode hvor man han lavet en funktion inde i selve JSP dokumentet, men jeg ønsker at ligge det i en selvstændig klasse, en servlet. Funktionerne skal ligges som servlets
Avatar billede arne_v Ekspert
15. november 2004 - 12:30 #9
Generelt anses det for dårlig kode skik:
  - at have for mange out.println i beans
  - at have for meget <% %> i JSP sider
Avatar billede arne_v Ekspert
15. november 2004 - 12:32 #10
"kode bibliotek" er beans ikke servlet
Avatar billede noerdar-dilling Nybegynder
15. november 2004 - 12:37 #11
Det er jo ikke en bean ifølge koden men en scripting, hvor man laver en funktion
Avatar billede noerdar-dilling Nybegynder
15. november 2004 - 12:38 #12
imellem scripting taget <%= funktion() %>
Avatar billede arne_v Ekspert
15. november 2004 - 12:40 #13
<%!
%>

er scripting, men som jeg har forstået dig vil du have flyttet det til
en seperat java klasse.
Avatar billede arne_v Ekspert
15. november 2004 - 12:40 #14
<%=(new DinBean()).enikkestatiskmetode(1,2,3)%>

eller:

<%=DinBean.enstatiskmetode(1,2,3)%>

er stadig brug af beans.
Avatar billede noerdar-dilling Nybegynder
16. november 2004 - 14:04 #15
svar
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