2013-06-27 2 views
1

Так у меня есть код здесь, чтобы отправить свое значение параметра имени пользователя в мою index.jsp страницы приветствия:Маскировка имени пользователя после входа пользователя в JDBC

response.sendRedirect("index.jsp?username=" + username); 

имя отображается в моей странице index.jsp с этим :

<%= "Welcome " + request.getParameter("username")%> 

Однако URL отображает эту информацию, которая является то, что я не хочу:

http://localhost:8088/Trading_Platform_Web/index.jsp?username=ClayBanks1989 

y идеи, как замаскировать это?

Кроме того, было бы более желательно отображать первое имя только из моей базы данных. Но мы можем сосредоточиться на задаче.

ответ

3

Использовать запрос диспетчеризации вместо перенаправления.

RequestDispatcher view = Request.getRequestDispatcher("index.jsp"); 
view.forward(request, response); 

Это направит тот же объект запроса к index.jsp. Если имя пользователя еще не параметр запроса передать его в качестве атрибута

request.setAttribute("username", username); // before doing the forward 

и получить его в index.jsp в

<%= "Welcome " + request.getAttribute("username")%> 

В качестве альтернативы, так как пользователь вошел в (через проверку подлинности через JDBC, как вы заявляете), вы можете сохранить имя пользователя (и другие вещи, относящиеся к нему) в HttpSession.

HttpSession session = request.getSession(); 
session.setAttribute("username", username); 

Теперь вы можете переслать (рекомендуется) или выбрать для перенаправления, как и раньше, но index.jsp сменится на

<%= "Welcome " + session.getAttribute("username")%> 
6

Использование переадресации. Это позволит передать атрибуты запроса в представление, и вы можете использовать их в форме ServletRequest # getAttribute или с помощью языка выражений и JSTL. Короткий пример

Controller (ваш сервлет)

request.setAttribute(username", username); 
RequestDispatcher dispatcher = servletContext().getRequestDispatcher("index.jsp"); 

dispatcher.forward(request, response); 

View (ваш JSP).

<% 
out.println(request.getAttribute("username")); 
%> 

Другой вариант заключается в использовании переменных сеанса:

//if request is not from HttpServletRequest, you should do a typecast before 
HttpSession session = request.getSession(false); 
//save message in session 
session.setAttribute(username", username); 
response.sendRedirect("index.jsp"); 

затем получить его обратно

<% 
out.println(session.getAttribute("message")); 
session.removeAttribute("message"); 
%> 

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

Смежные вопросы