URL маски в JSF - PullRequest
       34

URL маски в JSF

2 голосов
/ 29 января 2009

У меня есть корпоративное приложение, написанное на JAVA с использованием JSF (с использованием RichFaces 3.3). В настоящее время мой URL выглядит так:

http://localhost/WebApplication/faces/folder1/page.jsp

Вопрос в том, как мне замаскировать свой URL, чтобы он был таким:

http://localhost/folder1/page.jps

В основном я хочу скрыть "Приложение / лица /"

Спасибо

Ответы [ 5 ]

1 голос
/ 04 ноября 2009

Да. Мы разработали PrettyFaces именно для этой ситуации:

PrettyFaces - SEO, динамические параметры, закладки и навигация для JSF / JSF2

1 голос
/ 29 января 2009

Обратите внимание, что / Faces / связано с отображением в web.xml. это стандартное сопоставление для JSF, однако вы также можете использовать сопоставление расширений - т.е. .faces в конце URL-адреса.

Например, в приложении, которое у меня есть, это в файле web.xml:

<servlet-mapping>
    <servlet-name>Persistent Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>

Это использует IceFaces, однако для вас это будет похоже на RichFaces. Ваш, вероятно, будет выглядеть так: <url-pattern>/faces/*</url-pattern>. Если вы измените его на *.faces, как указано выше, ваш конечный URL будет выглядеть так:

http://localhost/WebApplication/folder1/page.faces

Если вы используете это вместе с ответом Питера Хилтона о развертывании в качестве корневого веб-приложения, ваш конечный URL будет выглядеть примерно так:

http://localhost/folder1/page.faces

Это почти то, что вы хотели.

1 голос
/ 31 января 2009

PrettyFaces позволяет переписать ваш URL. Если вы предпочитаете что-то более легкое, расширьте NavigationHandler и переопределите handleNavigation, например вызывая context.getExternalContext (). redirect ()

1 голос
/ 29 января 2009

Для перезаписи URL в вашем приложении вы можете использовать UrlRewrite . Однако в этом случае похоже, что вы хотите удалить контекстный путь вашего веб-приложения, и в этом случае у вас есть два варианта:

  1. развернуть приложение в контекстном пути / (как это зависит от сервера приложений)
  2. Запустите Apache на порту 80 и используйте mod_proxy для прокси-сервера определенных URL-адресов на сервер приложений, работающий на другом порту, используя конфигурацию, подобную следующей.

Конфигурация Apache:

<Proxy http://localhost:8080/*>
    Order Allow,Deny
    Allow From All
</Proxy>

ProxyPreserveHost On
ProxyPass / http://localhost:8080/WebApplication/
ProxyPassReverse / http://localhost:8080/WebApplication/
0 голосов
/ 21 октября 2012

Вы также можете изменить имя папки с лица на jsp, например, так:

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/jsp/*</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
   <welcome-file>jsp/index.jsp</welcome-file>
</welcome-file-list>

И тогда ваш URL будет выглядеть так:

http://localhost/WebApplication/jsp/folder1/page.jsp

и если вы развернете свое приложение в контекстном пути / сервера приложений, оно будет выглядеть так:

http://localhost/jsp/folder1/page.jsp

теперь будет сложно выяснить, что вы используете JSF для ламеров ;-), но хакер может исследовать это, указав в своем браузере URL-адрес, подобный этому http://localhost/folder1/page.jsp

...