2013-03-13 42 views
1

我有一个servlet,如下所示,它在我的Eclipse Tomcat上完美运行。当我将它上传到webapps文件夹并在我的Ubuntu服务器上重新启动我的tomcat时,它的URL(/ ServerAPP/Login)将不会加载,尽管tomcat根页面没有问题。如果有人知道为什么会发生这种情况,我将不胜感激。我对Ubuntu和Tomcat的内部工作相当陌生,所以我可能错过了任何东西。 我可以根据要求提供更多信息,我只是不确定需要多少,或者有什么简单而愚蠢的东西我没有考虑。在Eclipse中运行在Tomcat上但在Ubuntu服务器上不显示的Servlet Tomcat

package Actions; 
import java.io.*; 
import java.sql.*; 
import java.util.logging.Logger; 


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

@WebServlet(urlPatterns={"/Login"}) 
public class Login extends HttpServlet implements DataSource { 

private String User = null; 
Connection connection = null; 
private String password = null; 


public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    if(request.getParameter("User") != null){ 
     this.setUser((String) request.getParameter("User").toString()); 
    } 
    if(request.getParameter("password") != null){ 
     this.setPassword((String) request.getParameter("password").toString()); 
    } 



    try { 
     System.out.println("Loading driver..."); 
     Class.forName("com.mysql.jdbc.Driver"); 
     System.out.println("Driver loaded!"); 
    } catch (ClassNotFoundException e) { 
     throw new RuntimeException("Cannot find the driver in the classpath!", e); 
    } 

    Login ds = new Login(); 
    try { 
     connection = ds.getConnection(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 


    PrintWriter out = response.getWriter(); 
    if(connection != null){ 

     //out.println(User + " " + password); 

     //Check if user exists in database 
     if(User!= null){ 

      Statement stmt; 
      ResultSet rs; 
      try { 
       stmt = connection.createStatement(); 
       rs = stmt.executeQuery("SELECT * FROM tblUsers WHERE Username = '" + User + "';"); 


       if(!rs.next()){ 
        out.println("Username: " + User + " was not found in Users table."); 
       } 
       else{ 
        //User was found now check if password is correct 
        if(rs.getString(3).equals(password)){ 
         out.println("User: " + User + " login successful!"); 
        } 
        else if(rs.getString(3).equals(password) == false){ 
         //password was incorrect 
         out.println("Password incorrect!"); 
        } 

        /* 
        while(rs.next()){ 
         out.println("User ID: " + rs.getInt(1) + " Username: " + rs.getString(2)); 
        } 
        */ 

       } 

       rs.close(); 
       stmt.close(); 
       connection.close(); 

      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 

     /* 
     Statement stmt; 
     ResultSet rs; 
     try { 
      stmt = connection.createStatement(); 
      rs = stmt.executeQuery("Select * from tblUsers;"); 
      while(rs.next()){ 
       out.println("User ID: " + rs.getInt(1) + " Username: " + rs.getString(2)); 
      } 
      rs.close(); 
      stmt.close(); 
      connection.close(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     */ 

    } 



} 



@Override 
public PrintWriter getLogWriter() throws SQLException { 
    // TODO Auto-generated method stub 
    return null; 
} 


@Override 
public void setLogWriter(PrintWriter out) throws SQLException { 
    // TODO Auto-generated method stub 

} 


@Override 
public void setLoginTimeout(int seconds) throws SQLException { 
    // TODO Auto-generated method stub 

} 


@Override 
public int getLoginTimeout() throws SQLException { 
    // TODO Auto-generated method stub 
    return 0; 
} 


@Override 
public Logger getParentLogger() throws SQLFeatureNotSupportedException { 
    // TODO Auto-generated method stub 
    return null; 
} 


@Override 
public <T> T unwrap(Class<T> iface) throws SQLException { 
    // TODO Auto-generated method stub 
    return null; 
} 


@Override 
public boolean isWrapperFor(Class<?> iface) throws SQLException { 
    // TODO Auto-generated method stub 
    return false; 
} 


@Override 
public Connection getConnection() throws SQLException { 
    if (connection != null) { 
     System.out.println("Cant craete a Connection"); 
} else { 
     connection = DriverManager.getConnection(
         "<redacted>", "AWSCards", "Cards9876"); 
} 
return connection; 
} 


@Override 
public Connection getConnection(String username, String password) 
     throws SQLException { 
    // TODO Auto-generated method stub 
    if (connection != null) { 
      System.out.println("Cant craete a Connection"); 
    } else { 
      connection = DriverManager.getConnection(
          "<redacted>", username, password); 
    } 
    return connection; 
} 


public String getUser() { 
    return User; 
} 


public void setUser(String user) { 
    User = user; 
} 



public String getPassword() { 
    return password; 
} 



public void setPassword(String password) { 
    this.password = password; 
} 

}

+1

在'catch'节中添加'response.sendError()'异常,并指定关于堆栈跟踪的所有信息。似乎数据库有问题(连接等)。 – 2013-03-13 08:24:36

+0

那么数据库会从Eclipse中正常返回.... – dhockey 2013-03-14 00:46:41

+0

确保数据库也可以从Ubuntu获得。 – 2013-03-14 02:17:10

回答

0

所以我最终想出来的,我想这可能帮助别人知道。 原因: 很显然,我在Ubuntu的Tomcat只有Java 6中,而我的日食是针对Java 7中

修复: 我去项目属性,改变了目标(这使蚀狂),但随后重新编译它并把它放在Ubuntu上的Tomcat上,它工作正常。

感谢那些试图帮助我的人。

相关问题