2014-03-05 54 views
1

我已經寫了一個servlet程序,用於登錄頁面..am使用tomcat服務器...後,我在服務器上運行得到上述錯誤... 下面是我的servlet代碼。HTTP狀態404 - /請求的資源不可用

包演示;

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

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

/** 
* Servlet implementation class LoginServlet 
*/ 

public class LoginServlet extends HttpServlet { 

    static private String dbUrl="jdbc:mysql://localhost:3306/employee"; 
    static private String dbUn="root"; 
    static private String dbPwd="root"; 
    static private Connection ConObj; 
    static private Statement StmtObj; 
    static private ResultSet RsObj; 


    public void service(HttpServletRequest request,HttpServletResponse response)throws IOException 


    { 
     try { 
     Class.forName("com.mysql.jdbc.driver"); 

     ConObj=DriverManager.getConnection(dbUrl, dbUn, dbPwd); 
     StmtObj=ConObj.createStatement(); 
     response.setContentType("text/html"); 
     PrintWriter out=response.getWriter(); 
     out.write("<html><body>"); 
     out.write("<h2>"); 
     String ActLogName=request.getParameter("Logname"); 
     String ActPwd=request.getParameter("Pwd"); 
     String SqlQuery="select * from users where username='"+ActLogName+"' and password='"+ActPwd+"'"; 
     RsObj=StmtObj.executeQuery(SqlQuery); 
     if(RsObj.next()==true) 
     { 
      String ExpLogName=RsObj.getString("username"); 
      String ExpPwd=RsObj.getString("password"); 
      if(ActLogName.equals(ExpLogName)&& ActPwd.equals(ExpPwd)) 
      { 
       out.write("Login Success"); 
      } 
     } 
     else 
     { 
      out.write("Login Failed"); 
     } 
     out.write("</h2>"); 
     out.write("</body></html>"); 
     } 
     catch (ClassNotFoundException|SQLException exp) { 

      exp.printStackTrace(); 
     } 

     finally{ 
      try { 
      RsObj.close(); 
      StmtObj.close(); 
      ConObj.close(); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
     } 

     } 


    } 
} 

下面是我的html代碼

<!DOCTYPE html> 
<html> 
<head> 

<title>login page</title> 
</head> 
<body> 
<form action="http://localhost:8080/FlipKart/loginpage"> 

LoginName :<input type="text" name="Logname"><br> 
Password :<input type="password" name="Pwd"><br> 
<input type="submit" value="Login"> 
<input type="button" value="cancel"> 

</form> 

</body> 
</html> 

下面是我的web.xml代碼

<web-app> 
<servlet> 
<servlet-name>loginserv</servlet-name> 
<servlet-class>LoginServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>loginserv</servlet-name> 
<url-pattern>/loginpage</url-pattern>] 
</servlet-mapping> 
</web-app> 

有人可以幫我去解決這個問題.. 在此先感謝.. :)

+0

你想要打什麼URL? –

+0

您需要確保部署在Tomcat上的應用程序被命名爲FlipKart。 –

+0

另一件事是,如果您訪問的頁面和操作中的servlet託管在同一位置,則您應該在表單標記的操作屬性中使用相對URL。 –

回答

0

在web.xml中對類的錯誤引用 使用全名包名稱類

<servlet> 
<servlet-name>loginserv</servlet-name> 
<servlet-class>demo.LoginServlet</servlet-class> 
</servlet> 
+0

我添加了包名...仍然有相同的錯誤.. !! – Kiranyls

1

您是否在更改包名後重新啓動服務器? Tomcat只在啓動時讀取web.xml。 此外,請確保您的課程在webapps/WEB-INF/classes文件夾下。

1

它看起來好像你的應用程序上下文需要改變。也許它被設置爲根。所以它沒有打/ FlipKart

看看this stackoverflow鏈接關於設置應用程序上下文的更多信息。

這是對於tomcat 7.我知道你可以編輯以前版本的META-INF/context.xml。如果您沒有該文件夾和文件,只需創建它。

編輯 檢查你的tomcat日誌,看看它在哪裏被部署,或者是否有什麼事情導致它根本沒有被部署。如果您是從IDE運行的,則可以從控制檯中看到。

2

要覆蓋錯誤的方法,覆蓋doPost()代替和修改您的形式,包括method="post"這樣的:

public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException 
{ 
    //... 
} 

<form action="http://localhost:8080/FlipKart/loginpage" method="post"> 

此外,如果你不想要始終手動包含上下文的完整路徑,您可以閱讀this

相關問題