如何将servlets
与Struts2
一起使用?
答案 0 :(得分:19)
我假设您想知道在将所有内容映射到Struts2过滤器时如何将Servlet与Struts2结合使用。
您可以在struts.xml
中使用以下内容:
<constant name="struts.action.excludePattern" value="/YourServlet"/>
您可以使用逗号分隔多个模式,例如:
<constant name="struts.action.excludePattern" value="/YourServlet,/YourOtherServlet"/>
更多信息
答案 1 :(得分:3)
有三种方法可以解决此问题:
在struts.xml中添加常量标记
<constant name="struts.action.excludePattern" value="/YourServlet,/YourOtherServlet"/>
在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将不再拦截它。
实施用户定义的过滤器
答案 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");
}
});