Avatar billede mik28 Seniormester
23. maj 2004 - 18:46 Der er 21 kommentarer og
1 løsning

Problemer med en try catch

Hej,

Jeg sidder lige og er ved at skrive en side op til en rigtig JSP side. Mit problem er at jeg plejer at samle al min kode i en Stringbuffer også skriver den ud til sidst. Nu vil jeg så gerne bare skrive ren JSP, men jeg gør åbenbart noget forkert. Min side ser således ud:

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

<html>

<%@ page language="java" import="java.util.*,java.sql.*,util.*,framework.*" %>

<head>
<title>Personlige indstillinger</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../style/golf.css">
<script language="JavaScript" src="../script/script.js"></script>
</head>

<body onload="self.focus();">

<%       
    String status_session  = (String)session.getAttribute("status");
    System.out.println("Status er: "+status_session);
    System.out.println(session.getId().toString());
   
    if (!status_session.equals("adm")){
      response.sendRedirect("http://web-oasen.dk:8080/golf");
    //return;
    }       
     
        Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("jdbc:mysql://URL/DB?user=USER&password=PASS", "com.mysql.jdbc.Driver");
       
        try {
       
            Vector vi = new Vector();
           
            ResultSet rs    = d.select("SELECT navn, ip, tidspunkt FROM loggen ORDER BY ID desc", vi);
        %>   
            <div style="text-align:center;">
            Loggen
            <br><br>
            <table style="width:350px";>
            <tr><th style="width:100px;text-align:left;">Navn</th>
            <th style="width:100px;text-align:left;">IP</th>
            <th style="width:150px;text-align:left;">Tidspunkt for login</th></tr>
        <%   
            while(rs.next()) {

            ResultSetMetaData rsmd = rs.getMetaData();
            int antalKolonner = rsmd.getColumnCount();
        //    System.out.println(antalKolonner+" kolonner");

            // udskriv kolonnenavnene
                <tr>
                for (int i=1; i<=antalKolonner; i++) {
                <td> <% rs.getString(i) %> </td>
                }
                </tr>
            <%
            }
                       
               
        } catch (SQLException s) {
            System.out.println("<h3>SQL fejl: " + s.toString() + " "
            + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
        d.close();
        %>
        </table>
        </div>
        </body>
        </html>
Avatar billede arne_v Ekspert
23. maj 2004 - 19:06 #1
Hvilken fejl får du ?
Avatar billede mik28 Seniormester
23. maj 2004 - 19:08 #2
Jeg har fundet ud af noget af det :-), men redirecten virker ikke

http://web-oasen.dk:8080/golf/index/loggen.jsp
Avatar billede mik28 Seniormester
23. maj 2004 - 19:09 #3
Det er meningen at man ikke skal kunne komme ind på siden uden at logge ind
Avatar billede mik28 Seniormester
23. maj 2004 - 19:14 #4
Det virker hvis
if (!status_session.equals("adm")){
      response.sendRedirect("http://www.disney.com");
    //return;
    }

ikke bliver opfyldt, altså man er logget ind og har den rigtige status
Avatar billede mik28 Seniormester
23. maj 2004 - 19:27 #5
Det fatter jeg simpelthen i en døjt af.

Koden ser helt præcis således ud

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

<html>

<%@ page language="java" import="java.util.*,java.sql.*,util.*,framework.*" %>

<head>
<title>Loggen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../style/golf.css">
<script language="JavaScript" src="../script/script.js"></script>
</head>

<body onload="self.focus();">

<%       
    String status_session  = (String)session.getAttribute("status");
    System.out.println("Status er: "+status_session);
    System.out.println(session.getId().toString());
   
    if (!status_session.equals("adm")){
      response.sendRedirect("http://www.disney.com");
    }       
     
      Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("jdbc:mysql://URL/DB?user=USER&password=PASS", "com.mysql.jdbc.Driver");
       
        try {
       
            Vector vi = new Vector();
           
            ResultSet rs    = d.select("SELECT navn, ip, tidspunkt FROM loggen ORDER BY ID desc", vi);
        %>   
            <div style="text-align:center;">
            Loggen
            <br><br>
            <table style="width:350px";>
            <tr><th style="width:100px;text-align:left;">Navn</th>
            <th style="width:100px;text-align:left;">IP</th>
            <th style="width:150px;text-align:left;">Tidspunkt for login</th></tr>
        <%   
            while(rs.next()) {

            ResultSetMetaData rsmd = rs.getMetaData();
            int antalKolonner = rsmd.getColumnCount();
        //    System.out.println(antalKolonner+" kolonner");

            // udskriv kolonnenavnene
                %><tr><%
                for (int i=1; i<=antalKolonner; i++) {
                %><td><%= rs.getString(i) %></td>
                <%}%>
                </tr>
            <%
            }
               
               
        } catch (SQLException s) {
            System.out.println("<h3>SQL fejl: " + s.toString() + " "
            + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
       
      //     d.close();   
        %>
        </table>
        </div>
        </body>
        </html>
Avatar billede arne_v Ekspert
23. maj 2004 - 19:42 #6
Du kan ikke lave en sendRedirect efter ad du har outputtet HTML.

Jeg er 95% sikker på at det er problemet.

Jeg må indrømme at det er faktisk en fordel ved dit gamle append to buffer
princip.

Indtil du udskrev buffer kunen altid redirecte.

Prøv og flyt testet på adm op over <html>
Avatar billede mik28 Seniormester
23. maj 2004 - 19:56 #7
hmmm det hjalp ikke
Avatar billede arne_v Ekspert
23. maj 2004 - 19:58 #8
Præcis hvilken fejl får du ?
Avatar billede mik28 Seniormester
23. maj 2004 - 20:03 #9
Jeg har lidt det samme på en anden side

<%
String brugernavn = (String)session.getAttribute("brugernavn");

if (brugernavn==null || brugernavn.equals("")) {
  response.sendRedirect("adm/index.html");
  //return;
}
%>
Avatar billede mik28 Seniormester
23. maj 2004 - 20:04 #10
det virker. Jeg ville bare gerne teste på en anden sessionvariable
Avatar billede arne_v Ekspert
23. maj 2004 - 20:05 #11
Den kode kan håndtere hvis attributten ikke eksisterer.

String status_session  = (String)session.getAttribute("status");
    if (!status_session.equals("adm")){

forventer at den gør det

hvis ikke => null pointer exception
Avatar billede mik28 Seniormester
23. maj 2004 - 20:09 #12
okay, det forklare jo så en del, for den eksisterer ikke hvis man bare skriver

http://web-oasen.dk:8080/golf/index/loggen.jsp
Avatar billede mik28 Seniormester
23. maj 2004 - 20:11 #13
Du er for sej
Avatar billede mik28 Seniormester
23. maj 2004 - 20:12 #14
<%       
    String status_session  = (String)session.getAttribute("status");
    System.out.println("Status er: "+status_session);
    System.out.println(session.getId().toString());
   
    if (status_session!="adm" || status_session==null){
      response.sendRedirect("http://www.disney.com");
    }
%>
Avatar billede mik28 Seniormester
23. maj 2004 - 20:13 #15
crap, det virker heller ikke
Avatar billede arne_v Ekspert
23. maj 2004 - 20:15 #16
Må jeg have lov til at lave lidt reklame for:

<jsp:useBean id="status_session" class="String" scope="session"/>

som gør det samme som:

String status_session  = (String)session.getAttribute("status_session");
if(status_session == null) {
  status_session = new String();
}
...
session.setAttribute("status_session", status_session);
Avatar billede arne_v Ekspert
23. maj 2004 - 20:16 #17
Prøv lige og byt om på de 2 test så du tester for null først.
Avatar billede mik28 Seniormester
23. maj 2004 - 20:22 #18
if (status_session==null || !status_session.equals("adm")){
   
    response.sendRedirect("http://www.disney.com");
    }
Avatar billede mik28 Seniormester
23. maj 2004 - 20:23 #19
Ser ud til at virke
Avatar billede mik28 Seniormester
23. maj 2004 - 20:26 #20
Ligger du et svar
Avatar billede arne_v Ekspert
23. maj 2004 - 20:46 #21
svar
Avatar billede mik28 Seniormester
23. maj 2004 - 20:54 #22
Tak for hjælpen
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