Jboss 如何在struts2中从url隐藏操作名称

Jboss 如何在struts2中从url隐藏操作名称,jboss,url-rewriting,struts2,Jboss,Url Rewriting,Struts2,正如您从标题中看到的,问题是: RewriteCond %{SERVLET_PATH} ^/(.+) RewriteRule ^/(.+) /home.action [L] ->然后,如果我键入domain.com/blahblah,将执行home.action 但是,如果: RewriteCond %{SERVLET_PATH} ^/ RewriteRule ^/ /home.action [L] ->然后我键入domain.com->home.action将永远不会执行 我使用

正如您从标题中看到的,问题是:

RewriteCond %{SERVLET_PATH} ^/(.+) 
RewriteRule ^/(.+)  /home.action [L] 
->然后,如果我键入domain.com/blahblah,将执行home.action

但是,如果:

RewriteCond %{SERVLET_PATH} ^/
RewriteRule ^/  /home.action [L] 
->然后我键入domain.com->home.action将永远不会执行

我使用index.jsp(并在web.xml中声明)并添加:

没用

然后添加:

<META HTTP-EQUIV="Refresh" CONTENT="1;URL=home.action">

没用

因此,我将很高兴听到您的解决方案,以便执行一项行动,只键入域url,没有任何路径。例如:domain.com


提前感谢。

看起来您正在使用根上下文。因此,您是否可以安全地说,您通常通过进入
http://www.domain.com/home.action

如果是这样,那么您可以将
HomeAction
配置为struts.xml中的默认操作

示例

<action name="home" class="...">
    ...
</action>

<default-action-ref name="home"/>

...

然后,如果您请求的只是
http://www.example.com/
,它应该调用您的家庭操作。

已解决

不要写条件,只写这个->

RewriteRule ^/index$  /home.action [L] 
您的index.jsp应该是:

<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-9" />
    <meta name="verify-v1" content="tonewfwefwewfwefwefrz4tqvroPwefewfy3izuwefwefKs=" />  
    <meta http-equiv="refresh" content="0;url=" /> 
</head>
<body>  
  <%
  response.setStatus(301); 
  response.setHeader( "Location", "/" );
  response.setHeader( "Connection", "close" );  
  %>    
</body>


你的应用程序是否使用上下文路径?在application.xml中有/如果这是你要问的,首先谢谢。然而,在我看来,默认操作使我们能够设置一个默认操作,如果我们不在操作定义中声明类,那么该操作将被执行。不幸的是,它没有解决我的问题。如果它没有解决你的问题,当你访问domain.com时会发生什么?当我访问domain.com时,只会显示index.jsp。无论如何,非常感谢你的关注和帮助,我在多次尝试中找到了一个解决方案,在下面分享。
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-9" />
    <meta name="verify-v1" content="tonewfwefwewfwefwefrz4tqvroPwefewfy3izuwefwefKs=" />  
    <meta http-equiv="refresh" content="0;url=" /> 
</head>
<body>  
  <%
  response.setStatus(301); 
  response.setHeader( "Location", "/" );
  response.setHeader( "Connection", "close" );  
  %>    
</body>