набор результатов JSP - как использовать? - PullRequest
0 голосов
/ 19 марта 2011

Может кто-нибудь сказать мне, почему это не работает?Я хотел бы иметь возможность проверить, если имя пользователя / пароль, возвращаемый из запроса БД, равно значению.

Атрибут сеанса "loginSuccess" всегда возвращает false, даже если значения должны совпадать.

<%@ page language="java" import="java.sql.*" %>
<%
            String driver = "oracle.jdbc.driver.OracleDriver";
            Class.forName(driver).newInstance();

            Connection con = null;
            ResultSet rst = null;
            Statement stmt = null;

            try {
                String url = "jdbc:oracle:thin:username/password@url:port:SID";
                con = DriverManager.getConnection(url);
                stmt = con.createStatement();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            if (request.getParameter("action") != null) {
                rst = stmt.executeQuery("select username, password"
                        + " from table");
                }
%>


                <%

                boolean loginCheck = false;
                           int count = 1;
                            while (rst.next()) {

if(request.getParameter("action")!=null){
    if("username1"==rst.getString("username")){
        if("password1"==rst.getString("password")){
            loginCheck = true;
            }
        }
    }

                            count++;
                            }

                           if(loginCheck==true){
                               session.setAttribute("loginSuccess", "true");
                               }else{
                               session.setAttribute("loginSuccess", "false");
                               }

                            rst.close();
                            stmt.close();
                            con.close();
                %>

<jsp:forward page="login.jsp"/>

Ответы [ 2 ]

1 голос
/ 19 марта 2011

Я думаю, что вы получили основную грамматическую ошибку в этой строке кода.

"username1" == rst.getString ("username")

Itдолжно быть таким:

rst.getString ("username"). equalsIgnoreCase ("username1");

и пароль аналогичен.Пожалуйста, проверьте, может ли это помочь.

1 голос
/ 19 марта 2011

Вы используете == для сравнения строк.Вместо этого попробуйте использовать equals.

Я бы рекомендовал не размещать код скриплетов в JSP таким образом.Вы должны писать JSP с использованием библиотеки тегов JSTL.

Я бы также рекомендовал поместить этот код базы данных в POJO, чтобы вы могли тестировать его в автономном режиме, отдельно от вашего механизма сервлетов / JSP.Затем пусть сервлет создает экземпляр POJO, взаимодействует с базой данных и отправляет результат в JSP.

Это немного больше работы, но дизайн будет расширяться и масштабироваться лучше в долгосрочной перспективе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...