2016-04-21 108 views
2

我目前正在嘗試製作一個CMS項目,在那裏我將製作一個所謂的「blogsite」,就像wordpress一樣。我面臨的問題是我想通過url直接訪問博客網站。Struts2 - 從錯誤頁面獲取url

喜歡的東西 本地/ CMS/SITE_NAME

通常這將是一個404錯誤,因爲沒有任何將要出現映射,所以我通過

<error-page> 
    <error-code>404</error-code> 
    <location>/checkBlogUrl.action</location> 
</error-page> 

逮住它在web.xml所以我可以在那裏處理URL請求,查詢網站,如果它存在,則轉發頁面到那裏,如果不是error.jsp。

我目前正試圖使它工作的代碼是

HttpServletRequest request = ServletActionContext.getRequest(); 

    String a = request.getServerName() +" : " + request.getRequestURI() 
      + " : "+ request.getServletPath() +" : "+ request.getLocalName(); 
    System.out.println(a); 

其黯然返回此

mycms:/CMS/checkBlogUrl.action:/checkBlogUrl.action:mycms

我如何獲得site_name? 或者,有沒有更好的方法來「轉發」數據庫查詢的網址?

+0

你想做什麼?重定向到一個URL? – Babel

+0

我想在sitename上做一個查詢基礎,並將該sitename傳遞給一個struts2動作,該動作將爲我的網站名稱加載我的磁貼。例如。 thisismysite.wordpress.com,如果我訪問,wordpress會將我發送到我創建的博客網站。我只想在locahost的URL格式中做這樣的事情:8080/CMS/sitename –

+1

welp im stupid。我剛剛發現了關於struts2的通配符。會玩一會兒 –

回答

2

我沒有在web.xml中使用錯誤頁面,而是將其更改爲命名參數。

把$ {requestScope ['的javax.servlet:

<action name="/*" class="checkBlogUrl"> 
    <param name="blogSiteUrl">{1}</param> 
    <result type="redirectAction"> 
     <param name="actionName">checkBlogUrl</param> 
     <param name="blogSiteUrl">{1}</param> 
    </result> 
</action> 

正如安德烈Ligios注意,所以這個問題是不可行的

編輯的web.xml錯誤頁面將下降原始請求URI。 error.request_uri']}在JSP頁面會給你的URI,那麼也許你可以將它傳遞給一些或另一個行動