0

Один из моих проектов работает на Struts 1.x и мы пытаемся интегрировать несколько шаблонов URL на struts 2.x. Несколько URL-адресов также заканчиваются Abc.do.Проблема с шаблоном URL с Struts 1.x и Struts 2.x

web.xml В настоящее время выглядит следующим образом:

<servlet> 
     <servlet-name>action</servlet-name> 
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
     <init-param> 
      <param-name>config</param-name> 
      <param-value>/WEB-INF/struts-config.xml</param-value> 
     </init-param> 
</servlet> 

<servlet-mapping> 
     <servlet-name>action</servlet-name> 
     <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

И над рисунком работает нормально, как это определено в web.xml.

Теперь мы добавили в web.xml для поддержки Struts 2.x параллельно.

<filter> 
     <filter-name>struts2</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 

<filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>*.action</url-pattern> 
</filter-mapping> 

После добавлены выше информации в web.xml том шаблоне URL заканчивается .action они также прекрасно работать с использованием Struts 2.x.

Но если мы хотим добавить несколько конкретных шаблонов URL, которые также заканчиваются .do, сопоставленными с Struts 2.x, как показано ниже.

<filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/Hello.do</url-pattern> 
</filter-mapping> 

Мы хотим, чтобы все запрос, который начинается с Hello*.do должны отображаться на распорки 2.x, но сейчас этого не происходит.

Так что здесь что-то не хватает в web.xml или вообще невозможно.

Есть ли какой-либо путь, мы можем решить эту проблему?

+0

Прежде всего, ваше 'отображение Hello' не отражает то, что вы на самом деле пытаетесь сделать; Я не вижу никакого шаблона. Во-вторых, * порядок * отображений значителен, вам нужно иметь их от большинства до наименее значимых. В-третьих, отображение S2 на что-либо, кроме *, чревато проблемами, если вы не совсем уверены, что делаете. –

+0

Struts1 + Struts2 вместе были опробованы ранее. [Это не получилось так хорошо] (http://en.wikipedia.org/wiki/The_Island_of_Doctor_Moreau) ... –

+0

Я хочу, чтобы весь шаблон URL начинался с Hello, должен проходить через struts 2.x. но эти шаблоны заканчиваются на .do, например. Hello.do –

ответ

0

Сначала вы должны определить фильтр Struts2 и на нем отобразить все URL-адреса, включая шаблон /Hello*.do, а также шаблон *.action. Затем следует фильтр Struts 1, который отображает *.do. struts.xml должен быть сконфигурирован для исключения шаблонов, заканчивающихся .do, за исключением /Hello*.do.

struts.xml:

<constant name="struts.action.excludePattern" value="(?!/Hello.*).*\.do"/> 
<constant name="struts.action.extension" value="action,do,,"/> 

web.xml:

<!-- Struts2 configurations --> 
<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<!-- Struts configurations --> 
<servlet> 
    <servlet-name>action</servlet-name> 
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
    <init-param> 
     <param-name>config</param-name> 
     <param-value>/WEB-INF/struts-config.xml</param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>action</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 
+0

URL шаблон не принимается - –

+0

URL шаблон/Hello *.не принимаю в выше web.xml –

+0

Да, я изменил шаблон. –

0

Теперь его работы ---

В Web.xml--

<filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
<filter> 
     <filter-name>struts2</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
     </filter> 

В Struts.xml ---

<constant name="struts.action.excludePattern" value="(?!/(Hello|AbcOn|Person|School).*).*\.do"/> 
      <constant name="struts.action.extension" value="action,do,,"/> 
Смежные вопросы