Avatar billede mik28 Seniormester
09. marts 2003 - 17:00 Der er 1 kommentar og
1 løsning

Problem med login

Hej Eksperter,

Jeg har et lille problem med en servlet jeg bruger til login. Sagen er den at hvis man skriver et forkert brugernavn eller password og så prøver igen, så får jeg en nullpointerexception. Hvad gør jeg forkert?


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import util.*;

public class Login extends HttpServlet
    {
        /**
        * Handle the HTTP GET method by building a simple web page.
        */
        public void doPost (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
       
                   
        String        title = "Log in";

        // set content type and other response header fields first
            response.setContentType("text/html");
           
           
            String res = request.getParameter ("navn");
            String res2 = request.getParameter ("pass");
        // then write the data of the response
        out = response.getWriter();
       
        Databaseforbindelsemysql d = new Databaseforbindelsemysql("jdbc:mysql://URL/DB?user=USER&password=PASS","org.gjt.mm.mysql.Driver");
       
     
        try {
       
            out.println("<HTML><HEAD><TITLE>");
            out.println(title);
              out.println("</TITLE>");
              out.println("</HEAD>");
           
           
            ResultSet rs = d.select("SELECT * FROM users");
            boolean result=false;
           
            while(rs.next()) {
           
               
                String navn = rs.getString(2);
                String pass = rs.getString(3);
               
                if(res.equals(navn) && res2.equals(pass))
                {
               
                    result=true;
                    HttpSession session = request.getSession(true);
                   
                    String SessionIndhold = res;
                    session.setAttribute("brugernavn", SessionIndhold);

                   
                    Variabler va = new Variabler();
                   
                    va.setNavn(res);
                    va.setPassword(res2);
            //        va.setNavfarve();
                   
                    session.setAttribute("navn",va);
                    session.setAttribute("password",va);
            //        session.setAttribute("navfarve",va);

                   
                    System.out.println(session);
                }
            }
            if(result) {
           
                out.println("<body onload='document.send.submit();');>");
                out.println("<form name='send' action='Editpage' method='post'>");
                out.println("<input type='hidden' name='page' value='start'>");
                out.println("</form>");
                out.println("</body></html>");
             
               
            }
           
            else if(!result){
               
                out.println("<body>");
                out.println("<form action='/mortallovetest/adm' method='get'>");
                out.println("<center><h1>Wrong username or password</h1>");
                out.println("<input type='submit' value='Try again'>");
                out.println("</center></form>");
                out.println("</body></html>");
               
                }
           
            } catch (SQLException s) {
                out.println("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
       
            out.close();
            d.close();
        }
       
        public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
        {
        }
}
Avatar billede mik28 Seniormester
09. marts 2003 - 19:45 #1
Jeg har skrevet klassen og til det her, men jeg har stadig et problem med en NullPointerException. Det er som om at det kikser når forbindelsen til databasen skal oprettes igen. Hvis jeg bare skriver det rigtige brugernavn og password første gang virker det fint, men anden gang kikser det :-(

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import util.*;
import java.util.Vector;

public class Login extends HttpServlet
    {
       
        public void doPost (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
       
                   
        String        title = "Log in";

       
            response.setContentType("text/html");
           
           
            String navnn = request.getParameter ("navn");
            String passs = request.getParameter ("pass");
            System.out.println("Indtastet navn: "+navnn+"<br>");
            System.out.println("Indtastet password: "+passs+"<br>");
           
            out = response.getWriter();
           
            out.println("<HTML><HEAD><TITLE>");
            out.println(title);
            out.println("</TITLE>");
            out.println("</HEAD>");
       
       
        Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("jdbc:mysql://URL/DB?user=USER&password=PASS","org.gjt.mm.mysql.Driver");
       
        try {
       
           
            Vector vi = new Vector();
            vi.addElement(navnn);
            vi.addElement(passs);
           
           
            ResultSet rs = d.select("SELECT name,password FROM users WHERE name=? AND password=?", vi);
           
                if(rs.next()) {
           
                HttpSession session = request.getSession(true);
                   
                String SessionIndhold = navnn;
                session.setAttribute("brugernavn", SessionIndhold);

                   
                Variabler va = new Variabler();
                   
                va.setNavn(navnn);
                va.setPassword(passs);
            //    va.setNavfarve();
                   
                session.setAttribute("navn",va);
                session.setAttribute("password",va);
            //    session.setAttribute("navfarve",va);

                   
                System.out.println(session);
           
           
                out.println("<body onload='document.send.submit();');>");
                out.println("<form name='send' action='Editpage' method='post'>");
                out.println("<input type='hidden' name='page' value='start'>");
                out.println("</form>");
                out.println("</body></html>");
             
               
                }
                else
                {
               
                out.println("<body>");
                out.println("<form action='/mortallovetest/adm' method='get'>");
                out.println("<center><h1>Wrong username or password</h1>");
                out.println("<input type='submit' value='Try again'>");
                out.println("</center></form>");
                out.println("</body></html>");
                   
                }
           
            } catch (SQLException s) {
                out.println("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
       
        out.close();
        d.close();
        }
       
        public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
        {
        }
}
Avatar billede mik28 Seniormester
09. marts 2003 - 20:00 #2
Jeg har fundet fejlen. Det var som sædvanligt noget helt vildt enkelt :-)
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