2017-06-02 95 views
0

我正在嘗試爲網站創建登錄頁面(我現在正在使用教程 - 以前從未這樣做過)。當我去使用「登錄」頁面時,它彈出404錯誤。這是代碼。JSP登錄頁面無法正常工作

LoginPage.jsp

<%@ 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.java

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; 

/** 
* Servlet implementation class LoginServlet 
*/ 
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.Java

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.java

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; 

     } 
    } 

ConnectionManager.java

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:odbc:" + "logindb"; 
      // assuming "DataSource" is your DataSource name 

      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

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

      // 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; 
} 
    } 

錯誤:

HTTP Status [404] – [Not Found]

Type Status Report

Message /LoginExample/LoginServlet

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/9.0.0.M21

+0

圍棋,並在網上辦理登機手續的servlet的Hello World程序,並努力實踐它,回來這個應用程序...這是初學者的好方法... – VNT

回答

1

在JSP的形式,不指定java文件名。嘗試使用servlet的URL模式。

在JSP頁面
+0

含義是什麼?對不起,在編程時完成新手。像WordPress這樣的東西被非常寵壞了。 –

+0

當你創建一個servlet時,會指定一個url-pattern,它只是servlet的名字。然後將whis附加到例如URL , action =「localhost/web-app/testservlet」其中testservlet是url-pattern。我使用NetBeans。 –

0

,表單上的url-pattern映射 「LoginServlet」 的servlet:因爲在你的web.xml文件在WEB-INF

<form action="LoginServlet"> 

的錯誤是,在LoginServlet被映射到別的東西上。如果你想要的工作,你需要在web.xml中指定這樣的:

<servlet> 
    <description>LoginServlet</description> 
    <display-name>LoginServlet</display-name> 
    <servlet-name>LoginServlet</servlet-name> 
    <servlet-class>yourpackagename.LoginServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>LoginServlet</servlet-name> 
    <url-pattern>/LoginServlet</url-pattern> 
    </servlet-mapping>