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>