如何在Struts 2中解析请求URL?

时间:2010-03-06 15:13:53

标签: java web-applications struts2

我的网络应用程序中的注册帐户(使用struts2创建)获得了一个单独的网站,如http://localhost/accountname

每个帐户都有自己的登录页面。注册后,用户将获得单独的网站http://localhost/accountname

我想首先扫描请求URL(在struts2中),然后将该请求转发到相应的登录页面。

我该怎么做?请帮忙

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取操作方法中的请求对象:

   HttpServletRequest request = ServletActionContext.getRequest();

然后,您可以找到这样的请求网址:

   String spath = request.getServletPath();

然后你可以解析它并寻找你想要的模式并相应地转发。


更新:

您可以在struts.xml配置文件中使用包。让我们说“userapps”。

     <package name="userapps" extends="default" namespace="/userapps">
           <action name="*" class="path.to.your.ActionClass" method="processUrl">
               <result name="success" type="redirectAction">
                   <param name="actionName">userpage</param>
                   <param name="id">${user.id}</param>
               </result>
           </action>
     </package>

在ActionClass的processURL方法中,您可以提取您感兴趣的URL部分并设置属性,让我们说出用户及其ID。然后,您将从行动中恢复成功。

您将有另一个名为userpage的操作说,它将获取用户的ID并转发到正确的页面。

现在,任何形式为localhost / myapp / userapps /anything.action的url都会调用processURL方法。