0

我想知道使用servletsinStruts 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(使用well-known sx:submit)。问题是我不知道如何处理POST请求/响应。jQuery submit使用GET方法。

你能告诉我哪种解决方案更好吗?在这两种情况下,我都可以访问HttpServletRespone并感谢PrintWriter它允许将text/html内容写入结果JSP。那么我应该PrintWriter在 Action 类中还是在servlet方法中使用它?

4

1 回答 1

1

没有理由使用Servlethere.user 简单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>

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

另请注意,它sx:submit表示DOJOStruts2 中不再支持的标签,并且早就被弃用了。

将 Servlet 与 Struts2 一起使用并不是一个不好的做法,前提是我们有有效的用例,并且在很多情况下都在使用它,甚至 Struts2 也提供了一种让 Servlet 代替 Actions 处理请求的方法

于 2013-10-07T01:48:29.020 回答