0

当您将所有内容映射到 Struts2 过滤器时,我想知道如何将 servlet 与 Struts2 结合使用。假设我的应用程序中也有一个 servlet。我在我的 struts.xml 中尝试

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

现在我想知道上面的线路传达了什么..?常量名在这里做什么..!请指教

4

2 回答 2

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"/>
...

于 2012-07-25T02:58:45.353 回答
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");
        }
    });
于 2012-10-12T09:25:17.383 回答