struts2返回json数据

前几天想要做一个校验用户名是否已被占用的功能,用jq的ajax,jq没有什么问题,代码贴在下面:

 

 

[java] view plaincopy
 
  1. $.ajax({  
  2.                 type : "GET",  
  3.                 //url : "usernameCheck",  
  4.                 url : "jsp/usernameCheck.jsp",  
  5.                 data : "username=" + str,  
  6.                 dataType : "json",  
  7.                 success : function(result) {  
  8.                     if (result.exist == true) {  
  9.                         usernameNotExist = false;  
  10.                         alert("用户名已存在,请重新输入!");  
  11.   
  12.                     } else {  
  13.                         usernameNotExist = true;  
  14.                     }  
  15.                 },  
  16.                 error : function() {  
  17.                     alert("用户名校验失败,请重试!");  
  18.                 }  
  19.             });  

 

 


后台开始选择了较为简单的jsp页面的方式(具体不知道应该怎么表述,与之相对应的是struts2,之所以选择简单的方式也是为了能完成任务)。

 

做个简单的jsp页面还是比较简单的:

 

[java] view plaincopy
 
  1. <%@ page language="java" import="java.util.*"  
  2.     import="com.homework.service.UserService" pageEncoding="ISO-8859-1"%>  
  3.   
  4. <%  
  5.   
  6.     UserService userService = new UserService();  
  7.     String username = (String) request.getParameter("username");  
  8.     if (username != null) {  
  9.         if (!username.isEmpty()) {  
  10.             boolean result = userService.usernameCheck(username);  
  11.             if (result) {  
  12.                 response.setContentType("application/json");  
  13.                 response.getWriter().write("{\"exist\":true}");  
  14.             } else {  
  15.                 response.setContentType("application/json");  
  16.                 response.getWriter().write("{\"exist\":false}");  
  17.             }  
  18.         } else {  
  19.             response.getWriter().write("error");  
  20.         }  
  21.   
  22.     } else {  
  23.         response.getWriter().write("error");  
  24.     }  
  25.       
  26.       
  27. %>  

 

这里不得不感叹一下jsp返回json的方便之处,和之前学习的.net mvc一样(return Json(data);)一样简单高效,下面对比下struts2,有必要说明的是:在能够完成任务的前提下,查阅资料后我总结了一个简单可行的方式:

 

先看下struts.xml的配置:

 

[java] view plaincopy
 
  1.       
  2. <package name="json" extends="json-default" >  
  3.         <action name="usernameCheck" class="com.homework.action.UsernameCheckAction">  
  4.             <result type="json">  
  5.                 <param name="root">dataMap</param>  
  6.             </result>  
  7.         </action>  
  8. </package>  

 

com.homework.action.UsernameCheckAction这个action的代码参考了很多代码,部分用到了net.sf.json.JSONObject这个类,但是需要导入很多jar包,而且后来也出现了其他问题,我就不想再用了。。。还有一种就是有位网友提供的这个方法,遗憾的是底层原理不是都明白:

 

[java] view plaincopy
 
  1. package com.homework.action;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5. import com.homework.service.UserService;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. //import net.sf.json.JSONObject;  
  8. import org.apache.struts2.interceptor.ServletRequestAware;  
  9. import com.opensymphony.xwork2.ActionSupport;  
  10.   
  11. /** 
  12.  * 使用ajax验证用户名 
  13.  *  
  14.  * @return SUCCESS 
  15.  */  
  16. public class UsernameCheckAction extends ActionSupport implements  
  17.         ServletRequestAware {  
  18.     private static final long serialVersionUID = 1L;  
  19.   
  20.     private HttpServletRequest request;  
  21.   
  22.     private Map<String, Object> dataMap;  
  23.   
  24.     public Map<String, Object> getDataMap() {  
  25.         return dataMap;  
  26.     }  
  27.   
  28.     public void setServletRequest(HttpServletRequest arg0) {  
  29.         this.request = arg0;  
  30.     }  
  31.   
  32.     public String execute() {  
  33.   
  34.         UserService userService = new UserService();  
  35.         try {  
  36.             dataMap = new HashMap<String, Object>();  
  37.             String username = request.getParameter("username");  
  38.             if (username != null) {  
  39.                 if (!username.isEmpty()) {  
  40.                     boolean exist = userService.usernameCheck(username);  
  41.                     if (exist) {  
  42.                         dataMap.put("exist"true);  
  43.                     } else {  
  44.                         dataMap.put("exist"false);  
  45.                     }  
  46.                 }  
  47.             } else {  
  48.                 return ERROR;  
  49.             }  
  50.             // JSONObject json = JSONObject.fromObject(map);  
  51.             // result = json.toString();  
  52.         } catch (Exception e) {  
  53.             e.printStackTrace();  
  54.         }  
  55.         return SUCCESS;  
  56.     }  
  57.   
  58. }  

 

 

经测试工作正常。

我在学习struts2时常和.net mvc做比较,总觉得.net比较简单高效,再举个例子,.net mvc的数据校验可以结合entity framework在创建class时,在成员变量前添加[required],既可以实现数据库的not null属性,也可以添加ajax检查用户填写是否为空,简直。。。

不说了,都是泪!都是自己做的选择。

struts2返回json数据,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。