Как использовать UrlRewriteFilter для удаления ".jsp" из URL со строкой запроса - PullRequest
3 голосов
/ 26 июля 2011

По какой-то причине мне нужно удалить «.jsp» из URL-адреса со строкой запроса в проекте Spring MVC, используя UrlRewriteFilter .

Например, я хочу изменить

http://localhost:8080/admin/project.jsp?m_product=GA&m_code1=QULQ2U

до

http://localhost:8080/admin/project?m_product=GA&m_code1=QULQ2U

Я пробовал разные правила, но безуспешно.

Например, когда я устанавливаю правило как

<rule>
    <from>/admin/project.jsp?(.+)</from>
    <to type="redirect">/admin/project?$1</to>
</rule>

UrlRewriteFilter изменится

admin/project.jsp?m_product=GA&m_code1=QULQ2U

до

admin/project?p

Когда я использую следующее правило, чтобы экранировать знак вопроса перед строкой запроса

<rule>
    <from>/admin/project.jsp\?(.+)</from>
    <to type="redirect">/admin/project?$1</to>
</rule>

UrlRewriteFilter не будет перезаписывать URL.

Ваша помощь приветствуется.

Ответы [ 4 ]

3 голосов
/ 29 мая 2013

Если вы хотите удалить расширение (.jsp) из проекта, используя фильтр перезаписи URL-адреса Tuckey, это может помочь вам.

From
    http://locatohost:8080/urlrewrite/feedback.jsp 
To
    http://locatohost:8080/urlrewrite/feedback
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
  <rule>
    <from>^/?([a-z]+)$</from>
    <to>/$1.jsp</to>
  </rule>
</urlrewrite>

И если вы хотите наоборот (означает, что вы хотите удалить .jsp из гиперссылок страницы), используйте правило ниже

  <outbound-rule>
    <from>^/?([a-z]+)(.(jsp|jspx))$</from>
    <to>$1</to>
  </outbound-rule>

чтобы при использовании

<LI><A href="complaints.htm">Complaints</A></LI>

тогда это будет записано на странице как

<LI><A href="complaints">Complaints</A></LI>
2 голосов
/ 27 июля 2011

Спасибо за помощь.

Проблема решена!

Для достижения цели я изменил правило на

<rule>
    <from>/admin/project.jsp(.*)</from>
    <to type="forward">/project</to>
</rule>

Хитрость в том, чтобы заменить перенаправление на вперед.

2 голосов
/ 29 марта 2012

С OCPsoft Rewrite |URLRewriteFilter , это было бы так же просто, как указать одно правило:

.addRule(Join.path("/admin/project")
             .to("/admin/project.jsp")
             .withInboundCorrection());

Это обрабатывает как входящую переадресацию, исходящую замену HTML, так и перенаправляет со старого URL .jsp на новый / admin/ project URL, если кто-то запрашивает старый URL-адрес или имеет старую закладку.

Строка запроса автоматически обрабатывается для вас, поэтому не нужно беспокоиться о регулярных выражениях.

0 голосов
/ 26 июля 2011

Попробуйте

<rule>
  <from>/admin/project\.jsp\?(.+)</from>
  <to type="redirect">/admin/project?$1</to>
</rule>

Как правило, вы должны использовать контроллер для такой задачи и позволить дрянной JSP делать то, что он должен делать: VIEW

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...