2
我的web應用程序(使用struts2創建)中的註冊帳戶獲得一個單獨的網站,如http://localhost/accountname如何解析Struts 2中的請求URL?
並且每個帳戶都有其自己的登錄頁面。註冊後,用戶將獲得一個單獨的站點http://localhost/accountname
我想先掃描請求URL(在struts2中),然後將該請求轉發到相應的登錄頁面。
我該怎麼做?請幫助
我的web應用程序(使用struts2創建)中的註冊帳戶獲得一個單獨的網站,如http://localhost/accountname如何解析Struts 2中的請求URL?
並且每個帳戶都有其自己的登錄頁面。註冊後,用戶將獲得一個單獨的站點http://localhost/accountname
我想先掃描請求URL(在struts2中),然後將該請求轉發到相應的登錄頁面。
我該怎麼做?請幫助
您可以通過獲得請求對象的操作方法:
HttpServletRequest request = ServletActionContext.getRequest();
然後你可以找到請求的URL是這樣的:
String spath = request.getServletPath();
然後你可以分析它,並尋找您需要並轉發的模式。
UPDATE:
您可以在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的一部分,並設置屬性可以說用戶和他的身份證。然後,您從行動中返回成功。
您將會有第二個操作,稱爲userpage說,它將採取用戶的id並轉發到正確的頁面。
現在,任何url形式localhost/myapp/userapps /anything.action將調用processURL方法。
但在struts2中,如果我說http:// localhost/myapp/accountname accountname操作根本不存在。 accountname對於不同的用戶是不同的。如何我可以避免404錯誤,如果我按照你的代碼 – Anand
我可以將它設置爲名稱空間/並具有此功能的所有reqquests ..? – Anand
可以說我將我的應用程序設置爲默認上下文,並且http:// localhost將訪問我的Java Web應用程序。那麼用戶john向該服務註冊將獲得一個URL,如http:// localhost/john。他第一次來到他的網站htt:// localhost/john時,他看到了他的登錄頁面。登錄後,可以說他的帳戶中有一個任務頁面,其URL爲http:// localhost/john/tasks。我是否也可以將您的功能應用於任務頁面請求。在這種情況下,代碼如何改變? – Anand