利用json和prototype来做用户是否正确的判断,传统的方式是提交后做判断,这里使用的是ajax异步传输的方式。

利用json和prototype来做用户是否正确的判断,传统的方式是提交后做判断,这里使用的是ajax异步传输的方式。
所需文件
  1.UserLogin_JSON.jsp           (主要页面,在IE中基本中出现这个页面,其它的处理都在后台不可见)
  2.check_login_user.jsp         (这个做为判断用户名是否正确的文件,可以写成jsp,servlet,在struts2中就可以为一个action)
  3.AjaxMessageJson.java         (将java对象转成json数据格式,需要用到org.json,json-lib.jar)
  4.js/prototype.js              (这是js/prototype的库,网上随处可下)
  5.json.js                      (用来解析得到的responseText,否则客户端得到的是html格式的文件)
1.UserLogin_JSON.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
  <head>
    <title>用户登录测试json返回数据格式</title>
    <script type="text/javascript" src="js/prototype.js"></script>
    <script type="text/javascript" src="js/comm.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
  var flagSubmit = false ;
  function checkUserName() {
  //var contextPath = "<%=request.getContextPath()%>";
  var url = "check_login_user.jsp";
  var pars = "username=" + $('username').value;
  var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars,onLoading  : loading,onFailure:reportError,onComplete: done});
}
function loading()
{
 // alert('正在调用');
}
function done(res) {
  resText = res.responseText;
  alert(resText);
  var jsonMsgObj = new JsonMsgObj(resText);
  var message = jsonMsgObj.getMessage();
  alert(message);
}
function reportError(request)
{
  alert('Sorry. There was an error.');
}
</script> 
  </head>
 
  <body>
<form action="sub.jsp" method="post" name="form1">
 用户名:<input type="text" name="username""/><br>
 <input type="button" name="button" value="" onclick="checkUserName()">
</form>
  </body>
</html>

2.check_login_user.jsp  //注释:注意不要出现任何html的标签,这里只做一个简单的判断,可以方便的扩充为数据库判断

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import=" com.shangyu.json.AjaxMessageJson"%>
<%
String username=request.getParameter("username");
//System.out.println("执行后台:"+username);
AjaxMessageJson ajaxMessagesJson=new AjaxMessageJson();
if(username.equals("fly"))
      ajaxMessagesJson.setMessage("E_USERNAME_001", "用户名正确!");
else
    ajaxMessagesJson.setMessage("E_USERNAME_001", "用户名不太正确!");
out.println(ajaxMessagesJson.getJsonString());
%>


3.AjaxMessageJson.java

package com.shangyu.json;
import org.json.*;

public class AjaxMessageJson {

 private JSONObject json = new JSONObject();

 public void setMessage(String codeid, String message) {
  try {
   this.json.put("codeid", codeid);
   this.json.put("message", message);
   this.json.put("text", "");
  } catch (JSONException e) {

  }
 }

 public void setMessage(String codeid, String message, String text) {
  try {
   this.json.put("codeid", codeid);
   this.json.put("message", message);
   this.json.put("text", text);
  } catch (JSONException e) {

  }
 }

 public String getJsonString() {
  return this.json.toString();
 }
}


当然如果仅仅只需要做一个用户名是否存在或正确的判断,完全可以不需要用到json来做数据格式的传输,直接利用html文本方式来就可以了。

但是如果要传输更为复杂一些的数据,则可以利用XML和json,但由于xml在客户端解析的复杂性,现在要实现ajax功能,普遍倾向于使用json

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章