| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Имя текущей страницы |
| Автор: nns2009 12.5.2010, 13:14 |
| Создаю сайт с возможностью регистрации. При входе/выходе очень не желательно, чтобы пользователя всегда скидывало на главную страницу, поэтому нужно знать имя(название файла в файловой системе) текущей страницы: в принципе можно прописать имя каждой страницы в её начале, но лучше будет определять его динамически. Как? |
| Автор: lazycat 12.5.2010, 13:32 |
| Как известно, JSP преобразуется в сервлет, который потом компилируется в файл класса. В Tomcat имя класса формируется так: берется имя JSP документа и к имени добавляется постфикс "_jsp". Например, если файл был test.jsp, то класс - test_jsp, a файл класса, соответственно test_jsp.class. Думаю что в других серверах действуют подобные соглашения. Ну а имя класса элементарно узнать через reflection. |
| Автор: nns2009 12.5.2010, 19:40 |
А можно код. Просто я изучаю непосредственно JSP, т.к. в остальных отношениях Java мне не очень понравился. |
| Автор: nns2009 13.5.2010, 13:59 |
| Попробовал сделать в файле about_user.jsp такое: <%= this %> Выводит: org.apache.jsp.about_005fuser_jsp@6a48e4 Перед user почему-то оказалось 005f и в общем какой-то ненадёжный, мне кажется, метод. Есть идея объявить статическую переменную, которой будет даваться значение ещё при компиляции и это будет имя jsp файла: <%! private static String filename = имя_файла; %>, но как определить тогда имя фалйа? |
| Автор: AntonSaburov 13.5.2010, 18:32 |
| А если так - this.getClass() .getSimpleName() ? |
| Автор: Vasay 13.5.2010, 19:07 | ||
Вообще-то смысла пытаться узнать текущий jsp нет, так как могут быть еще GET параметры, уж лучше узнавать текущий URL. Более оптимальный вариант - возвращать на referrer (адрес страницы, с которой был осуществлен переход на сервлет логина). п.с. наличие любой логики в JSP, за исключением логики отображения - довольно плохой стиль программирования. |
| Автор: Vasay 13.5.2010, 20:37 | ||||
| nns2009, Не тратьте впустую время. Почитайте вдумчиво http://forum.vingrad.ru/forum/topic-124877.html.
Хранить логин и пароль в Cookies категорически запрещается - это дыра в безопасности вашего сайта.
создаете login servlet, который принимает данные, выполняет необходимые для авторизации действия, после чего редиректит на предыдущую страницу, адрес которой берет из referer (что-то типа request.getHeader("Referer"); ) |
| Автор: nns2009 13.5.2010, 21:53 | ||||
Почитаю.
На серверной части логин и пароль проверяются в любом случае даже если они пришли из Cookies. (Т.е. если несколько раз обновлять страницу, то всё это время невидимо для пользователя происходит обращение к базе данных, проверка и т.п.)
А в чём смысл? Почему нельзя сделать авторизацию непосредственно на конечной странице? |
| Автор: Vasay 13.5.2010, 22:18 | ||||||
nns2009,
Рекомендую отложить изобретение велосипеда с квадратными колесами и начать читать.
пароль, такая вещь, которая вообще нигде не должна храниться, кроме как в голове пользователя (даже в базе должен лежать хэш). А Вы его в общедоступный (для любого пользователя компьютера) куки засунуть хотите, да еще и при каждом запросе гонять туда-сюда.
На каждой странице? |
| Автор: nns2009 17.5.2010, 22:14 | ||
Я не совсем разбираюсь в шифровке информации, но если у злоумышленника есть доступ к моей базе данных, то у них есть доступ и к коду захода, регистрации, где хранится алгоритм кодировки, а если знаешь как зашифровано, то и расшифровать можно, тогда какая разница хранятся пароли в открытом доступе или в зашифрованном? Как же обойтись без куки я вообще не представляю, ведь они для этого и созданы. На каждой странице будет: <%@ include file="common/left_bar.jsp" %> Я обязательно в ближайшее время начну читать, просто у меня в школе последняя неделя учёбы(9 класс), а по некоторым предметам вместо 4-ок, которые я ожидал, возможны 5-ки, придётся исправлять. |
| Автор: nns2009 18.5.2010, 14:01 | ||
| Прочитал первые 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:
) 2) Можно ли перегружать операторы, как в C++ |
| Автор: Vasay 18.5.2010, 20:01 | ||||
Во первых - не факт что получив доступ к базе человек имеет доступ к коду приложения. Во вторых читаем про http://ru.wikipedia.org/wiki/Hash .
Те кто ведут LOG По всем остальным вопросам - читайте тему думайте. Разбирайтесь в коде, который выкладывается в теме. По языку Java тоже что-нибудь обязательно почитайте. |
| Автор: nns2009 22.5.2010, 16:36 | ||||
Смысл понятен: если человек не имеет доступа к коду, то он не узнает пароль, но если у него есть доступ к коду, то для восстановления пароля из базы данных он всего-лишь выполняет обратные действия: Предположим, что наши пароли целочисленные, пользователь вводит при регистрации пароль 12345, который помещается в таблицу в виде хеша: ((12345 * 3) - 1000) * 2 = 72070, злоумышленник же: (72070 / 2 + 1000) / 3 = 12345. С остальными кодами будет то же самое. Можно ли что-нибудь предпринять против этого или система хеширования разрабатывалась для первого случая? Кто это: пользователи или это специальные встроенные функции для упрощения регистрации/входа/выхода?
Чтение будет продолжено. |
| Автор: Vasay 22.5.2010, 22:41 | ||
nns2009,
Боюсь, все же не понятен. Хэш - необратимое преобразование. |
| Автор: nns2009 25.5.2010, 20:28 |
В принципе, текущий сайт я создаю скорее для тренировки, чем для реального использования и в будущем буду несколько раз переписывать с нуля, поэтому для первого раза обойдусь без хэша. А всё-таки с теми, кто ведёт лог не понятно: кто это такой, лог? |