Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имя текущей страницы, в JSP 
:(
    Опции темы
nns2009
Дата 12.5.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Создаю сайт с возможностью регистрации.
При входе/выходе очень не желательно, чтобы пользователя всегда скидывало на главную страницу, поэтому нужно знать имя(название файла в файловой системе) текущей страницы: в принципе можно прописать имя каждой страницы в её начале, но лучше будет определять его динамически.
Как?
PM MAIL   Вверх
lazycat
Дата 12.5.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 15.7.2007

Репутация: нет
Всего: 1



Как известно, JSP преобразуется в сервлет, который потом компилируется в файл класса.
В Tomcat имя класса формируется так: берется имя JSP документа и к имени добавляется постфикс "_jsp". Например, если файл был test.jsp, то класс - test_jsp, a файл класса, соответственно test_jsp.class. 
Думаю что в других серверах действуют подобные соглашения.
Ну а имя класса элементарно узнать через reflection.

PM MAIL   Вверх
nns2009
Дата 12.5.2010, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Цитата(lazycat @  12.5.2010,  13:32 Найти цитируемый пост)
Ну а имя класса элементарно узнать через reflection.

А можно код. Просто я изучаю непосредственно JSP, т.к. в остальных отношениях Java мне не очень понравился.
PM MAIL   Вверх
nns2009
Дата 13.5.2010, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Попробовал сделать в файле about_user.jsp такое: <%= this %>
Выводит: org.apache.jsp.about_005fuser_jsp@6a48e4
Перед user почему-то оказалось 005f и в общем какой-то ненадёжный, мне кажется, метод.

Есть идея объявить статическую переменную, которой будет даваться значение ещё при компиляции и это будет имя jsp файла:
<%! private static String filename = имя_файла; %>, но как определить тогда имя фалйа?
PM MAIL   Вверх
AntonSaburov
Дата 13.5.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



А если так - this.getClass() .getSimpleName() ?
PM MAIL WWW ICQ   Вверх
Vasay
Дата 13.5.2010, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата

При входе/выходе очень не желательно, чтобы пользователя всегда скидывало на главную страницу, поэтому нужно знать имя(название файла в файловой системе) текущей страницы



Вообще-то смысла пытаться узнать  текущий jsp нет, так как могут быть еще GET параметры, уж лучше узнавать текущий URL. 

Более оптимальный вариант - возвращать на referrer (адрес страницы, с которой был осуществлен переход на сервлет логина).


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


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nns2009
Дата 13.5.2010, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Цитата(AntonSaburov @  13.5.2010,  18:32 Найти цитируемый пост)
А если так - this.getClass() .getSimpleName() ? 

Уже лучше, выдаёт: about_005fuser_jsp, но всё-таки 005f всё портит.
Цитата(Vasay @  13.5.2010,  19:07 Найти цитируемый пост)
Вообще-то смысла пытаться узнать  текущий jsp нет, так как могут быть еще GET параметры, уж лучше узнавать текущий URL. 

Как?
Цитата(Vasay @  13.5.2010,  19:07 Найти цитируемый пост)
Более оптимальный вариант - возвращать на referrer (адрес страницы, с которой был осуществлен переход на сервлет логина).

Я в регистрациях не разбираюсь, но пока у меня план такой: каждая страница состоит из 3 частей:
1) Вверх (подключается <%@ include file="common/top_bar.jsp" %>)
2) Лево (подключается <%@ include file="common/left_bar.jsp" %>)
3) Основная часть (у всех страниц своя)
Поля с запросом логина/пароля - в левой части(которая подключается), в этой же части проверка, не пришёл ли к нам логин/пароль из Cookies или через POST параметры. Если пришёл, то подключаемся к базе, делаем проверку и, если логин/пароль были присланы через параметры, то добавим их в Cookies.
Пока в файле common/left_bar.jsp строчка начала формы авторизации выглядит так: <form action="index.jsp" method="post"> и, если мы заходим с главной страницы, то всё нормально: были на главной, остались на главной, а если мы заходим с любой другой страницы, то получится нежелательный переход.
К сожалению, я пока не очень продвинут в серверном программировании и всё пишу в JSP файле, но в нём всё-таки есть 2 части: в одной мы делаем всю логику и выставляем значения boolean переменным, а в другой в зависимости от этих значений производим отображение.

Если у меня плохая схема, подскажите, как лучше.
PM MAIL   Вверх
Vasay
Дата 13.5.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



nns2009

Не тратьте впустую время. Почитайте вдумчиво сериал.



Цитата

делаем проверку и, если логин/пароль были присланы через параметры, то добавим их в Cookies.


Хранить логин и пароль в Cookies категорически запрещается - это дыра в безопасности вашего сайта.

Цитата

Пока в файле common/left_bar.jsp строчка начала формы авторизации выглядит так: <form action="index.jsp" method="post"> 


создаете login servlet, который принимает данные, выполняет необходимые для авторизации действия, после чего редиректит на предыдущую страницу, адрес которой берет из referer  (что-то типа request.getHeader("Referer");  )


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nns2009
Дата 13.5.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Цитата(Vasay @  13.5.2010,  20:37 Найти цитируемый пост)
Не тратьте впустую время. Почитайте вдумчиво сериал.

Почитаю.

Цитата(Vasay @  13.5.2010,  20:37 Найти цитируемый пост)
Хранить логин и пароль в Cookies категорически запрещается - это дыра в безопасности вашего сайта.

На серверной части логин и пароль проверяются в любом случае даже если они пришли из Cookies. (Т.е. если несколько раз обновлять страницу, то всё это время невидимо для пользователя происходит обращение к базе данных, проверка и т.п.)
Цитата(Vasay @  13.5.2010,  20:37 Найти цитируемый пост)
создаете login servlet, который принимает данные, выполняет необходимые для авторизации действия, после чего редиректит на предыдущую страницу, адрес которой берет из referer  (что-то типа request.getHeader("Referer");  ) 

А в чём смысл? Почему нельзя сделать авторизацию непосредственно на конечной странице?
PM MAIL   Вверх
Vasay
Дата 13.5.2010, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



nns2009

Цитата

Почитаю.


Рекомендую отложить изобретение велосипеда с квадратными колесами и начать читать. 

Цитата

На серверной части логин и пароль проверяются в любом случае даже если они пришли из Cookies. (Т.е. если несколько раз обновлять страницу, то всё это время невидимо для пользователя происходит обращение к базе данных, проверка и т.п.)



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


Цитата

 А в чём смысл? Почему нельзя сделать авторизацию непосредственно на конечной странице? 


На каждой странице?

Это сообщение отредактировал(а) Vasay - 13.5.2010, 22:20


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nns2009
Дата 17.5.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Цитата(Vasay @  13.5.2010,  22:18 Найти цитируемый пост)
пароль, такая вещь, которая вообще нигде не должна храниться, кроме как в голове пользователя (даже в базе должен лежать хэш). А Вы его в общедоступный (для любого пользователя компьютера) куки засунуть хотите, да еще и при каждом запросе гонять туда-сюда.

Я не совсем разбираюсь в шифровке информации, но если у злоумышленника есть доступ к моей базе данных, то у них есть доступ и к коду захода, регистрации, где хранится алгоритм кодировки, а если знаешь как зашифровано, то и расшифровать можно, тогда какая разница хранятся пароли в открытом доступе или в зашифрованном? Как же обойтись без куки я вообще не представляю, ведь они для этого и созданы.

Цитата(Vasay @  13.5.2010,  22:18 Найти цитируемый пост)
На каждой странице?

На каждой странице будет: <%@ include file="common/left_bar.jsp" %>

Я обязательно в ближайшее время начну читать, просто у меня в школе последняя неделя учёбы(9 класс), а по некоторым предметам вместо 4-ок, которые я ожидал, возможны 5-ки, придётся исправлять.
PM MAIL   Вверх
nns2009
Дата 18.5.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Прочитал первые 5 страниц. Ничего не понял: кто такие логгеры и т.д.
Насколько я понял всю логику нужно выносить в отдельный сервлет и только потом передавать в JSP данные для отображения, но так и не понятно:
1) Чем хуже делать в начале каждой страницы <%! include file="common/logic.jsp" %> (единственный минус - некрасивые имена страниц(example.ru/some.jsp, вместо example.ru/some/)), чем компилировать сервлет вручную.
2) Что нужно прописать в файле web.xml, чтобы на любые запросы выполнялся 1 и тот же сервлет, который уже в зависимости от запроса покажет ту или иную страницу(или, что такой страницы нет)
3) Как обойтись без куки?

Ну и парочка вопросов чисто о Java:
1) Есть ли getters, setters(аналог в ActionScript 3.0:
Код

private var ii:int = 0
public function get i():int { return ii }
public function set i(value:int) { if (value > 0) ii = value }

)

2) Можно ли перегружать операторы, как в C++
PM MAIL   Вверх
Vasay
Дата 18.5.2010, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата


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


Во первых - не факт что получив доступ к базе человек имеет доступ к коду приложения. Во вторых читаем про hesh .

Цитата

кто такие логгеры и т.д.


Те кто ведут LOG

По всем остальным вопросам - читайте тему думайте.  Разбирайтесь в коде, который выкладывается в теме. 

По языку Java тоже что-нибудь обязательно почитайте.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nns2009
Дата 22.5.2010, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Цитата(Vasay @  18.5.2010,  20:01 Найти цитируемый пост)
Во первых - не факт что получив доступ к базе человек имеет доступ к коду приложения. Во вторых читаем про hesh .

Смысл понятен: если человек не имеет доступа к коду, то он не узнает пароль, но если у него есть доступ к коду, то для восстановления пароля из базы данных он всего-лишь выполняет обратные действия: Предположим, что наши пароли целочисленные, пользователь вводит при регистрации пароль 12345, который помещается в таблицу в виде хеша: ((12345 * 3) - 1000) * 2 = 72070, злоумышленник же: (72070 / 2 + 1000) / 3 = 12345.
С остальными кодами будет то же самое. Можно ли что-нибудь предпринять против этого или система хеширования разрабатывалась для первого случая?

Цитата(Vasay @  18.5.2010,  20:01 Найти цитируемый пост)
Те кто ведут LOG

Кто это: пользователи или это специальные встроенные функции для упрощения регистрации/входа/выхода?

Цитата(Vasay @  18.5.2010,  20:01 Найти цитируемый пост)
По всем остальным вопросам - читайте тему думайте.  Разбирайтесь в коде, который выкладывается в теме. 

Чтение будет продолжено.
PM MAIL   Вверх
Vasay
Дата 22.5.2010, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



nns2009
Цитата


Смысл понятен



Боюсь, все же не понятен.  Хэш - необратимое преобразование.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1518 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.