24. februar 2003 - 12:40
Der er
33 kommentarer og 1 løsning
JSP upload
Hej Eksperter Det er lykkes mig at få min upload ting til at virke ordenligt. Mit problem er at jeg plejer at arbejde i servlets og nu er jeg kommet ud i noget JSP. Hvordan skaber jeg en DB-forbindelse så jeg kan smide nogle værdier i en tabel? Denne her tabel skal danne grundlag for en side hvor man kan downloade de uploadede filer.
Annonceindlæg fra Computerworld
24. februar 2003 - 13:00
#1
Grundliggende er ideen i JSP at du skriver almindelige HTML tags og så sætter java kode ind midt ved at putte <% %> omkring det. Det vil sige lang hen af vejen kan du lave database adgang i JSP fuldstændigt ligesom du kan i servlets.
24. februar 2003 - 13:01
#2
Hvis du vil lave pæn JSP så undgår du for meget java kode i selve JSP'en og laver din database adgang i en separat klasse som din JSP så bruger.
24. februar 2003 - 13:43
#3
Jeg har en klasse som jeg normalt bruger til at skabe en DB-forbindelse som ser sådan her ud import java.sql.*; public class Databaseforbindelsemysql { private Connection conn ; private Statement stmt; public Databaseforbindelsemysql(String data, String driver) { try { Class.forName(driver); conn = DriverManager.getConnection(data, "", ""); stmt = conn.createStatement(); } catch(Exception s) { System.out.println("SQL dataforbindelse fejlede"+s); } } public ResultSet select(String sql) { ResultSet r = null; try { r = stmt.executeQuery(sql); } catch(SQLException s) { System.out.println("Select fejlede: "+s); } return r; } public void insertUpdate(String sql) { try { stmt.executeUpdate(sql); } catch(SQLException s) { System.out.println("update/insert fejlede"); } } public void close() { try { stmt.close(); } catch(SQLException s) { System.out.println("Close fejlede"); } } }
24. februar 2003 - 13:44
#4
Jeg er bare ikke helt med på hvordan jeg får det til at hænge sammen
24. februar 2003 - 13:50
#5
Du kan f.eks. skrive følgende i din JSP: <table> <% Databaseforbindelsemysql dbf = new Databaseforbindelsemysql("url", "driver"); Resultset rs = dbf.select("SELECT * FROM tabel"); while(rs.next()) { %> <tr> <th><%=rs.getInt(1)%></th> <th><%=rs.getString(2)%></th> </tr> <% } </table>
24. februar 2003 - 13:51
#6
Det er bare et eksempel. Mulighederne er mange.
24. februar 2003 - 13:51
#7
Hov jeg glemte lige en %>: <table> <% Databaseforbindelsemysql dbf = new Databaseforbindelsemysql("url", "driver"); Resultset rs = dbf.select("SELECT * FROM tabel"); while(rs.next()) { %> <tr> <th><%=rs.getInt(1)%></th> <th><%=rs.getString(2)%></th> </tr> <% } %> </table>
24. februar 2003 - 13:54
#8
Hvor skal Databaseforbindelsemysql ligge henne. Skal den bare ligge samme sted som den gør når jeg bruger servlets ?
24. februar 2003 - 14:01
#9
Class org.apache.jsp.Databaseforbindelsemysql not found
24. februar 2003 - 14:02
#10
Ja. JSP og servlets er meget ens. Faktisk er det sådan at første gang du viser en JSP side, så gør serveren det at den: - kalder jspc compileren og compiler .jsp til en servlet .java - kalder java compileren og compiler servlet .java til .class Så de klasser du skal bruge skal være samme sted (enten i WEB-INF/classes træet eller i en jar fil i WEB-INF/lib). Eneste lille krølle er import ! Når du skal importe i en JSP side skal du skrive f.eks.: <%@ page import="java.util.*,java.io.*" %>
24. februar 2003 - 14:08
#11
24. februar 2003 - 14:09
#12
#Class org.apache.jsp.Databaseforbindelsemysql not found hovsa. Enten så ligger der ikke en: WEB-INF/classes/Databaseforbindelsemysq.class eller så er der et problem med at Databaseforbindelsemysql ikke er i en pakke (d.v.s. prøv og flyt den til en pakke og lav en import af pakken i JSP).
24. februar 2003 - 14:11
#13
Ja. Check om WEB-INF/classes/Databaseforbindelsemysq.class er der. Hvis ikke så anbring den der. Hvis den er der (og det er et pakke problem så): * sæt en linie package util; ind øverst i Databaseforbindelsemysql.java * build * lig den som WEB-INF/classes/util/Databaseforbindelsemysq.class * sæt en: <%@ page import="util.*" %> ind i din JSP
24. februar 2003 - 14:12
#14
grunde til at jeg ikke ved om det giver problemer ikke at have en pakke er, at jeg aldrig har prøvet uden pakke !
24. februar 2003 - 14:12
#15
Databaseforbindelsemysql.class er der
24. februar 2003 - 14:13
#16
Jeg er ikke klar over hvordan jeg laver en pakke
24. februar 2003 - 14:17
#17
Class org.apache.jsp.Resultset not found.
24. februar 2003 - 14:20
#18
<%@ page import="util.*" %> <%@ page language="java" import="javazoom.upload.*,java.util.*,sample.progress.MyUploadListener,java.sql.*,javax.servlet.http.*" %> Det er hvad jeg har i toppen af min jsp side
24. februar 2003 - 14:22
#19
Vejledning til at lave pakke er i min 14:11:38 kommentar. Resultset er i java.sql så den skal importeres i din JSP. <%@ page import="...,java.sql.*,..." %>
24. februar 2003 - 14:23
#20
Det har jeg da også gjort
24. februar 2003 - 14:26
#21
<%@ page language="java" import="javazoom.upload.*,java.util.*,sample.progress.MyUploadListener,java.sql.*" %>
24. februar 2003 - 14:26
#22
Merge dem sammen: <%@ page language="java" import="javazoom.upload.*,java.util.*,sample.progress.MyUploadListener,java.sql.*,javax.servlet.http.*,util.*" %> skulle vist have det hele.
24. februar 2003 - 14:30
#23
Det vil stadig ikke virke :-(
24. februar 2003 - 14:32
#24
<html> <%@ page language="java" import="javazoom.upload.*,java.util.*,sample.progress.MyUploadListener,java.sql.*,javax.servlet.http.*,util.*" %> <%@ page errorPage="ExceptionHandler.jsp" %> <jsp:useBean id="upListener" scope="session" class="sample.progress.MyUploadListener"/> <jsp:useBean id="upBean" scope="session" class="javazoom.upload.UploadBean" > <jsp:setProperty name="upBean" property="folderstore" value="D:/uploads"/> <jsp:setProperty name="upBean" property="parser" value="<%= MultipartFormDataRequest.STRUTSPARSER %>"/> <jsp:setProperty name="upBean" property="parsertmpdir" value="D:/temp"/> <% upBean.addUploadListener(upListener); %> </jsp:useBean> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript"><!-- function openStatus() { if (document.upform.uploadfile.value.length > 0) { window.open('status.jsp?nocache=<%= System.currentTimeMillis() %>','UploadStatus','scrollbars=no,status=no,width=360,height=90'); document.upform.submit(); } else { alert("Select a file to attach"); } } //--></script> </head> <body bgcolor="#FFFFFF" text="#000000"> <% if (MultipartFormDataRequest.isMultipartFormData(request)) { // Uses MultipartFormDataRequest to parse the HTTP request. Vector listeners = new Vector(); listeners.addElement(upListener); MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request,listeners); String todo = mrequest.getParameter("todo"); String url = mrequest.getParameter("url"); if ( (todo != null) && (todo.equalsIgnoreCase("upload")) ) { Hashtable files = mrequest.getFiles(); if ( (files != null) || (!files.isEmpty()) ) { UploadFile file = (UploadFile) files.get("uploadfile"); out.println("<li>Form field : uploadfile"+"<BR> Uploaded file : "+file.getFileName()+" ("+file.getFileSize()+" bytes)"+"<BR> Content Type : "+file.getContentType()); // Uses the bean now to store specified by jsp:setProperty at the top. upBean.store(mrequest, "uploadfile"); System.out.println(url); } else { out.println("No uploaded files"); } } else out.println("<BR> todo="+todo); } %> <table> <% Databaseforbindelsemysql dbf = new Databaseforbindelsemysql("URL?user=mik&password=mik","org.gjt.mm.mysql.Driver"); Resultset rs = dbf.select("SELECT * FROM login"); while(rs.next()) { %> <tr> <th><%=rs.getInt(2)%></th> <th><%=rs.getString(3)%></th> </tr> <% } %> </table> <form method="post" action="upload.jsp" name="upform" enctype="multipart/form-data"> <table border="0" cellspacing="0" cellpadding="0" align="left"> <tr> <td>Select a file to upload :</td> </tr> <tr> <td><input type="file" name="uploadfile" size="50"></td> </tr> <tr> <td> <input type="hidden" name="todo" value="upload"> <input type="text" name="url" value=""> <input type="button" name="Submit" value="Upload" onClick="openStatus()"> <input type="reset" name="Reset" value="Cancel"> </td> </tr> </table> </form> </body> </html>
24. februar 2003 - 14:37
#25
Den bliver ved med at komme med Class org.apache.jsp.Resultset not found.
24. februar 2003 - 14:39
#26
Hvilken fejl får du ?
24. februar 2003 - 14:40
#27
24. februar 2003 - 14:40
#28
Aha. det er mig som er en stor klaptorsk ! Det er ResultSet ikke Resultset !!
24. februar 2003 - 14:41
#29
Resultset rs = dbf.select("SELECT * FROM login"); ResultSet rs = dbf.select("SELECT * FROM login");
24. februar 2003 - 14:43
#30
okay nu får jeg bare en nullpointerexception, det burde jeg selv kunne hitte ud af. Tak for Hjælpen
24. februar 2003 - 14:46
#31
Så virker det JUBIIII
24. februar 2003 - 14:51
#32
Det er bare drøn smart
24. februar 2003 - 14:53
#33
Tillykke med det.
24. februar 2003 - 14:55
#34
Det er jo bare mit held at du vil hjælpe mig, ellers havde jeg nok ikke fundet ud af det lige med det første :-)
Kurser inden for grundlæggende programmering