Pracuję nad aplikacją webową Java, w której muszę uzyskać dostęp do rekordów z bazy danych na podstawie identyfikatora logowania użytkownika. Ustawiam dane logowania w zmiennej sesji po pomyślnym zalogowaniu.Uzyskiwanie dostępu do zmiennych sesji poza serwletem
chcę zrobić coś jak ten
select * from proj_recs gdzie user_id = user_id (od sesji)
Teraz jestem przechodzącej użytkownika jako parametr, ale wierzę, że to nie jest dobry ćwiczyć. Czy istnieje lepszy sposób dostępu do zmiennych sesji poza serwletem?
Servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
User user = (User) request.getSession().getAttribute("userInfo");
System.out.println(user);
if(user != null){
Gson gson = new Gson();
returnJsonResponse(response,gson.toJson(user));
return;
}
}
W opakowaniu warstwa danych
public Accrual getAccruals(String accrualID,String userid) throws AccrualNotFoundException{
String sql = Select * from db_acc where acc_id= accrualID and user_id=userid;
}
problem jest muszę modyfikować wszystkie moje metod z identyfikatora. Czy istnieje sposób, w jaki mogę ustawić dane użytkownika w jakiejś klasie statycznej i uzyskać dostęp do szczegółów tam, gdzie chcę w aplikacji bez modyfikowania sygnatury metody? Uważam jednak, że klasy statyczne są współdzielone między różnymi żądaniami użytkowników.
Gdzie chcesz uzyskać dostęp do zmiennych sesji? U klienta? JSP? – fajarkoe
Czy możesz opracować za pomocą próbki kodu? –
W warstwie danych aplikacji – SRK