Привести Object к Cookie

244
29 марта 2019, 14:20

Столкнулся с такой проблемой. В БД записал объект класса Cookie вот таким вот образом :

public void addUser(String telephone , String name , Cookie cookie) {
    try {
        String query = "INSERT INTO users (idTelephone , Name , cookie) 
 VALUES ('"+telephone+"','"+name+"', ?);";
        System.out.println(query);
        prepare = connect.prepareStatement(query);
        prepare.setObject(1, cookie);
        prepare.executeUpdate();
        prepare.close();
    }catch(SQLException ex) {
        ex.printStackTrace();
    }
}

Читаю таким образом :

public Cookie enter(String telephone , String name) {
    Cookie cookie = null;
    try {
        String query = "SELECT Cookie FROM users WHERE idTelephone 
 ='"+telephone+"' "+" AND Name = '"+name+"';";
        stat = connect.createStatement();
        result = stat.executeQuery(query);
        result.next();
        cookie = (Cookie) result.getObject("Cookie");
        stat.close();
    }catch(SQLException ex) {
        ex.printStackTrace();
    }
    return cookie;
}

Вот где я принимаю куки :

ModelFiles model = new ModelFiles((Connection) 
getServletContext().getAttribute("Connection"));
    Cookie cookie = model.enter(telephone , name);
        if(cookie != null) {
            response.addCookie((Cookie)cookie);
            response.sendRedirect("Load.jsp");
        }
        else {
            response.sendRedirect("FailAuthorization.html");
        }
}

Выбивает такую ошибку :

[B cannot be cast to javax.servlet.http.Cookie at Models.ModelFiles.enter(ModelFiles.java:145)

cookie = (Cookie) result.getObject("Cookie");

Пробовал проверить на "инстансоф" еще до попытки привести к Cookie

if(cookie instanceof Cookie){
   system.out.println("Кастится")
}else{
   system.out.println("Не кастится");

Результат :

Не кастится(то бишь не приводится);

В БД храню cookie в колонке типа Blob вот:

В БД ОБЪЕКТ ЗАПИСЫВАЕТСЯ!Вот только назад никак не могу забрать)

Answer 1
 public Cookie enter(String telephone , String name) {
    Cookie cookie = null;
    try {
        String query = "SELECT Cookie FROM users WHERE idTelephone ='"+telephone+"' "+" AND Name = '"+name+"';";
        stat = connect.createStatement();
        result = stat.executeQuery(query);
        result.next();
        InputStream in = result.getBinaryStream("Cookie");
        ObjectInputStream ois = new ObjectInputStream(in);
        cookie = (Cookie)ois.readObject();
        stat.close();
    }catch(SQLException ex) {
        ex.printStackTrace();
    }catch(IOException ex) {
        ex.printStackTrace();
    }catch(ClassNotFoundException ex) {
        ex.printStackTrace();
    }
    return cookie;
}

Я такой лежу,пытаюсь заснуть и вспомнил про десериализацию объектов!Метод setObject записывает сериализованный объект.И прочитать мне нужно дисериализованный объект!Потом я могу привести Object к Cookie!

READ ALSO
Отслеживание схожесть символов Java

Отслеживание схожесть символов Java

Есть не тривиальная задачка отслеживать схожесть идентификаторов +- в %-ном соотношенииБольше надеюсь узнать нет ли какой то либы от гугла,...

173
Эмуляция событий мыши на телефоне

Эмуляция событий мыши на телефоне

Пишу вэб приложение на javascript которое должно быть кросплатформенным, но столкнулся с проблемой при работе с сайтом на телефоне не работают...

155
как изменить приоритет у события?

как изменить приоритет у события?

При нажатии на ссылку производиться скроллМне необходимо, что бы при скролле нажав на другую ссылку, поменялся приоритет и изменения скролла...

203
Не выводится внешний скрипт js

Не выводится внешний скрипт js

Создала файл 123js написала туда alert(111);

139