Как использовать предложение where со значением сеанса в сервлете

0

Я передал значение в сервлет с помощью сеанса. Затем присвойте значение переменной "ms". теперь я хочу выбрать данные, используя эту переменную, с предложением where. Но это не работает.

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter(); 

         HttpSession ses=request.getSession(false);
         String ms = ses.getAttribute("ma").toString();

    try {

        dbconn = new DatabaseConnection();
        conn = dbconn.setConnection();
        stmt = conn.createStatement();
        query = "select * from  person where Email ="+ms;
        res = dbconn.getResult(query, conn);
        while(res.next()){

            lst.add(res.getString("Username"));
            lst.add(res.getString("Title"));
            lst.add(res.getString("Fname"));
            lst.add(res.getString("Lname"));

        }
        res.close();
     }catch(Exception e){

        RequestDispatcher rd =request.getRequestDispatcher("myAccount.jsp");
        rd.forward(request, response);

    }finally{

        request.setAttribute("EmpData", lst);
        RequestDispatcher rd =request.getRequestDispatcher("myAccount.jsp");
        rd.forward(request, response);

        lst.clear();
        out.close();

    }
  • 0
    Любая ошибка это показывает?
  • 0
    поставить debug и проверить, если String ms = ses.getAttribute("ma").toString(); имеет какое-то значение или нет? если оно имеет значение, то вы должны использовать подготовленный оператор, оператор PreparedStatement = connection.prepareStatement («выберите * от лица, где Email =?») `и сопоставьте ? значение как это statement.setString(1, ms);
Теги:
jsp
servlets
database-connection
where-clause

1 ответ

0

Это ваш запрос вызывает исключение. Вместо

 query = "select * from  person where Email ="+ms;

Вы должны указать параметр электронной почты.

query = "select * from  person where Email ='"+ms+"'";

Но ваш код уязвим для SQL-инъекции. Для этого лучше использовать PreparedStatement.

Кстати, также лучше распечатать трассировку стека в разделе catch, вы можете определить, что именно происходит неправильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню