例子包括2个文件,分别是validation.html和ValidationServlet.java
在HTML代码里,有一个输入框,相应的onchange事件会触发验证方法。
首先调用createXMLHttpRequest()方法,然后把输入值发送到ValidationServlet.
callback()方法从服务器得到结果,然后委托给setMessage()方法,这个方法会检查值以确定使用什么颜色来显示消息。
以下是完整的源代码:
- <@H_301_14@!DOCTYPE@H_301_14@ HTML@H_301_14@ PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"@H_301_14@>@H_301_14@
@H_301_14@ - <@H_301_14@html@H_301_14@>@H_301_14@
- <@H_301_14@head@H_301_14@>@H_301_14@
- <@H_301_14@title@H_301_14@>@H_301_14@validation.@H_301_14@html@H_301_14@<@H_301_14@/@H_301_14@title@H_301_14@>@H_301_14@
- <@H_301_14@Meta@H_301_14@ http-equiv=@H_301_14@"content-type"@H_301_14@ content@H_301_14@=@H_301_14@"text/html; charset=UTF-8"@H_301_14@>@H_301_14@
- <@H_301_14@script@H_301_14@ language@H_301_14@=@H_301_14@"javascript"@H_301_14@ type@H_301_14@=@H_301_14@"text/javascript"@H_301_14@>@H_301_14@
- var@H_301_14@ xmlHttp;@H_301_14@
-
- function createXMLHttpRequest(@H_301_14@)@H_301_14@{@H_301_14@
- if(@H_301_14@window.@H_301_14@ActiveXObject)@H_301_14@{@H_301_14@
- xmlHttp =@H_301_14@ new ActiveXObject(@H_301_14@"Microsoft.XMLHTTP"@H_301_14@)@H_301_14@;@H_301_14@
- }@H_301_14@
- else if(@H_301_14@window.@H_301_14@XMLHttpRequest)@H_301_14@{@H_301_14@
- xmlHttp =@H_301_14@ new XMLHttpRequest(@H_301_14@)@H_301_14@;@H_301_14@
- }@H_301_14@
- }@H_301_14@
-
- function validate(@H_301_14@)@H_301_14@{@H_301_14@
-
- createXMLHttpRequest(@H_301_14@)@H_301_14@;@H_301_14@
-
- var@H_301_14@ date =@H_301_14@ document.@H_301_14@getElementById(@H_301_14@"birthDate"@H_301_14@)@H_301_14@;@H_301_14@
- var@H_301_14@ url =@H_301_14@ "servlet/ValidationServlet?birthDate="@H_301_14@ +@H_301_14@ escape(@H_301_14@date.@H_301_14@value@H_301_14@)@H_301_14@;@H_301_14@
- xmlHttp.@H_301_14@open(@H_301_14@"GET"@H_301_14@,@H_301_14@url,@H_301_14@true)@H_301_14@;@H_301_14@
- xmlHttp.@H_301_14@onreadystatechange =@H_301_14@ callback;@H_301_14@
- xmlHttp.@H_301_14@send(@H_301_14@null)@H_301_14@;@H_301_14@
-
-
- }@H_301_14@
-
- function callback(@H_301_14@)@H_301_14@{@H_301_14@
- if(@H_301_14@xmlHttp.@H_301_14@readyState =@H_301_14@=@H_301_14@ 4)@H_301_14@{@H_301_14@
- if(@H_301_14@xmlHttp.@H_301_14@status =@H_301_14@=@H_301_14@ 200)@H_301_14@{@H_301_14@
-
- var@H_301_14@ mes =@H_301_14@ xmlHttp.@H_301_14@respon***ML.@H_301_14@getElementsByTagName(@H_301_14@"message"@H_301_14@)@H_301_14@[@H_301_14@0]@H_301_14@.@H_301_14@firstChild.@H_301_14@data@H_301_14@;@H_301_14@
- /@H_301_14@/@H_301_14@ alert(@H_301_14@xmlHttp.@H_301_14@respon***ML.@H_301_14@getElementsByTagName(@H_301_14@"message"@H_301_14@)@H_301_14@[@H_301_14@0]@H_301_14@.@H_301_14@firstChild.@H_301_14@data@H_301_14@)@H_301_14@;@H_301_14@
- var@H_301_14@ val =@H_301_14@ xmlHttp.@H_301_14@respon***ML.@H_301_14@getElementsByTagName(@H_301_14@"passed"@H_301_14@)@H_301_14@[@H_301_14@0]@H_301_14@.@H_301_14@firstChild.@H_301_14@data@H_301_14@;@H_301_14@
- setMessage(@H_301_14@mes,@H_301_14@val)@H_301_14@;@H_301_14@
-
- }@H_301_14@
- }@H_301_14@
- }@H_301_14@
-
-
- function setMessage(@H_301_14@message,@H_301_14@isValid)@H_301_14@{@H_301_14@
- var@H_301_14@ messageArea =@H_301_14@ document.@H_301_14@getElementById(@H_301_14@"dateMessage"@H_301_14@)@H_301_14@;@H_301_14@
- var@H_301_14@ fontColor =@H_301_14@ "red"@H_301_14@;@H_301_14@
- if(@H_301_14@isValid=@H_301_14@=@H_301_14@ "true"@H_301_14@)@H_301_14@{@H_301_14@
- fontColor =@H_301_14@ "green"@H_301_14@;@H_301_14@
- }@H_301_14@
-
- messageArea.@H_301_14@innerHTML =@H_301_14@ "<p style=\'color:"@H_301_14@ +@H_301_14@ fontColor +@H_301_14@"\'>"@H_301_14@ +@H_301_14@ message +@H_301_14@ "</p>"@H_301_14@;@H_301_14@
- }@H_301_14@
- <@H_301_14@/@H_301_14@script@H_301_14@>@H_301_14@
- <@H_301_14@/@H_301_14@head@H_301_14@>@H_301_14@
-
- <@H_301_14@body@H_301_14@>@H_301_14@
- <@H_301_14@h2@H_301_14@>@H_301_14@Ajax validation Example<@H_301_14@/@H_301_14@h2@H_301_14@>@H_301_14@
- Birth Date(@H_301_14@MM/@H_301_14@dd@H_301_14@/@H_301_14@yyyy)@H_301_14@:@H_301_14@<@H_301_14@input@H_301_14@ type@H_301_14@=@H_301_14@"text"@H_301_14@ size@H_301_14@=@H_301_14@"10"@H_301_14@ id@H_301_14@=@H_301_14@"birthDate"@H_301_14@ value@H_301_14@=@H_301_14@"11/11/2011"@H_301_14@ onchange@H_301_14@=@H_301_14@"validate();"@H_301_14@ /@H_301_14@>@H_301_14@
- <@H_301_14@div@H_301_14@ id@H_301_14@=@H_301_14@"dateMessage"@H_301_14@>@H_301_14@<@H_301_14@/@H_301_14@div@H_301_14@>@H_301_14@
- <@H_301_14@/@H_301_14@body@H_301_14@>@H_301_14@
- <@H_301_14@/@H_301_14@html@H_301_14@>@H_301_14@
- package@H_301_14@ ajax.@H_301_14@study;@H_301_14@
@H_301_14@ -
- import@H_301_14@ java@H_301_14@.@H_301_14@io@H_301_14@.@H_301_14@IOException@H_301_14@;@H_301_14@
- import@H_301_14@ java@H_301_14@.@H_301_14@io@H_301_14@.@H_301_14@PrintWriter@H_301_14@;@H_301_14@
- import@H_301_14@ java@H_301_14@.@H_301_14@text@H_301_14@.@H_301_14@ParseException@H_301_14@;@H_301_14@
- import@H_301_14@ java@H_301_14@.@H_301_14@text@H_301_14@.@H_301_14@SimpleDateFormat@H_301_14@;@H_301_14@
-
- import@H_301_14@ javax@H_301_14@.@H_301_14@servlet.@H_301_14@ServletException;@H_301_14@
- import@H_301_14@ javax@H_301_14@.@H_301_14@servlet.@H_301_14@http.@H_301_14@HttpServlet;@H_301_14@
- import@H_301_14@ javax@H_301_14@.@H_301_14@servlet.@H_301_14@http.@H_301_14@HttpServletRequest;@H_301_14@
- import@H_301_14@ javax@H_301_14@.@H_301_14@servlet.@H_301_14@http.@H_301_14@HttpServletResponse;@H_301_14@
-
- public@H_301_14@ class@H_301_14@ ValidationServlet extends@H_301_14@ HttpServlet {@H_301_14@
-
- private@H_301_14@ static@H_301_14@ final@H_301_14@ long@H_301_14@ serialVersionUID =@H_301_14@ 1L;@H_301_14@
-
-
- public@H_301_14@ void@H_301_14@ doGet(@H_301_14@HttpServletRequest request@H_301_14@,@H_301_14@ HttpServletResponse response)@H_301_14@
- throws@H_301_14@ ServletException,@H_301_14@ IOException@H_301_14@ {@H_301_14@
-
- PrintWriter@H_301_14@ out =@H_301_14@ response.@H_301_14@getWriter@H_301_14@(@H_301_14@)@H_301_14@;@H_301_14@
- response.@H_301_14@setContentType@H_301_14@(@H_301_14@"text/xml"@H_301_14@)@H_301_14@;@H_301_14@
- boolean@H_301_14@ passed =@H_301_14@ validateDate(@H_301_14@request@H_301_14@.@H_301_14@getParameter@H_301_14@(@H_301_14@"birthDate"@H_301_14@)@H_301_14@)@H_301_14@;@H_301_14@
- response.@H_301_14@setHeader(@H_301_14@"Cache-Control"@H_301_14@,@H_301_14@ "no-cache"@H_301_14@)@H_301_14@;@H_301_14@
- String@H_301_14@ message =@H_301_14@ "You have entered an invalid date"@H_301_14@;@H_301_14@
- if@H_301_14@(@H_301_14@passed)@H_301_14@{@H_301_14@
-
- message =@H_301_14@ "You have entered a valid date"@H_301_14@;@H_301_14@
- }@H_301_14@
- out.@H_301_14@println@H_301_14@(@H_301_14@"<response>"@H_301_14@)@H_301_14@;@H_301_14@
- out.@H_301_14@println@H_301_14@(@H_301_14@"<passed>"@H_301_14@ +@H_301_14@ Boolean@H_301_14@.@H_301_14@toString@H_301_14@(@H_301_14@passed)@H_301_14@ +@H_301_14@ "</passed>"@H_301_14@)@H_301_14@;@H_301_14@
- out.@H_301_14@println@H_301_14@(@H_301_14@"<message>"@H_301_14@ +@H_301_14@ message +@H_301_14@"</message>"@H_301_14@)@H_301_14@;@H_301_14@
- out.@H_301_14@println@H_301_14@(@H_301_14@"</response>"@H_301_14@)@H_301_14@;@H_301_14@
-
- out.@H_301_14@close@H_301_14@(@H_301_14@)@H_301_14@;@H_301_14@
- }@H_301_14@
-
-
- private@H_301_14@ boolean@H_301_14@ validateDate(@H_301_14@String@H_301_14@ date@H_301_14@)@H_301_14@ {@H_301_14@
-
- boolean@H_301_14@ isValid@H_301_14@ =@H_301_14@ true;@H_301_14@
- if@H_301_14@(@H_301_14@date@H_301_14@ !@H_301_14@=@H_301_14@ null@H_301_14@)@H_301_14@{@H_301_14@
- SimpleDateFormat@H_301_14@ formatter@H_301_14@ =@H_301_14@ new@H_301_14@ SimpleDateFormat@H_301_14@(@H_301_14@"MM/dd/yyyy"@H_301_14@)@H_301_14@;@H_301_14@
- try@H_301_14@{@H_301_14@
- formatter@H_301_14@.@H_301_14@parse@H_301_14@(@H_301_14@date@H_301_14@)@H_301_14@;@H_301_14@
- }@H_301_14@catch@H_301_14@(@H_301_14@ParseException@H_301_14@ pe)@H_301_14@{@H_301_14@
- System@H_301_14@.@H_301_14@out.@H_301_14@println@H_301_14@(@H_301_14@pe.@H_301_14@toString@H_301_14@(@H_301_14@)@H_301_14@)@H_301_14@;@H_301_14@
- isValid@H_301_14@ =@H_301_14@ false;@H_301_14@
- }@H_301_14@
- }@H_301_14@
- else@H_301_14@{@H_301_14@
- isValid@H_301_14@ =@H_301_14@ false;@H_301_14@
- }@H_301_14@
- return@H_301_14@ isValid@H_301_14@;@H_301_14@
- }@H_301_14@
-
-
- public@H_301_14@ void@H_301_14@ doPost(@H_301_14@HttpServletRequest request@H_301_14@,@H_301_14@ IOException@H_301_14@ {@H_301_14@
-
- doGet(@H_301_14@request@H_301_14@,@H_301_14@response)@H_301_14@;@H_301_14@
- }@H_301_14@
-
-
- }@H_301_14@