使用带有struts的servlet 2

时间:2012-07-25 02:46:29

标签: struts2

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

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

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

2 个答案:

答案 0 :(得分: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"/>
...

答案 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");
        }
    });