0

I have already created a small application but I have problems in running a piece of code in Tomcat server 7. I want to create a simple login page. I have built a database using MySQL. My form is appeared correctly in browser, but at the time i press submit button i get an 404 error. I have used servlets and jsp. I would appreciate it if anyone is taking a look in my code below.

LoginKlientiServlet.java:

    package prorent.controllers;
  import java.io.IOException;
  import java.io.PrintWriter;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.SQLException;

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

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.sql.*;


import prorent.DAO.LoginKlientiDAO;
//@(name="LoginKlientiServlet", urlPatterns= {"/LoginKlientiServlet"})
public class LoginKlientiServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String user = request.getParameter("username");
    String pass = request.getParameter("password");
    String repass = request.getParameter("repassword");
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", "erida");
        PreparedStatement pst = (PreparedStatement) conn.prepareStatement("Select username,password, repassword from klienti where username=? and password=? and repassword=?");
        pst.setString(1, user);
        pst.setString(2, pass);
        pst.setString(2, repass);
        ResultSet rs = pst.executeQuery();
        if (rs.next()) {
            out.println("Correct login credentials");
        } 
        else {
            out.println("Incorrect login credentials");
        }
    } 
    catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }
}
}

LoginKlientiDAO.java

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
   <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Login Application</title>
 </head>
  <body>
   <form action="LoginKlientiServlet" method="post">
    <fieldset style="width: 300px">
        <legend> Login to App </legend>
        <table>
            <tr>
                <td>User ID</td>
                <td><input type="text" name="username" required="required" /></td>
            </tr>
            <tr>
                <td>Password</td>
                <td><input type="password" name="password" required="required" /></td>
            </tr>
            <tr>
                <td>Repassword</td>
                <td><input type="password" name="repassword" required="required" /></td>
            </tr>
            <tr>
                <td><input type="submit" value="Login" /></td>
            </tr>
        </table>
    </fieldset>
</form>

web.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"     xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
metadata-complete="true" version="2.5">

<display-name>Jap me qera</display-name>


<servlet>

    <description />

    <display-name>LoginKlientiController</display-name>

    <servlet-name>LoginKlienti-DAO</servlet-name>

    <servlet-class>prorent.controllers.LoginKlientiServlet</servlet-class>

</servlet>



    <servlet-mapping>

    <servlet-name>login-lista</servlet-name>

    <url-pattern>/listalog</url-pattern>



</servlet-mapping>

My console shows this error message

      Jul 25, 2016 2:48:40 PM org.apache.catalina.core.AprLifecycleListener init
  INFO: The APR based Apache Tomcat Native library which allows optimal      performance in production environments was not found on the java.library.path: C:\Program Files\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/bin/server;C:/Program Files/bin;C:/Program Files/lib/amd64;C:\Program Files\WinRAR;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Skype\Phone\;C:\Users\USER\AppData\Local\Temp\Rar$EX59.800\eclipse;;.
  Jul 25, 2016 2:48:40 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
 WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:prorent' did not find a matching property.
Jul 25, 2016 2:48:40 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jul 25, 2016 2:48:40 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jul 25, 2016 2:48:40 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 899 ms
Jul 25, 2016 2:48:40 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jul 25, 2016 2:48:40 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
Jul 25, 2016 2:48:41 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [197] milliseconds.
Jul 25, 2016 2:48:41 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 25, 2016 2:48:41 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 25, 2016 2:48:41 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1164 ms

Thank you in advance!

Elly
  • 3
  • 4

2 Answers2

0

Your form submits the data to the url /LoginKlientiServlet but you don't have any servlet mapping for that url pattern.

May be you can add a url pattern in your web.xml like you have /listalog. For example,

<servlet-mapping>
    <servlet-name>LoginKlienti-DAO</servlet-name>
    <url-pattern>/LoginKlientiServlet</url-pattern>
</servlet-mapping>
Abubakkar
  • 15,488
  • 8
  • 55
  • 83
0

Your servlet mapping seems to be wrong in the deployment descriptor (web.xml)

You can find out more on how to map your servlet to the application here

Correct code should look somethinf like:

<servlet>
  <servlet-name>LoginKlienti-DAO</servlet-name>
  <servlet-path>prorent.controllers.LoginKlientiServlet</servlet-path>
</servlet>
<servlet-mapping>
  <servlet-name>LoginKlienti-DAO</servlet-name>
  <url-pattern>/LoginKlientiServlet</url-pattern>
</servlet-mapping>
Community
  • 1
  • 1
MaVRoSCy
  • 17,747
  • 15
  • 82
  • 125
  • you should fix your servlet path to point your servlet class. As i have provided the code your servlet should be in the package `prorent.controllers`. If it is not there you should fix this and select the correct package – MaVRoSCy Jul 26 '16 at 06:35