Avatar billede mik28 Seniormester
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.
Avatar billede arne_v Ekspert
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.
Avatar billede arne_v Ekspert
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.
Avatar billede mik28 Seniormester
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");
        }
       
    }
}
Avatar billede mik28 Seniormester
24. februar 2003 - 13:44 #4
Jeg er bare ikke helt med på hvordan jeg får det til at hænge sammen
Avatar billede arne_v Ekspert
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>
Avatar billede arne_v Ekspert
24. februar 2003 - 13:51 #6
Det er bare et eksempel.

Mulighederne er mange.
Avatar billede arne_v Ekspert
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>
Avatar billede mik28 Seniormester
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 ?
Avatar billede mik28 Seniormester
24. februar 2003 - 14:01 #9
Class org.apache.jsp.Databaseforbindelsemysql not found
Avatar billede arne_v Ekspert
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.*" %>
Avatar billede mik28 Seniormester
24. februar 2003 - 14:08 #11
http://www.web-oasen.dk/uploadbean/upload.jsp

Her kan du se de fejl jeg får
Avatar billede arne_v Ekspert
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).
Avatar billede arne_v Ekspert
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
Avatar billede arne_v Ekspert
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 !
Avatar billede mik28 Seniormester
24. februar 2003 - 14:12 #15
Databaseforbindelsemysql.class er der
Avatar billede mik28 Seniormester
24. februar 2003 - 14:13 #16
Jeg er ikke klar over hvordan jeg laver en pakke
Avatar billede mik28 Seniormester
24. februar 2003 - 14:17 #17
Class org.apache.jsp.Resultset not found.
Avatar billede mik28 Seniormester
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
Avatar billede arne_v Ekspert
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.*,..." %>
Avatar billede mik28 Seniormester
24. februar 2003 - 14:23 #20
Det har jeg da også gjort
Avatar billede mik28 Seniormester
24. februar 2003 - 14:26 #21
<%@ page language="java" import="javazoom.upload.*,java.util.*,sample.progress.MyUploadListener,java.sql.*" %>
Avatar billede arne_v Ekspert
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.
Avatar billede mik28 Seniormester
24. februar 2003 - 14:30 #23
Det vil stadig ikke virke :-(
Avatar billede mik28 Seniormester
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>
Avatar billede mik28 Seniormester
24. februar 2003 - 14:37 #25
Den bliver ved med at komme med

Class org.apache.jsp.Resultset not found.
Avatar billede arne_v Ekspert
24. februar 2003 - 14:39 #26
Hvilken fejl får du ?
Avatar billede mik28 Seniormester
24. februar 2003 - 14:40 #27
Avatar billede arne_v Ekspert
24. februar 2003 - 14:40 #28
Aha.

det er mig som er en stor klaptorsk !

Det er ResultSet ikke Resultset !!
Avatar billede arne_v Ekspert
24. februar 2003 - 14:41 #29
Resultset rs = dbf.select("SELECT * FROM login");
  ResultSet rs = dbf.select("SELECT * FROM login");
Avatar billede mik28 Seniormester
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
Avatar billede mik28 Seniormester
24. februar 2003 - 14:46 #31
Så virker det JUBIIII
Avatar billede mik28 Seniormester
24. februar 2003 - 14:51 #32
Det er bare drøn smart
Avatar billede arne_v Ekspert
24. februar 2003 - 14:53 #33
Tillykke med det.
Avatar billede mik28 Seniormester
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 :-)
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