2012-07-25 57 views
0

當您將所有內容都映射到Struts2過濾器時,我想知道如何結合Struts2使用servlet。假設我的應用程序中也有一個servlet。我正在嘗試在我的struts.xml中在Struts 2中使用servlet 2

<constant name="struts.action.excludePattern" value="/YourServlet"/> 

現在我想知道上面的線路通信..?哪些呢常量名在這裏做..!請指教

+0

它說,爲/ YourServlet任何請求都將到鏈中的下一個過濾器或Servlet鏈。這非常簡單。它不適合你嗎? – 2012-07-25 17:45:34

回答

2

Source

爲什麼過濾器映射用/ *和如何配置明確排除(因爲2.1.7) 在上面的例子中,我們已經制定將Struts 2調度程序發送到/ *,所以Struts 2對所有傳入的請求都有一個破解。這是因爲Struts 2從其jar文件提供靜態內容,包括Dojo JavaScript文件(如果使用S2.0,或者S2.1 +中的Dojo插件)以及用於生成HTML的Struts 2標籤的FreeMarker模板。

如果我們將過濾器映射更改爲其他內容,例如/*.html,我們必須考慮這些內容並提取通常從Struts 2 jar文件或其他解決方案提供的內容。

從Struts 2.1.7開始,您可以提供逗號分隔的模式列表,當匹配 請求URL時,過濾器只會傳遞。這是通過配置選項struts.action.excludePattern完成,例如在你的struts.xml

<struts> 
<constant name="struts.action.excludePattern" value=".*unfiltered.*,.*\\.nofilter"/> 
... 

+0

能否請你解釋一個關於你的代碼的簡短例子。 – user1538526 2012-07-25 03:02:54

1

如果需要,你可以使用多映射的servlet:

<constant name="struts.action.excludePattern" value="/Servletname1, /Servletname2" /> 

但在struts,你不應該使用servlet url,因爲它不是統一的。 您可以使用Ajax:

$.ajax({ 
     url : "nameAction.action?param="+id, 
       type : "post", 
     data : { 
      'id' : id 

     }, 
     success : function(data) { 
//   $('#result').html(data); 
     }, 
     error : function(jqXHR, textStatus, errorThrown) { 
      $('#result').html("Error"); 
     } 
    });