如何在Struts2中使用Servlet

时间:2011-03-14 06:34:43

标签: servlets struts2

如何将servletsStruts2一起使用?

4 个答案:

答案 0 :(得分:19)

我假设您想知道在将所有内容映射到Struts2过滤器时如何将Servlet与Struts2结合使用。

您可以在struts.xml中使用以下内容:

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

您可以使用逗号分隔多个模式,例如:

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

更多信息

答案 1 :(得分:3)

有三种方法可以解决此问题:

  1. 在struts.xml中添加常量标记

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

  2. 在web.xml中的servlet配置中添加后缀

    <servlet-mapping>

    <servlet-name>Authcode</servlet-name>

    <url-pattern>/authcode.servlet</url-pattern>

    </servlet-mapping>

    因为在struts 2中,它只会用.action拦截所有请求结束,如果这个请求没有任何后缀,它会自动添加它。当我们使servlet url-pattern有一个后缀时,struts 2将不再拦截它。

  3. 实施用户定义的过滤器

答案 2 :(得分:1)

Servlets技术是比Struts2更低级的架构层。更多的Struts2作为过滤器嵌入到您的项目中(这是servlet技术的一部分)。

所以要添加一个servlet,只需添加到web.xml注册:

<servlet>

    <servlet-name>MyServlet</servlet-name>
    <servlet-class>class.MyServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

答案 3 :(得分:0)

如果您需要多映射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");
            }
        });