HTTP状态404 servlet请求

时间:2014-02-24 13:57:49

标签: mysql servlets login

我正在尝试使用 JSP 网站和 Servlet 创建一个登录表单。在MySQL数据库中,我有以下列:FirstNameLastNameusernamepassword。这里我添加了一些信息。当我运行 JSP 站点时,它应该检查LoginServlet,但是当我在JSP站点上点击提交时,我收到以下错误:

HTTP Status 404 - /ConnectionLoginForm/LoginServlet
type Status report
message /ConnectionLoginForm/LoginServlet
description The requested resource is not available.

我的Tomcat服务器正在运行,依此类推。有没有人知道我为什么会收到这个错误?我把JSP和servlet放在哪里的路径应该是正确的。我正在使用Eclipse,我的JSP在WebContent下,而servlet在src-> package-> servlets下。我发布了我的所有代码,但是一开始我可以想象只有JSP和LoginServlet存在问题?我希望有一个人可以帮助我。最诚挚的问候Mads。 这是代码:

<%@ page language="java" 
    contentType="text/html; charset=windows-1256"
    pageEncoding="windows-1256"
%>
<!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=windows-1256">
        <title>Login Page</title>
    </head>

    <body>
        <form action="LoginServlet">

            Please enter your username      
            <input type="text" name="un"/><br>      

            Please enter your password
            <input type="text" name="pw"/>

            <input type="submit" value="submit">            

        </form>
    </body>
</html>

LoginServlet:

package ExamplePackage;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class LoginServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
                       throws ServletException, java.io.IOException {

        try {       

     UserBean user = new UserBean();
     user.setUserName(request.getParameter("un"));
     user.setPassword(request.getParameter("pw"));

     user = UserDAO.login(user);

        if (user.isValid()) {

          HttpSession session = request.getSession(true);       
          session.setAttribute("currentSessionUser",user); 
          response.sendRedirect("userLogged.jsp"); //logged-in page             
        }

        else 
          response.sendRedirect("invalidLogin.jsp"); //error page 
        } 


            catch (Throwable theException) {
                System.out.println(theException); 
            }
       }
    }

UserBean Servlet:

package ExamplePackage;

public class UserBean {

    private String username;
    private String password;
    private String firstName;
    private String lastName;
    public boolean valid;


    public String getFirstName() {
       return firstName;
    }

    public void setFirstName(String newFirstName) {
       firstName = newFirstName;
    }


    public String getLastName() {
       return lastName;
            }

    public void setLastName(String newLastName) {
       lastName = newLastName;
            }


    public String getPassword() {
       return password;
    }

    public void setPassword(String newPassword) {
       password = newPassword;
    }


    public String getUsername() {
       return username;
            }

    public void setUserName(String newUsername) {
       username = newUsername;
            }


    public boolean isValid() {
       return valid;
    }

    public void setValid(boolean newValid) {
       valid = newValid;
    }   
}

UserDAO servlet:

package ExamplePackage;

   import java.text.*;
   import java.util.*;
   import java.sql.*;

   public class UserDAO     
   {
      static Connection currentCon = null;
      static ResultSet rs = null;  



      public static UserBean login(UserBean bean) {

         //preparing some objects for connection 
         Statement stmt = null;    

         String username = bean.getUsername();    
         String password = bean.getPassword();   

         String searchQuery =
               "SELECT * FROM users WHERE username='"
                        + username
                        + "' AND password='"
                        + password
                        + "'";

      // "System.out.println" prints in the console; Normally used to trace the process
      System.out.println("Your user name is " + username);          
      System.out.println("Your password is " + password);
      System.out.println("Query: "+searchQuery);

      try 
      {
         //connect to DB 
         currentCon = ConnectionManager.getConnection();
         stmt=currentCon.createStatement();
         rs = stmt.executeQuery(searchQuery);           
         boolean more = rs.next();

         // if user does not exist set the isValid variable to false
         if (!more) 
         {
            System.out.println("Sorry, you are not a registered user! Please sign up first");
            bean.setValid(false);
         } 

         //if user exists set the isValid variable to true
         else if (more) 
         {
            String firstName = rs.getString("FirstName");
            String lastName = rs.getString("LastName");

            System.out.println("Welcome " + firstName);
            bean.setFirstName(firstName);
            bean.setLastName(lastName);
            bean.setValid(true);
         }
      } 

      catch (Exception ex) 
      {
         System.out.println("Log In failed: An Exception has occurred! " + ex);
      } 

      //some exception handling
      finally 
      {
         if (rs != null)    {
            try {
               rs.close();
            } catch (Exception e) {}
               rs = null;
            }

         if (stmt != null) {
            try {
               stmt.close();
            } catch (Exception e) {}
               stmt = null;
            }

         if (currentCon != null) {
            try {
               currentCon.close();
            } catch (Exception e) {
            }

            currentCon = null;
         }
      }

return bean;

      } 
   }

连接Servlet:

package ExamplePackage;

import java.sql.*;
import java.util.*;


   public class ConnectionManager {

      static Connection con;
      static String url;

      public static Connection getConnection()
      {

         try
         {
            String url = "jdbc:mysql://localhost/ConnectionLoginFormDB"; 
            // assuming "DataSource" is your DataSource name

            Class.forName("com.mysql.jdbc.Driver");

            try
            {               
               con = DriverManager.getConnection(url,"username","password"); 

            // assuming your SQL Server's   username is "username"               
            // and password is "password"

            }

            catch (SQLException ex)
            {
               ex.printStackTrace();
            }
         }

         catch(ClassNotFoundException e)
         {
            System.out.println(e);
         }

      return con;
}
   }

Editeded:

的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" 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>ConnectionLoginForm</display-name>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>ExamplePackage.LoginServlet</servlet-class>
    </servlet>  
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
</web-app>

1 个答案:

答案 0 :(得分:0)

试试这个: 在web.xml中

  <servlet>
    <servlet-name>Servlet</servlet-name>
    <servlet-class>Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
  </servlet-mapping>