2014-02-06 2 views
0

человек!
У меня есть простой веб-сайт с Home.jsp и внутри Home.jsp, есть iFrame. внутри iframe пользователь может выбрать то, что он хочет сделать. Пример входа.
Каждая другая страница загружается только внутри iframe. Home.jsp является держателем iframe вместе с данными заголовка и нижнего колонтитула.JSP после загрузки

После входа в систему, который я реализовал с помощью JSP «session», я перенаправляю на index.html (который открывается внутри iframe).
В home.jsp есть определенное место, где отображается «Приветственный гость» или «Приветственное имя пользователя».
Основная проблема, с которой я столкнулся сейчас, заключается в том, что после входа в систему все работает так, как должно, за исключением того, что «Welcome user_name» не обновляет себя. Если я обновляю страницу, так как сессия сохранена, она показывает ее правильно. Тогда даже связь выхода из системы работает, и она автоматически перезагружается в home.jsp.

в начале страницы home.jsp, внутри моих Div тегов, которые держат topNavBarRight я поместил следующий код:

<%if (session.getAttribute("fname") == null){ 
out.print("Welcome Guest"); 
} 
else{ 
out.print("Welcome"); 
%> 
<a href="profile.jsp">"<%=session.getAttribute("fname") %> </a> 
<a href="logout.jsp">Logout</a> 
<% 
    if(session.getAttribute("login") == "true"){ //something to reload once or whatever 
    session.setAttribute("login", "false"); //so that it doesnt reload again. 
    }%>   

Таким образом, вы можете понять, почему это работает, когда я перезагрузите страницу. Теперь, когда я застрял, как заставить его перезагружать один раз автоматически после того, как index.html загружается внутри iframe? в моем login.jsp я также сохранил атрибут «login» как session.addAttribute («login», «true»); но это не сработает.

У меня есть две вещи: 1. Перезапустите Loop, используя что-нибудь вроде META, Javascript (window.loc) и т. д. (помещается вне тела if-блока) 2. Просто doesn 't reload, только ручная перезагрузка ... (размещается там, где я прокомментировал код «перезагрузить один раз или что угодно»).

OH YEAH, ЕСЛИ ВЫ ОТПРАВЛЯЕТ ОТПРАВИТЬ НА ДОМ.JSP (прямо сейчас его sendRedirect ('index.html')) FROM LOGIN.JSP, ОТКРЫВАЕТСЯ ВНУТРИ IFRAME, есть способ изменить цель sendredirect на браузер сам? это тоже решило бы. потому что страница, которая загружается внутри iframe, как это http://imageshack.com/a/img585/1177/tkyl.png

Так что я говорю, что приветствующий гость должен приветствовать имя пользователя. Я просто не могу понять это. Пожалуйста, помогите! : D спасибо заранее.

+0

Я очень уверен, что что-то упускаю из виду или пропущу, но я не могу с этим поделать, потому что я очень новичок в управлении сеансом и понимаю, как входить в систему и поддерживать сеанс, занял у меня некоторое время .. после этого, если это не работает его довольно разочарование. – k007sam

ответ

0

Ваша самая большая проблема заключается в том, что в Java для String == сравнивается эквивалентность указателя, поэтому он сообщает только, указывают ли две строки на один и тот же адрес в памяти. Для того, чтобы проверить, что они содержат такое же значение, вам нужно использовать .equals():

if("true".equals((String)session.getAttribute("login"))){ 

Также session.getAttribute() возвращает объект, а не строки, так что вам нужно ввести отливка в строку при извлечении строк из него.

Причины я предлагаю обратный синтаксис "true".equals(str), а не str.equals("true") является то, что если переменная str равна нуль, то str.equals("true") будет бросать исключения нулевого указателя в связи с использованием оператора точки на нуль, например, в то время как "true".equals(str) бы не бросить пустой указатель исключение, даже если str равно null.

Что касается iframe, мое предложение было бы, Не используйте iframes. Научитесь стилировать DIVs с помощью полос прокрутки с помощью CSS, а затем заполнить эти DIV либо с помощью jsp: include, либо с помощью Ajax.

И поскольку index.html не может получить доступ к сеансу с момента его отсутствия на стороне сервера, было бы лучше сделать его .jsp, так как вам, вероятно, потребуется проверить свою индексную страницу, если пользователь зарегистрирован или нет.

+0

wow да чувак, я полностью забыл, хотя я столкнулся с этой проблемой много раз! String == указатель ... я забыл ... спасибо много .. см. Мелкие ошибки .. – k007sam

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