我想知道在将所有内容映射到Struts2过滤器时如何将Servlet与Struts2结合使用。假设我的应用程序中也有一个servlet。我正在尝试使用我的struts.xml
<constant name="struts.action.excludePattern" value="/YourServlet"/>
现在我想知道上面这行是什么传达的?常名在这里做什么..!请指教
答案 0 :(得分:2)
为何使用/ *映射过滤器以及如何配置显式排除(自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"/>
...
答案 1 :(得分: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");
}
});