1

次のようなサーブレットがあり、Eclipse tomcat で完全に実行されています。それを webapps フォルダーにアップロードし、Ubuntu サーバーで Tomcat を再起動すると、Tomcat のルート ページは正常に機能しますが、その URL (/ServerAPP/Login) は読み込まれません。なぜこれが起こっているのか誰かが何か考えているなら、私はそれを大いに感謝します. 私はUbuntuと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;
}

}

4

1 に答える 1

0

それで私はそれを理解することになり、他の人が知るのに役立つかもしれないと思いました. 理由: どうやら、ubuntu の Tomcat は Java 6 のみでしたが、Eclipse は Java 7 をターゲットにしていました。

修正: プロジェクトのプロパティに移動し、ターゲットを変更しました (これにより eclipse が異常になりました) が、再コンパイルして ubuntu の tomcat に配置すると、正常に動作します。

私を助けようとしてくれた人々に感謝します。

于 2013-03-19T04:34:28.823 に答える