У меня есть веб-сайт MVC с технологиями Java. У меня есть ряд .jsp, которые при перенаправлении через соответствующие сервлеты работают нормально, но при непосредственном доступе они не работают. Я хочу, чтобы мои пользователи не обращались напрямую к .jsps.Предотвращение доступа пользователей к .jsp за исключением переадресации
То есть они могут использовать www.url.com/Website/MyServlet
, который затем направляет их www.url.com/Website/MyServlet.jsp
, но я хочу, чтобы предотвратить их от прямого обращения к www.url.com/Website/MyServlet.jsp
с HttpServletRequest
будут отсутствовать атрибуты и не будут правильно отображаться. Неужели это должна быть обычная практика? Как я могу это сделать, могу ли я написать сопоставление, которое перенаправляет все * .jsp на не найденные, если только это не является прямым?
Бьюсь об заклад, что я могу написать фильтр, который забирает все директивы без FORWARD (ВКЛЮЧАЕТ ЗАПРОС и т. Д.), Сопоставленные с * .jsp и отправляя 404 для них, но Im думает, что должен быть простой способ? У кого-нибудь есть предложения?
звучит, как вы должны работать точно * почему * он не работает, если доступ непосредственно ... –
не согласен с @JonSkeet. Очень распространено использование контроллеров для пересылки JSP с определенными наборами атрибутов, и в этом случае нежелательно разрешать прямой доступ к JSP. – taz
@ Jon Skeet: Я точно знаю это. Это MVC и восходящий сервлет подготавливает выходные данные, которые привязаны к запросу и пересылаются в представление jsp для его вывода. Если вы напрямую просматриваете представление, нет данных, прикрепленных к запросу, и представление не имеет смысла для отображения. Я, конечно, могу поймать это и отобразить сообщение, но маршрутизация на соответствующий сервлет будет работать лучше. – gbtimmon