создание контекста jsf - PullRequest
       17

создание контекста jsf

1 голос
/ 02 августа 2010

Я столкнулся с проблемой веб-проекта на Java. Проект, над которым я работаю, был сделан со стандартным jsp, смешанным со страницами jsf. Главная страница приложения, называемая main.jsp, является стандартной страницей jsp, которой требуется доступ к управляемому бину с областью сеанса, созданной в фильтре сервлета, который используется для проверки аутентификации пользователя. В моем web.xml я настроил, что движок Faces должен отвечать на .jsf и / Faces / * Request

  <filter-mapping>
    <filter-name>extensionsFilter</filter-name>
    <url-pattern>*.jsf</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>extensionsFilter</filter-name>
    <url-pattern>/faces/*</url-pattern>
  </filter-mapping>

Если я открою свое приложение с помощью http//myserver/myapp/faces/main.jsp, все будет нормально. Если я открою свое приложение с помощью http://myserver/myapp/main.jsp, я получу ошибку, потому что контекст лиц еще не создан. Ни установив страницу приветствия, ни установив перенаправление apache, я могу позволить приложению открыть нужную страницу (main.jsp в контексте лица), когда пользователи просто набирают h ** p: // myserver / myapp в своих браузерах: это потому, что страница /faces/main.jsp физически не существует.

Я думаю, что может быть 2 решения: возможность позволить контексту лиц начинаться даже вне шаблона /faces / * или найти способ перенаправить tomcat в /faces/main.jsp, даже если страница этого не делает существуют ... но я провалил все, что я пытался.

1 Ответ

1 голос
/ 02 августа 2010

Просто Не открывайте свое приложение по http://myserver/myapp/main.jsp,, а скорее по http://myserver/myapp/faces/main.jsp или (более предпочтительно) http://myserver/myapp/main.jsf.

Если все ваше беспокойство заключается в том, что конечные пользователи не должны иметь доступ к страницам JSP за пределами url-pattern из FacesServlet (иначе этот вопрос не имеет большого смысла;)), тогда переходите к *.jsf шаблон и добавьте security-constraint с пустым шаблоном auth-constraint на *.jsp к web.xml. Следует позаботиться о том, чтобы конечные пользователи не могли напрямую запрашивать *.jsp URL.

<security-constraint>
    <display-name>Restrict direct access to JSP files</display-name>
    <web-resource-collection>
        <web-resource-name>JSP files</web-resource-name>
        <url-pattern>*.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint> 

Это невозможно сделать напрямую, если вы используете отображение /faces/*. Я бы избавился от этого и в web.xml.

Далее, чтобы охватить конечных пользователей, которые набирают http://myserver/myapp,, просто определите main.jsf как welcome-file в web.xml и избавьтесь от других определенных файлов приветствия. В Tomcat (и, возможно, также в других сервлетконтейнерах) вам, однако, потребуется создать пустой файл с точно таким именем, чтобы обмануть сервер, который существует на диске.

...