现在的位置: 首页 > 综合 > 正文

基于Ajax的输入校验

2018年02月07日 ⁄ 综合 ⁄ 共 8781字 ⁄ 字号 评论关闭

    Ajax的输入校验不是客户端校验,而是服务器端校验,但这种服务器端校验是以异步方式进行的,浏览者无需显示提交请求,系统自动完成校验。
  Struts2Ajax校验建立在DWRDojo两个框架之上,其中DWR负责实现在JavaScript中调用远程方法,而Dojo则负责
页面效果的实现。
  DWRJava领域的Ajax框架,它允许客户端JavaScript代码直接调用服务器端的Java方法,这个过程是通过一个核心Servlet的转换来实现的。为了让DWR的核心Servlet起作用,必须在web.xml文件中配置该核心Servlet
如下:

Java代码

  1. <servlet>    

  2.   <servlet-name>dwr</servlet-name>    

  3.   <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>    

  4.   <init-param>    

  5.    <param-name>debug</param-name>    

  6.    <param-value>true</param-value>    

  7.   </init-param>    

  8. </servlet>    

  9. <servlet-mapping>    

  10.   <servlet-name>dwr</servlet-name>    

  11.   <url-pattern>/dwr/*</url-pattern>    

  12. </servlet-mapping>   

<servlet>

  <servlet-name>dwr</servlet-name>

  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

  <init-param>

   <param-name>debug</param-name>

   <param-value>true</param-value>

  </init-param>

</servlet>

<servlet-mapping>

  <servlet-name>dwr</servlet-name>

  <url-pattern>/dwr/*</url-pattern>

</servlet-mapping>


在上面的配置文件中增加了DWR的核心Servlet后,该Servlet负责将服务器端的Java方法暴露出来。具体哪些方法需要被暴露出来,可以通过在dwr.xml文件中指定。(dwr.xml文件应放在WEB-INF路径下)

Java代码

  1. dwr.xml文件:    

  2. <!DOCTYPE dwr PUBLIC    

  3. "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"    

  4. "http://www.getahead.ltd.uk/dwr/dwr10.dtd">    

  5. <dwr>    

  6. <allow>    

  7.   <create creator="new" javascript="validator" >    

  8.    <param name="class" value="org.apache.struts2.validators.DWRValidator" />    

  9.   </create>    

  10.   <convert converter="bean" match="com.opensymphony.xwork2.ValidationAwareSupport" />    

  11. </allow>    

  12. <signatures>    

  13.   <![CDATA[    

  14.   import java.util.Map;    

  15.   import org.apache.struts2.validators.DWRValidator;    

  16.   DWRValidator.doPost(String,String,Map<String,String>);    

  17.   ]]>    

  18. </signatures>    

  19. </dwr>   

dwr.xml文件:

<!DOCTYPE dwr PUBLIC

"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"

"http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>

<allow>

  <create creator="new" javascript="validator" >

   <param name="class" value="org.apache.struts2.validators.DWRValidator" />

  </create>

  <convert converter="bean" match="com.opensymphony.xwork2.ValidationAwareSupport" />

</allow>

<signatures>

  <![CDATA[

  import java.util.Map;

  import org.apache.struts2.validators.DWRValidator;

  DWRValidator.doPost(String,String,Map<String,String>);

  ]]>

</signatures>

</dwr>


为了使用Ajax表单,必须使用<s:head theme="ajax" />标签来导入Ajax头。

Java代码

  1. regist.jsp文件:    

  2. <%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>    

  3. <%@ taglib prefix="s" uri="/struts-tags" %>    

  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">    

  5. <html>    

  6.   <head>    

  7.     <title>regist</title>    

  8. <s:head theme="ajax" />    

  9.   </head>    

  10.   <body>    

  11.     <H1>请输入您的注册信息</H1>    

  12.     <s:form action="regist" theme="ajax" validate="true" >    

  13.     <s:textfield name="name" label="姓名"  />    

  14.     <s:textfield name="pass" label="密码"  />    

  15.     <s:textfield name="age" label="年龄"  />    

  16.     <s:textfield name="birth" label="生日"  />    

  17.     <s:submit value="注册" targets="show"/>    

  18.     </s:form>    

  19.     <div id="show"></div>    

  20.   </body>    

  21. </html>   

regist.jsp文件:

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>regist</title>

<s:head theme="ajax" />

  </head>

  <body>

    <H1>请输入您的注册信息</H1>

    <s:form action="regist" theme="ajax" validate="true" >

    <s:textfield name="name" label="姓名"  />

    <s:textfield name="pass" label="密码"  />

    <s:textfield name="age" label="年龄"  />

    <s:textfield name="birth" label="生日"  />

    <s:submit value="注册" targets="show"/>

    </s:form>

    <div id="show"></div>

  </body>

</html>

 

Java代码

  1. RegistAction.java文件    

  2. package com.pracbiz.struts2AjaxDemo.action;    

  3. import java.util.Date;    

  4. import com.opensymphony.xwork2.ActionSupport;    

  5. public class RegistAction extends ActionSupport {    

  6. private static final long serialVersionUID = -802101249451189323L;    

  7. private String name;    

  8. private String pass;    

  9. private int age;    

  10. private Date birth;    

  11. public String getName() {    

  12.   return name;    

  13. }    

  14. public void setName(String name) {    

  15.   this.name = name;    

  16. }    

  17. public String getPass() {    

  18.   return pass;    

  19. }    

  20. public void setPass(String pass) {    

  21.   this.pass = pass;    

  22. }    

  23. public int getAge() {    

  24.   return age;    

  25. }    

  26. public void setAge(int age) {    

  27.   this.age = age;    

  28. }    

  29. public Date getBirth() {    

  30.   return birth;    

  31. }    

  32. public void setBirth(Date birth) {    

  33.   this.birth = birth;    

  34. }    

  35. }   

RegistAction.java文件

package com.pracbiz.struts2AjaxDemo.action;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class RegistAction extends ActionSupport {

private static final long serialVersionUID = -802101249451189323L;

private String name;

private String pass;

private int age;

private Date birth;

public String getName() {

  return name;

}

public void setName(String name) {

  this.name = name;

}

public String getPass() {

  return pass;

}

public void setPass(String pass) {

  this.pass = pass;

}

public int getAge() {

  return age;

}

public void setAge(int age) {

  this.age = age;

}

public Date getBirth() {

  return birth;

}

public void setBirth(Date birth) {

  this.birth = birth;

}

}


尽理不要重写action类的validate方法

Java代码

  1. RegistAction-validation.xml文件    

  2. <?xml version="1.0" encoding="UTF-8"?>    

  3. <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">    

  4. <validators>    

  5.     <!-- Field-Validator Syntax -->    

  6.     <field name="name">    

  7.         <field-validator type="requiredstring">    

  8.          <param name="trim">true</param>    

  9.             <message>必须输入名字.</message>    

  10.         </field-validator>    

  11.     </field>    

  12.     <field name="pass">    

  13.         <field-validator type="requiredstring">    

  14.             <param name="trim">true</param>    

  15.             <message>必须输入密码.</message>    

  16.         </field-validator>    

  17.     </field>    

  18.     <field name="age">    

  19.         <field-validator type="int">    

  20.          <param name="min">1</param>    

  21.          <param name="max">120</param>    

  22.             <message>年龄必须在${min}${max}之间.</message>    

  23.         </field-validator>    

  24.     </field>    

  25.     <field name="birth">    

  26.       <field-validator type="required">    

  27.             <message>必须输入生日.</message>    

  28.         </field-validator>    

  29.         <field-validator type="date">    

  30.          <param name="min">1900-01-01</param>    

  31.          <param name="max">2050-02-21</param>    

  32.             <message>生日必须在${min}${max}之间.</message>    

  33.         </field-validator>    

  34.     </field>    

  35. </validators>   

RegistAction-validation.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">

<validators>

    <!-- Field-Validator Syntax -->

    <field name="name">

        <field-validator type="requiredstring">

         <param name="trim">true</param>

            <message>必须输入名字.</message>

        </field-validator>

    </field>

    <field name="pass">

        <field-validator type="requiredstring">

            <param name="trim">true</param>

            <message>必须输入密码.</message>

        </field-validator>

    </field>

    <field name="age">

        <field-validator type="int">

         <param name="min">1</param>

         <param name="max">120</param>

            <message>年龄必须在${min}${max}之间.</message>

        </field-validator>

    </field>

    <field name="birth">

      <field-validator type="required">

            <message>必须输入生日.</message>

        </field-validator>

        <field-validator type="date">

         <param name="min">1900-01-01</param>

         <param name="max">2050-02-21</param>

            <message>生日必须在${min}${max}之间.</message>

        </field-validator>

    </field>

</validators>

 

Java代码

  1. struts.xml文件    

  2. <?xml version="1.0" encoding="UTF-8" ?>    

  3. <!DOCTYPE struts PUBLIC    

  4.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    

  5.     "http://struts.apache.org/dtds/struts-2.0.dtd">    

  6. <struts>    

  7. <constant name="struts.i18n.encoding" value="UTF-8" />    

  8. <package name="com" extends="struts-default">    

  9.   <action name="regist" class="com.pracbiz.struts2AjaxDemo.action.RegistAction">    

  10.    <result>/welcome.jsp</result>    

  11.   </action>    

  12. </package>    

  13. </struts>   

struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.i18n.encoding" value="UTF-8" />

<package name="com" extends="struts-default">

  <action name="regist" class="com.pracbiz.struts2AjaxDemo.action.RegistAction">

   <result>/welcome.jsp</result>

  </action>

</package>

</struts>

 

Java代码

  1. welcome.jsp文件    

  2. <%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>    

  3. <%@ taglib prefix="s" uri="/struts-tags" %>    

  4. <html>    

  5.   <head>    

  6.     <title>My JSP 'welcome.jsp' starting page</title>    

  7.   </head>    

  8.   <body>    

  9.     here is your information:<br>    

  10.     <s:property value="name" /><br>    

  11.     <s:property value="pass" /><br>    

  12.     <s:property value="age"  /><br>    

  13.     <s:property value="birth"   />    

  14.   </body>    

  15. </html>  

抱歉!评论已关闭.