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.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
15. november 2004 - 11:50
#1
Er det ikke bare: <form method="post" action="DinDatabaseOpslagsServlet"> ... </form> ?
15. november 2004 - 11:57
#2
I servletten henter du så feltværdierne med: request.getParameter("feltnavn")
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.
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)+" </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)+" </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)+" </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\"> </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()); } }
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.
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)
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); %>
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
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
15. november 2004 - 12:32
#10
"kode bibliotek" er beans ikke servlet
15. november 2004 - 12:37
#11
Det er jo ikke en bean ifølge koden men en scripting, hvor man laver en funktion
15. november 2004 - 12:38
#12
imellem scripting taget <%= funktion() %>
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.
15. november 2004 - 12:40
#14
<%=(new DinBean()).enikkestatiskmetode(1,2,3)%> eller: <%=DinBean.enstatiskmetode(1,2,3)%> er stadig brug af beans.
16. november 2004 - 14:04
#15
svar
Kurser inden for grundlæggende programmering