Struts2中json的响应技术

来源:互联网 发布:linux移动文件权限不够 编辑:程序博客网 时间:2024/06/01 08:15

使用struts2进行web开发时,我们需要对表单中用户的输入进行验证,这时客户端需要发送ajax请求,而服务器端需对客户端的请求进行响应,这时我们常常会用到json。以邮箱验证为例,需进行如下4步:

1、在jsp页面的表单中定义<input name="user.email" type="text" id="txtEmail"/>用于接收用户输入的邮箱。

2、引入jquery,写一段js代码,当此文本框失去焦点时用于发送ajax请求

$(function(){

        $('#txtEmail').blur(function(){

             var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*$/;

             var email = $('#txtEmail').val();        

             if(email == ""){

                  $('#email\\.info').html("邮箱不能为空");

                  return;

             }

             if(reg.test(email)){            

                  $.post(

                     '应用名/命名空间/email.action',//与struts.xml配置文件中的action名保持一致

                     {"email":email},

                     function(data){

                          if(data){

                              $('#email\\.info').html("邮箱可以使用");

                              flag.email = true;//用于约束表单是否能够提交

                          }else{

                              $('#email\\.info').html("邮箱被占用");

                          }                   

                     }

                  );             

             }else{

                  $('#email\\.info').html("邮箱不正确");

             }         

         });

 });

3、服务器端写一个action用于响应客户端发送的请求,

public class EmailAction {

   private String email;

   private boolean ok;  

   public String getEmail() {

      return email;

   }

   public void setEmail(String email) {

      this.email = email;

   } 

   public boolean isOk() {

      return ok;

   } 

   public void setOk(boolean ok) {

      this.ok = ok;

   }

   public String execute() throws Exception{

      UserDAO dao = new JdbcUserDAO();

      User user = dao.findByEmail(email);

      if(user != null){

        ok = false;//邮箱被占用       

      }else{

        ok = true;//邮箱可以使用

      }       

      return "success";

   } 

}

其中email属性用于接收客户端用户输入的邮箱,ok用于判断客户端输入的邮箱是否已经存在,当ok = false时表示邮箱已被使用,不能通过验证,反之则表明邮箱可以使用。同时,在action中一定要提供属性的get/set方法。

4、写struts.xml配置文件,将写好的action配置到服务器中,这一步是最重要最关键的一步

<action name="email" class=" action.user.EmailAction">

     <result name="success" type="json">

         <param name="root">ok</param>

     </result>

 </action>

其中<result>中一定要将type规定为json,同时加入<param>组件,规定传递的为ok属性,如果没有加入<param>在部署该应用时会报警告no default parameter defined for result of type json(没有为json响应类型定义默认的参数),此时客户端接收到的就不仅仅是ok属性而是所有action中的属性,在客户端alert返回的数据会显示object,但是加入<param name=”root”>ok</param>返回的数据中就只有ok,alert时显示的内容就是true或者false,这里需要注意的是<param name=”root”>ok</param>中name=”root”是固定的写法。