在Struts 2中使用servlet

时间:2013-10-06 20:37:03

标签: jquery jsp servlets struts2

我想知道在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吗?

1 个答案:

答案 0 :(得分:1)

没有理由使用Servlet here.user simple Ajax (Jquery)并让您的操作处理并为您发送回复。

Struts2操作足以处理您的Ajax请求,您可以根据自己的要求自由使用POST/GET方法。

这里有一个示例,说明如何将数据发布到操作类并从那里获得响应

的JavaScript

$.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;
 }
}

struts.xml中

<action name="myAction" class="MyActionClass">
   <result>JSP for success</result>
</action>

在ajax调用之后,JSP内容将被发送回您的Jquery代码,您可以将这些内容粘贴到指定的DIV

另请注意,sx:submit表示Struts2不再支持的DOJO标记,并且已被长时间弃用。

使用带有Struts2的Servelet并不是一个坏习惯,只要我们有有效的用例,并且在很多情况下使用它,即使Struts2提供了一种让Servlet处理请求代替Actions的方法