我想知道在servlets
中使用Struts 2.3.4
是否是一种好习惯?
我需要在JSP
的特定位置放置一些html,而不需要刷新页面。
我找到了两种方法来实现这一目标:
1.创建servlet
并使用AJAX
处理POST
请求/回复,即:
<div id="mainDiv">
</div>
<script>
$(document).ready(function() {
$('#div2').click(function() {
$.post('testservlet', function(responseText) {
$('#mainDiv').html(responseText);
});
});
});
</script>
2。使用jQuery plugin
调用操作,并将生成的响应放在JSP
中的目标位置(使用众所周知的sx:submit
)。问题是我不知道如何处理POST
请求/响应。 jQuery submit
使用GET
方法。
您能告诉我哪种解决方案更好吗?在这两种情况下,我都可以访问HttpServletRespone
并感谢PrintWriter
允许将text/html
内容写入结果JSP
。那么我应该在Action类或PrintWriter
方法中使用这个servlet
吗?
答案 0 :(得分:1)
没有理由使用Servlet
here.user simple Ajax (Jquery)
并让您的操作处理并为您发送回复。
Struts2
操作足以处理您的Ajax请求,您可以根据自己的要求自由使用POST/GET
方法。
这里有一个示例,说明如何将数据发布到操作类并从那里获得响应
$.ajax({
type : 'POST', // can use GET also
url : action URL,
data : $(formID).serialize(), // only for POST
success : function(response) {
// handle your server response
$("#MyDiv").html(response);
},
error : function(e) {
// handle error
}
});
public class MyAction extends ActionSuport{
// define getter and setter for your data
public String execute() throws Exception{
// define your logic here
return Action.SUCCESS;
}
}
<action name="myAction" class="MyActionClass">
<result>JSP for success</result>
</action>
在ajax调用之后,JSP内容将被发送回您的Jquery代码,您可以将这些内容粘贴到指定的DIV
。
另请注意,sx:submit
表示Struts2不再支持的DOJO
标记,并且已被长时间弃用。
使用带有Struts2的Servelet并不是一个坏习惯,只要我们有有效的用例,并且在很多情况下使用它,即使Struts2提供了一种让Servlet处理请求代替Actions的方法