Avatar billede mads375 Juniormester
07. februar 2014 - 14:38 Der er 52 kommentarer og
1 løsning

java class path

Hejsa

Jeg har lavet en database hvor jeg har tilføjet et userid og et password som kolonner. Jeg har lavet en JSP side og en java class som tjekker om user og password eksisterer i databasen. Hver gang jeg gøre min JSP side får jeg denne fejl:

HTTP Status 404 - /ConnectionLoginForms/Validation.java

type Status report

message /ConnectionLoginForms/Validation.java

description The requested resource is not available.

Min kode ser således ud:

<body>
    <br><br><br>
        <center>
            <h1>Please enter username and password</h1>
           
            <form name="frm" action="Validation.java" method="post">
                <input type="text" name="user">
                <input type ="password" name="pass">
                <input type="submit" value="Check">
            </form>
        </center>

</body>
______
Min java class:

package jsp;

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

public class Validation extends HttpServlet {


    private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }
   
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {
       
       
        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        ResultSet rs;
        String userid = new String("");
        String password = new String("");
       
        response.setContentType("text/html");
        try {
            // Load the database driver
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(connectionURL, "root", "");
            //Add the data into the database
            String sql = "SELECT userid, password FROM login";
            Statement s = connection.createStatement();
            s.executeQuery(sql);
            rs = s.getResultSet();
           
            while(rs.next()) {
                userid = rs.getString("userid");
                password = rs.getString("password");
            }
            rs.close();
            s.close();
       
        } catch(Exception e) {
            System.out.println("Exception is: " + e);
          }
           
            if(userid.equals(request.getParameter("userid")) && password.equals(request.getParameter("password"))) {
                out.println("The user is valid");
            }
            else {
                out.println("You are not valid");
            }
    }
   
}
   
Sådan som jeg forstår det er det min action den er gal med?
<form name="frm" action="Validation.java" method="post">
Jeg har prøvet med nogle forskellige ting, men får samme fejl:

<form name="frm" action="src/jsp/Validation.java" method="post">
<form name="frm" action="/ConnectionLoginForms/Validation.java" method="post">

Er der en som kan se hvor min fejl er?
mvh Mads
Avatar billede mads375 Juniormester
07. februar 2014 - 14:42 #1
Iøvrigt mit eclipse projekt ser sådan ud:

http://postimg.org/image/9fsevcoml/
Avatar billede arne_v Ekspert
07. februar 2014 - 15:28 #2
Den er gal.

:-)

Du skal submitte til en servlet som er den oversatte java ikke source.
Avatar billede arne_v Ekspert
07. februar 2014 - 15:29 #3
Du kan goer det paa den gammeldags maade i web.xml eller paa den nye maade med annotations.
Avatar billede arne_v Ekspert
07. februar 2014 - 15:32 #4
Foerst den gamle maade:

<form name="frm" action="LoginValidation" method="post">

og saa i web.xml:

<web-app>
    ...
    <servlet>
        <servlet-name>MyLoginValidator</servlet-name>
        <servlet-class>jsp.Validation</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyLoginValidator</servlet-name>
        <url-pattern>/LoginValidation</url-pattern>
    </servlet-mapping>
    ...
</web-app>
Avatar billede arne_v Ekspert
07. februar 2014 - 15:34 #5
Saa den nye maade:

<form name="frm" action="LoginValidation" method="post">

og ret servlet til:

...
@WebServlet(urlPatterns={"/LoginValidation"})
public class Validation extends HttpServlet {
...

(og ingen rettelser i web.xml)
Avatar billede mads375 Juniormester
07. februar 2014 - 16:56 #6
ok tak for det Arne

Hov nu får jeg en 404 fejl når jeg kører min JSP side:

http://postimg.org/image/ixmaodv41/

jeg har fået rettet min kode nu:

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Validation</title>
</head>
<body>
    <br><br><br>
        <center>
            <h1>Please enter username and password</h1>
           
            <form name="frm" action="LoginValidation" method="post">
                <input type="text" name="user">
                <input type ="password" name="pass">
                <input type="submit" value="Check">
            </form>
        </center>
</body>

package jsp;

import java.io.*;
//import java.util.*;
import java.sql.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.*;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {


    private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }
   
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {
       
       
        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        ResultSet rs;
        String userid = new String("");
        String password = new String("");
       
        response.setContentType("text/html");
        try {
            // Load the database driver
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(connectionURL, "root", "");
            //Add the data into the database
            String sql = "SELECT userid, password FROM login";
            Statement s = connection.createStatement();
            s.executeQuery(sql);
            rs = s.getResultSet();
           
            while(rs.next()) {
                userid = rs.getString("userid");
                password = rs.getString("password");
            }
            rs.close();
            s.close();
       
        } catch(Exception e) {
            System.out.println("Exception is: " + e);
          }
           
            if(userid.equals(request.getParameter("userid")) && password.equals(request.getParameter("password"))) {
                out.println("The user is valid");
            }
            else {
                out.println("You are not valid");
            }
    }
   
}
   
Kan du se hvad der sker nu. Min tomcat go mySQL kører fint
Avatar billede mads375 Juniormester
07. februar 2014 - 16:57 #7
<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ConnectionLoginForms</display-name>
          <description>Welcome to tomcat</description>
       
            <servlet>
                <servlet-name>MyLoginValidator</servlet-name>
                <servlet-class>jsp.Validation</servlet-class>
            </servlet>
           
            <servlet-mapping>
                <servlet-name>MyLoginValidatorn</servlet-name>
                <url-pattern>/LoginValidation</url-pattern>
            </servlet-mapping>
</web-app>
Avatar billede mads375 Juniormester
07. februar 2014 - 17:00 #8
hov den gamle xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 
       
            <servlet>
                <servlet-name>MyLoginValidator</servlet-name>
                <servlet-class>jsp.Validation</servlet-class>
            </servlet>
           
            <servlet-mapping>
                <servlet-name>MyLoginValidatorn</servlet-name>
                <url-pattern>/LoginValidation</url-pattern>
            </servlet-mapping>
</web-app>
Avatar billede mads375 Juniormester
07. februar 2014 - 17:05 #9
jeg kopierede lige min jsp kode ind i et testdokument, hvor det kørte fint. Jeg har prøvet at cleane projektet også uden resultat
Avatar billede mads375 Juniormester
07. februar 2014 - 17:16 #10
det er noget med mit xml at gøre. Når jeg sletter filen kører jsp siden fint
Avatar billede mads375 Juniormester
07. februar 2014 - 17:22 #11
mit xml ser sådan ud nu efter et par stavefejl rettelser:

<?xml version="1.0" encoding="UTF-8"?>

<!--<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">-->
 
<web-app>   
    <servlet>
        <servlet-name>MyLoginValidator</servlet-name>
        <servlet-class>jsp.Validation</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyLoginValidator</servlet-name>
        <url-pattern>/LoginValidation</url-pattern>
    </servlet-mapping>
   
</web-app>
Avatar billede mads375 Juniormester
07. februar 2014 - 17:31 #12
Undskyld jeg lige spammer med samme ting :-/ Men her vil jeg mene den rigtige XML er: ?

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
 
  <servlet>
        <servlet-name>MyLoginValidator</servlet-name>
        <servlet-class>jsp.Validation</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyLoginValidator</servlet-name>
        <url-pattern>/LoginValidation</url-pattern>
    </servlet-mapping>
</web-app>
Avatar billede arne_v Ekspert
07. februar 2014 - 19:03 #13
Koden ser rigtig ud nu.

Men fejlen har ikke noget med submit og servlet at goere.

Det ligner en fejl paa GET af JSP siden. Den kan ikke finde JSP'en.
Avatar billede mads375 Juniormester
07. februar 2014 - 19:19 #14
er det så noget med request.getParameter i action, eller skal jeg have en get metode ind et sted?
Avatar billede arne_v Ekspert
07. februar 2014 - 19:44 #15
Nej. Problemet er at den ikke kan finde din JSP side. Formentligt matcher URL i browser ikke med hvor JSP siden faktisk er.
Avatar billede mads375 Juniormester
07. februar 2014 - 19:52 #16
Jeg har lige prøvet at kopiere alt over i et nyt projekt, men jeg får stadigvæk samme fejl. Jeg får kun min jsp side frem når jeg sletter min web.xml under WEB-INF:-/ Forstår det desværre stadigvæk ikke, sorry

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
 
  <servlet>
        <servlet-name>MyLoginValidator</servlet-name>
        <servlet-class>jsp.Validation</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyLoginValidator</servlet-name>
        <url-pattern>/LoginValidation</url-pattern>
    </servlet-mapping>
</web-app>
Avatar billede mads375 Juniormester
07. februar 2014 - 19:56 #17
godt så begynder der at ske noget. Jeg tilføjede dette i min java class:

private static final long serialVersionUID = 1L;
Avatar billede arne_v Ekspert
07. februar 2014 - 19:57 #18
Ah. Saa det er web.xml som faar JSP til ikke at virke. Interessant.

Men hvad saa uden web.xml ?

Du har jo annotation paa din servlet nu, saa du behoever ikke web.xml - det er enten eller ikke baade og.
Avatar billede mads375 Juniormester
07. februar 2014 - 19:59 #19
så skal jeg så bare lige finde ud af hvorfor jeg får mit brugernavn og password ikke er valid, hehe :-) Altså giver mig en exception. Men tak for hjælpen Arne og smid et svar.
Avatar billede arne_v Ekspert
07. februar 2014 - 20:01 #20
re #17)

Hvad?

Det burde ikke goere nogen forskel.
Avatar billede mads375 Juniormester
07. februar 2014 - 20:02 #21
den kører faktisk også uden web.xml, men giver dog stadigvæk you are not valid exception
Avatar billede arne_v Ekspert
07. februar 2014 - 20:07 #22
Den database kode ser ogsaa meget suspekt ud!

Grundliggende tester du om om brugernavn/password matcher med den sidste raekke i databasen.

:-)
Avatar billede arne_v Ekspert
07. februar 2014 - 20:09 #23
Du skal naturligvis teste om brugernavn/password er i databasen uanset raekke.

Og maaske er det ikke optimalt at laese hele bruger databasen igennem. Overvej hvis Facebook brugte den metode.
Avatar billede mads375 Juniormester
07. februar 2014 - 20:11 #24
hehe ja ok det kan jeg godt se der ikke er så smart. Måske jeg skulle tilføje et id til hver bruger istedet for
Avatar billede mads375 Juniormester
07. februar 2014 - 20:11 #25
Det er også derfor jeg får at det ikke er valid så?
Avatar billede arne_v Ekspert
07. februar 2014 - 20:20 #26
Hvis det brugernavn/password du forsoeger at logge ind med ikke er sidste raekke, saa kan du ikke komme ind.
Avatar billede arne_v Ekspert
07. februar 2014 - 20:21 #27
id er ikke saa relevant i denn sammenhaeng (men nok en god ide af andre grunde).

Men jeg tror at du skal smaekke en WHERE paa den SELECT.
Avatar billede mads375 Juniormester
07. februar 2014 - 20:29 #28
for fanden det er så tæt på nu. Noget i denne stil?

String sql = "SELECT userid, password FROM login WHERE userid="mads" AND password="mads"";
Avatar billede arne_v Ekspert
07. februar 2014 - 20:34 #29
String sql = "SELECT userid, password FROM login WHERE userid=?";

prepare statement

set paremeter 1 til form vaerdien for brugernavn

executeQuery

test med if(rs.next())
Avatar billede mads375 Juniormester
09. februar 2014 - 11:21 #30
Hej Arne.

Jeg har prøvet at ændre lidt i min kode:

package jsp;

import java.io.*;
//import java.util.*;
import java.sql.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.*;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {


        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        ResultSet rs;
        String userid = new String("");
        String password = new String("");

        response.setContentType("text/html");
        try {
            // Load the database driver
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(connectionURL, "root", "");
            //Add the data into the database
            String sql = "SELECT userid, password FROM login";
            Statement s = connection.createStatement();
            s.executeQuery(sql);
            rs = s.getResultSet();

            while(rs.next()) {
                userid = rs.getString("userid");
                password = rs.getString("password");
           
                if(userid.equals(request.getParameter("userid")) && password.equals(request.getParameter("password"))) {
                    out.println("The user is valid");
                    response.sendRedirect("index_true.jsp");
                }
                else {
                    out.println("You are not valid");
                    response.sendRedirect("index_false.jsp");
                }
           
           
            }
            rs.close();
            s.close();

        } catch(Exception e) {
            System.out.println("Exception is: " + e);
          }

           
    }

}

Jeg har sæt min if sætning inden i min while løkke og lavet en Redirect. Mangler jeg stadigvæk noget etentielt?
Avatar billede mads375 Juniormester
09. februar 2014 - 11:51 #31
Er det noget hen ala dette her:

String sql = "SELECT * FROM login WHERE userid = ?, password = ?";
            PreparedStatement prest = connection.prepareStatement(sql);
            prest.setString("?", "?");
            ResultSet rs1 = prest.executeQuery();
            Statement s = connection.createStatement();
            s.executeQuery(sql);
            rs = s.getResultSet();
Avatar billede mads375 Juniormester
09. februar 2014 - 13:14 #32
Jeg har prøvet at lave dette istedet for:

try {
            // Load the database driver
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(connectionURL, "root", "");
            //Add the data into the database
            String sql = "SELECT * FROM login WHERE userid = ?, password = ?";
           
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(userid, password);
            ResultSet result = preparedStatement.executeQuery();
           
            Statement s = connection.createStatement();
            s.executeQuery(sql);
            rs = s.getResultSet();

            while(rs.next()) {
                userid = rs.getString("userid");
                password = rs.getString("password");
            }
            rs.close();
            s.close();

        } catch(Exception e) {
            System.out.println("Exception is: " + e);
          }

            if(userid.equals(request.getParameter("userid")) && password.equals(request.getParameter("password"))) {
                out.println("The user is valid");
                response.sendRedirect("index_true.jsp");
            }
            else {
                out.println("You are not valid");
            }
    }

Men i "preparedStatement.setString(userid, password);" får jeg denne fejl:

The method setString(int, String) in the type PreparedStatement is not applicable for the arguments (String,  String)

Men er det ikke på rette vej nu?
Avatar billede mads375 Juniormester
09. februar 2014 - 13:29 #33
undskyld jeg spammer på denne måde, men jeg kommer hele tiden lidt tættere på tror jeg. Hvad siger i/du til denne kode så:

package jsp;

import java.io.*;
//import java.util.*;
import java.sql.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.*;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {


        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        ResultSet rs;
        String userid = new String("");
        String password = new String("");

        response.setContentType("text/html");
        try {
            // Load the database driver
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(connectionURL, "root", "");
            //Add the data into the database
            String sql = "SELECT * FROM login WHERE userid = ?, password = ?";
           
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, userid);
            preparedStatement.setString(2, password);
            preparedStatement.executeQuery();
           
            Statement s = connection.createStatement();
            s.executeQuery(sql);
            rs = s.getResultSet();

            while(rs.next()) {
                userid = rs.getString("userid");
                password = rs.getString("password");
               
                if(userid.equals(request.getParameter("userid")) && password.equals(request.getParameter("password"))) {
                    out.println("The user is valid");
                    response.sendRedirect("index_true.jsp");
                }
                else {
                    out.println("You are not valid");
                }
            }
            rs.close();
            s.close();

        } catch(Exception e) {
            System.out.println("Exception is: " + e);
          }

           
    }

}
Avatar billede mads375 Juniormester
09. februar 2014 - 13:47 #34
Jeg vil iøvrigt lige nævne at det eneste jeg gerne vil er at få returneret om userid og password med navnet "mads" eksisterer i databasen. Altså ikke noget med at create en user. Så det vil sige at hvis jeg indtaster "mads" ind i min form vil jeg gerne have returneret om mads eksisterer i databasen eller ikke.
Avatar billede mads375 Juniormester
09. februar 2014 - 15:43 #35
Arne jeg tror jeg er kommet meget tættere på nu:

package jsp;

import java.io.*;
//import java.util.*;
import java.sql.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.*;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {


        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        ResultSet rs;
       
        String userid = request.getParameter("userid");
        String password =request.getParameter("password");
        ////and your select statement
        String sql = "SELECT * FROM login WHERE userid = ? AND password = ?";
        Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(connectionURL, "root", "");
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, userid);
        preparedStatement.setString(2, password);

        Statement s = connection.createStatement();
        rs =preparedStatement.executeQuery();

        ////if there are next ib rs so you have a user by this id and password
        if(rs.next()) {
          out.println("The user is valid");
        }
        else {
          out.println("You are not valid");
        }
}

Min eneste fejl er dog:
http://postimg.org/image/8nj1r64sz/

Alle mine { } skulle være lukket nu?
Avatar billede arne_v Ekspert
09. februar 2014 - 15:57 #36
jeg synes altsaa ogsaa at der ser ud til at mangle en

du slutter med 2 } og du skal have afsluttet 3: if, metode og klasse
Avatar billede mads375 Juniormester
09. februar 2014 - 16:03 #37
Hej igen Arne.

Her er min nye kode som compiler, men stadigvæk giver mig det forkerte "You are not valid"

package jsp;

import java.io.*;
import java.sql.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.*;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {


        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        ResultSet rs;
        String userid = request.getParameter("userid");
        String password =request.getParameter("password");
     
       
        try{
            String sql = "SELECT * FROM login WHERE userid = ? AND password = ?";
            Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(connectionURL, "root", "");
           
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, userid);
            preparedStatement.setString(2, password);

            Statement s = connection.createStatement();
            rs =preparedStatement.executeQuery();
           
         
            if(rs.next()) {
              out.println("The user is valid");
            }
            else {
              out.println("You are not valid");
            }
           
        }catch(Exception e) {
            System.out.println("The exception is" + e);
        }
    }
}
Avatar billede mads375 Juniormester
09. februar 2014 - 16:17 #38
Forhåbentligtvis sidste kode i denne tråd. Jeg undskylder igen spammeriet :-/

package jsp;

import java.io.*;
import java.sql.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.*;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {

        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet rs = null;
        String userid = request.getParameter("userid");
        String password =request.getParameter("password");
        response.setContentType("text/html");
     
       
        try{
            Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(connectionURL, "root", "");
            String sql = "SELECT * FROM login WHERE userid = ? AND password = ?";
           
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, userid);
            preparedStatement.setString(2, password);

            //Statement s = connection.createStatement();
            rs =preparedStatement.executeQuery();
           
            if(rs.next()) {
              out.println("The user is valid");
            }
            else {
              out.println("You are not valid");
            }
           
        }catch(Exception e) {
            System.out.println("The exception is" + e);
           
        }
       
    }
}
Avatar billede arne_v Ekspert
09. februar 2014 - 16:23 #39
Har du checket de banale ting: at du har tastet brugernavn og password korrekt, at de er i databasen etc.?
Avatar billede arne_v Ekspert
09. februar 2014 - 16:24 #40
private ServletConfig config;

    public void init (ServletConfig config)
    throws ServletException{
        this.config = config;
    }

bruger du vist ikke, saa ud med det.

Jo faerre linier kode jo nemmere er koden at overskue!
Avatar billede mads375 Juniormester
09. februar 2014 - 16:26 #41
hermed slettet. Jeg har tjekket det rigtig mange gange og det er rigtig med "mads" og "mads" i brugerid og kode:-/
Avatar billede mads375 Juniormester
09. februar 2014 - 16:27 #42
hov min XML fil er væk. Kan det være det, eller kørte den uden den? #18
Avatar billede arne_v Ekspert
09. februar 2014 - 16:30 #43
Lad os lige debugge lidt:

String userid = request.getParameter("userid");
String password =request.getParameter("password");
response.setContentType("text/html");

->

String userid = request.getParameter("userid");
String password =request.getParameter("password");
response.setContentType("text/html");
out.println("form userid = |" + userid + "| formpassword = |" + password + "|");
Avatar billede mads375 Juniormester
09. februar 2014 - 16:35 #44
Ok super Arne. Jeg er meget taknemmelig for hjælpen. Jeg får denne fejl nu:

form userid = |null| formpassword = |null| You are not valid
Avatar billede arne_v Ekspert
09. februar 2014 - 16:40 #45
<input type="text" name="user">
                <input type ="password" name="pass">

og

String userid = request.getParameter("userid");
String password =request.getParameter("password");

passer nok ikke saa godt sammen!

:-)
Avatar billede arne_v Ekspert
09. februar 2014 - 16:41 #46
argumentet til getParameter er feltets navn

og getParameter returnerer null hvis navnet ikke findes
Avatar billede mads375 Juniormester
09. februar 2014 - 17:09 #47
Arne du er for sej, seriøst. Mange mange mange tak for hjæpen, du er sku for sej. Smider du et svar?
Avatar billede mads375 Juniormester
09. februar 2014 - 17:09 #48
Til andre brugere, så er svaret her:

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Validation</title>
<style type="text/css">
/* border-radius er rundt hjørner på input..*/
input[type=text] {padding:5px; border:2px solid #ccc; webkit-border-radius: 5px; border-radius:5px;}
input[type=text]:focus{border-color:yellow;}
input[type=password] {padding:5px; border:2px solid #ccc; webkit-border-radius: 5px; border-radius:5px;}
input[type=password]:focus{border-color:yellow;}
input[type=submit] {padding: 5px 15px; background:#ccc; border:0 none; cursor:pointer; webkit-border-radius:5px; border-radius: 5px;}
</style>
</head>
<body>
    <br><br><br>
        <center>
            <h1>Please enter user name and password</h1>
           
            <form name="frm" action="LoginValidation" method="post">
                <input type="text" name="userid">
                <input type ="password" name="password">
                <input type="submit" value="Check" class="submit">
            </form>
        </center>
</body>

Servlet:

package jsp;

import java.io.*;
import java.sql.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.*;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {

    private static final long serialVersionUID = 1L;
   
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {

        PrintWriter out = response.getWriter();
        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet rs = null;
        String userid = request.getParameter("userid");
        String password =request.getParameter("password");
        response.setContentType("text/html");
       
     
        try{
            Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(connectionURL, "root", "");
            String sql = "SELECT * FROM login WHERE userid = ? AND password = ?";
           
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, userid);
            preparedStatement.setString(2, password);

            //Statement s = connection.createStatement();
            rs =preparedStatement.executeQuery();
           
            if(rs.next()) {
              out.println("The user is valid");
            }
            else {
              out.println("You are not valid");
            }
           
        }catch(Exception e) {
            System.out.println("The exception is" + e);
           
        }
       
    }
}
Avatar billede arne_v Ekspert
09. februar 2014 - 17:56 #49
svar
Avatar billede mads375 Juniormester
09. februar 2014 - 17:59 #50
Vi er enige om at web.xml ikke skal bruges mere på denne måde ikke?
Avatar billede arne_v Ekspert
09. februar 2014 - 18:05 #51
Med:

@WebServlet(urlPatterns = {"/LoginValidation"})

skal der ikke vaere noget i web.xml (jeg tror dog at filen stadig skal vaere der, men bare uden servlet mapping)
Avatar billede arne_v Ekspert
09. februar 2014 - 18:16 #52
En modificeret version af din kode:


package february;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = {"/LoginValidation"})
public class Validation extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String HTML_USERID_FIELD = "userid";
    private static final String HTML_PASSWORD_FIELD = "password";
    private static final String DB_DRIVER = "com.mysql.jdbc.Driver";
    private static final String DB_CONNECTION_URL = "jdbc:mysql://localhost/dblogin";
    private static final String DB_USERNAME = "root";
    private static final String DB_PASSWORD = "";
    private static final String LOGIN_CHECK_SQL = "SELECT * FROM login WHERE userid = ? AND password = ?";
    static {
        try {
            Class.forName(DB_DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String userid = request.getParameter(HTML_USERID_FIELD);
        String password = request.getParameter(HTML_PASSWORD_FIELD);
        boolean valid = false;
        try {
            Connection con = DriverManager.getConnection(DB_CONNECTION_URL, DB_USERNAME, DB_PASSWORD);
            PreparedStatement pstmt = con.prepareStatement(LOGIN_CHECK_SQL);
            pstmt.setString(1, userid);
            pstmt.setString(2, password);
            ResultSet rs = pstmt.executeQuery();
            valid = rs.next();
            rs.close();
            pstmt.close();
            con.close();
         
        } catch(SQLException e) {
            e.printStackTrace();
        }
        if(valid) {
            out.println("The user is valid");
        } else {
            out.println("You are not valid");
        }
    }
}
Avatar billede mads375 Juniormester
09. februar 2014 - 18:36 #53
Super mange tak for det Arne
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

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