Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Struts 2中解析请求URL?_Java_Web Applications_Struts2 - Fatal编程技术网

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

Java 如何在Struts 2中解析请求URL?,java,web-applications,struts2,Java,Web Applications,Struts2,我的web应用程序(使用struts2创建)中的注册帐户将获得一个单独的站点,如 每个帐户都有自己的登录页面。注册后,用户将获得一个单独的站点 我想先扫描请求URL(在struts2中),然后将该请求转发到相应的登录页面 我该怎么做?请帮助您可以通过以下方式在操作方法中获取请求对象: HttpServletRequest request = ServletActionContext.getRequest(); 然后,您可以找到请求URL,如下所示: String spath = r

我的web应用程序(使用struts2创建)中的注册帐户将获得一个单独的站点,如

每个帐户都有自己的登录页面。注册后,用户将获得一个单独的站点

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


我该怎么做?请帮助

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

   HttpServletRequest request = ServletActionContext.getRequest();
然后,您可以找到请求URL,如下所示:

   String spath = request.getServletPath();
然后,您可以解析它并查找所需的模式,并相应地进行转发


更新:

您可以使用struts.xml配置文件中的包。让我们说“用户应用程序”


用户页
${user.id}
在ActionClass的processURL方法中,您可以提取您感兴趣的URL部分,并设置一个属性,比如用户及其id。然后,您可以从操作中返回成功

您将有第二个名为userpage的操作,也就是说,它将获取用户的id并转发到正确的页面


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

但是在struts2中,如果我说accountname action根本不存在的话。accountname对于不同的用户是不同的。如果我遵循您的编码,我如何避免404错误?我可以将其设置为namespace/并为所有请求使用此功能..?假设我将我的应用程序设置为默认上下文,并将访问我的java web应用程序。然后,用户john向服务注册,得到一个URL,如。他第一次来到他的网站htt://localhost/john,他看到了他的登录页面。在他登录之后,让我们假设他在他的帐户中有一个包含url的任务页面。我也可以将您的功能应用于任务页面请求。在这种情况下,代码将如何更改?@lakshman是的。您可以将此应用于您正在描述的内容。您可以在默认包中为任务和其他任务创建操作元素,然后最后创建映射到*的操作。这将是处理所有请求(如localhost/john)的全面捕获。
     <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>