![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| NikitOS9 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
использую tomcat.
суть такова, есть желание сделать чтобы все запрашиваемые страницы ходили через один сервлет и только по мапингам, т.е запретить вызывать jsp явно в запросе для этого сделал следущее: web.xml .......
сам BaseServlet .......
но при вызовах например..localhost/userBoard на BaseServlet никакого внимания, вызываются замечально даже если я в методах doPost, doGet ставлю явный екцепшн
и как запретить например явный вызов ...localhost/uBoard.jsp Это сообщение отредактировал(а) NikitOS9 - 25.1.2008, 21:13 |
||||||
|
|||||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
NikitOS9,
1)используй тег код! Тогда будет удобнее читать твой пост. 2) Добавь это в web.xml:
Это сообщение отредактировал(а) Kangaroo - 25.1.2008, 21:03 -------------------- Lost.... |
|||
|
||||
| NikitOS9 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
ок буду использовать.
1) там где запрет нужно что поставить ? названия <servlet-name>userLogin</servlet-name> ? 2) а как это повлияет на BaseServlet, он никак не сказывается, при обращении просто вызывается та jsp на которая указана <param-value> то есть
вопрос почему ? я же указал что ходить надо через BaseServlet. |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Все ресурсы, в которых нуждается данная веб-апликация, но к которым клиент апликации не должен иметь доступа, должны быть помещены в папку WEB-INF (в корне апликации) — спецификация Java EE гарантирует, что любой контейнер ей удовлетворяющий, не пустит туда клиента. Обычно создают WEB-INF/jsp/. -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| NikitOS9 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
ок, с этим возможно нужно поступить так.
но вопрос почему игнорируется BaseServlet ? то есть для любого сервлета я явно как мне показалось указал что его класс это BaseServlet, но он никак не действует.. в нем я могу написать все что угодно, хоть явные вызовы екцепшнов, все равно все будет замечательно работать.. не понимаю.. |
|||
|
||||
| Ulysses4j |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Falkner, Jones. Servlets and JSP, 2003 Правда, на счет папок внутри, туториал от Sun по JEE 5 рекомендует создавать "свои" папки внутри /WEB-INF/classes/
The Java™ EE 5 Tutorial -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||
|
|||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 9 Всего: 56 |
ты пытаешься реализовать паттерн FrontController.
я как раз тоже с ним мучаюсь. возникает много вопросов: например если реализовывать forward в сервлете, то там же будет и формирование url-a и инициализация входных параметров и контроль залогинин пользователь или нет: в общем очень внушытельных размеров сервлет получается, что мне не сильно нравится ... |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Что значит игнорируется? Приведите пример запроса и ответа сервера на него, который вас не устраивает. Кидать исключения в сервлетах нет никакого смысла — их нельзя нигде поймать, конейнер сам решает, что делать в таких случаях, чаще всего он дает ошибку 500 (Internal server error), но в принципе, может быть все, что угодно, это не специфицировано. И еще: то, что вы делаете, создает впечатление, что вам нужен фильтр (javax.servlet.Filter) — пробуйте про них почитать.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| NikitOS9 |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
ок, все по порядку
1) то есть каталог с jsp рекомендуется размещать в /WEB-INF/classes/jsp ? хотя в доках по jsp везде написано что, jsp, html и тд. фалы должны находиться в каталоге верхнего уровня, т.е ...jsp ...html /WEB-INF/classes/... /WEB-INF/lib/... вот такая структура. да и я чесно сказать слышу впервые что нужно jsp размещать в /WEB-INF/classes/jsp. ну ладно, раз вы привели цитату с сана, видимо гонят o`reilly, я у них читаю доки ) 2) что значит игнорируется. если посмотреть на код выше, то логично получается, что при любом запросе, например localhost/userLogin, запрос переходит к BaseServlet, он уже читает getInitParameter("next") этого userLogin, а в нем находится реальный путь к jsp, это видно из в web.xml. Из этого логично предположить, что если в BaseServlet написать например что в любом случае делать форвард на постоянную jsp, ...
.. то туда мы и должны попасть. но нет! попадаем все равно на ту jsp, которая указана в <param-value>. То есть можно совсем убрать BaseServlet из web.xml и все будет так же работать. а кидать исключения в сервлетах как же нет смыла, ошибка 500, обрабатывается например так в том же web.xml
а на error_page.jsp можно сделать например так <%
или еще вот так <%
%> уфф, надеюсь понятно излагаю ) Это сообщение отредактировал(а) NikitOS9 - 25.1.2008, 23:15 |
||||||||
|
|||||||||
| v2v |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 9 Всего: 56 |
без classes/ - надо: /WEB-INF/jsp - рассказываю как я сделал - это не совсем правильно имхо, но оно пашет именно так как тебе надо : показываю главный кусок моего вебточкаиксэмэля.
пояснения : есть страничка по умолчанию index.jsp , в которой код редиректит сразу на сервлет web.EnterPoint , этот сервлет обрабатывает входящие урлы :
и делает редирект на нужную страничку:
вот. так работает. и странички прячутся. и весь контент идёт через главный сервлет web.EnterPoint ... но уже при обработке только 2х разных видов страниц (форм ) этот самый сервлет очень сильно распух , дальше хуже... мне это как то не нравится...надо что то другое придумать... Это сообщение отредактировал(а) v2v - 26.1.2008, 02:18 |
||||||
|
|||||||
| NikitOS9 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
v2v
То есть как я понял, запрос любого урла переходит к web.EnterPoint. в нем String path=req.getPathInfo(); для определения что было вызвано, и дальше форвард на него ? тут вроде все ясно, но что не верно в моем.. ? я хотел чтобы все jsp, даже не все, а те что мне нужно, ходили через BaseServlet, а например сервлеты и другие jsp через другой.. |
|||
|
||||
| XEugene |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
Только тогда вариант размещения jsp в WEB-INF не пройдёт. Так делают когда хотят исключить возможность прямого доступа к jsp, чтобы попасть на неё можно было только через вышеупомянутый FrontController. Так сделано, например, в Spring. |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Да так сделано в большинстве web-frameworks, насколько я знаю, Spring MVC и Struts — точно (пробовал...). Просто человек хочет с нуля написать веб-приложение — ну, флаг в руки, изобретение велосипедов иногда может быть весьма полезным. На самом деле, усли уж FrontController, то фильтр всё-таки, наверное, не то. Фильтр обычно выполняет какие-то изолированные задачи в рамках приложения (авторизация, кодировки, как примеры), а если реализуется такая глобальная диспетчеризация, то это все же сервлет. С редиректом v2v точно написал, я совсем забыл про эту технику, а ведь сам когда-то с этим же мучался (тут даже на форуме можно следы этих мучений найти, если поискать). Это сообщение отредактировал(а) Ulysses4j - 26.1.2008, 22:17 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| XEugene |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |