0

我在阅读/显示用户信息时遇到了另一个问题。插入完成后,我有另一个提交按钮,应该向用户显示他的信息(注册)。我什至朝着正确的方向前进吗?

<%@page import="java.sql.*, java.util.*, javax.servlet.*, java.io.*, javax.servlet.http.*,     business.*"%>

<% 
Connection conn = null; 

try { 
    String email=request.getParameter("emailAddress");
    String dbURL = "jdbc:mysql://localhost:3306/Users"; 
    String user = "root"; 
    String pwd = "password"; 
    String driver = "com.mysql.jdbc.Driver"; 

    String query = ("SELECT * FROM User WHERE EmailAddress = '" +email+ "'");
    Class.forName(driver); 
    conn = DriverManager.getConnection(dbURL, user, pwd); 
    Statement statement = conn.createStatement(); 
    ResultSet rs = statement.executeQuery(query);
    User userObj;
    ArrayList<User> users = new ArrayList<User>();
    statement.close();

    while(rs.next())
                   {
    userObj = new User(rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5),     rs.getString(6));
    users.add(userObj);
           }
    Iterator it = users.iterator();
    User tempUser;

    while(it.hasNext())
                   {
        tempUser = (User) it.next();

        %>
        Username: <%= tempUser.getUserName() %><br>
        Password: <%= tempUser.getUserPass() %><br>
        First Name: <%= tempUser.getFirstName() %><br>
        Last Name: <%= tempUser.getLastName() %><br>
        Email: <%= tempUser.getEmailAddress() %><br>
        <%
    }

} catch( ClassNotFoundException e ){ 
    System.err.println( "Database Driver class not Found!" ); 
    e.printStackTrace(); 
} catch( SQLException e ){ 
    e.printStackTrace(); 
} finally { 
    try { 
        if ( conn != null ) { 
            conn.close(); 
        } 
    } catch ( SQLException e ) { 
        System.err.println( "Problems when closing connection" ); 
        e.printStackTrace(); 
    } 
} 
%>
4

2 回答 2

0

您也必须关闭 ResultSet。您可以使用 PreparedStatement 而不是 Statement 来避免 SQL 注入。

于 2012-08-17T05:30:11.120 回答
0

在 jsp 页面中编写 java 代码并不是一个好习惯。将您的 JDBC 代码放入 java bean。这里是来自oracle(原sun)的jsp页面中JavaBeans组件的解释。

于 2012-08-17T10:11:29.333 回答