基于Ajax的输入校验
2008-11-02 12:53
393 查看
Ajax的输入校验不是客户端校验,而是服务器端校验,但这种服务器端校验是以异步方式进行的,浏览者无需显示提交请求,系统自动完成校验。
Struts2的Ajax校验建立在DWR和Dojo两个框架之上,其中DWR负责实现在JavaScript中调用远程方法,而Dojo则负责
页面效果的实现。
DWR是Java领域的Ajax框架,它允许客户端JavaScript代码直接调用服务器端的Java方法,这个过程是通过一个核心Servlet的转换来实现的。为了让DWR的核心Servlet起作用,必须在web.xml文件中配置该核心Servlet。
如下:
Java代码
<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>
<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代码
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>
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代码
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>
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代码
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;
}
}
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代码
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>
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代码
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>
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代码
welcome.jsp文件
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>My JSP 'welcome.jsp' starting page</title>
</head>
<body>
here is your information:<br>
<s:property value="name" /><br>
<s:property value="pass" /><br>
<s:property value="age" /><br>
<s:property value="birth" />
</body>
</html>
Struts2的Ajax校验建立在DWR和Dojo两个框架之上,其中DWR负责实现在JavaScript中调用远程方法,而Dojo则负责
页面效果的实现。
DWR是Java领域的Ajax框架,它允许客户端JavaScript代码直接调用服务器端的Java方法,这个过程是通过一个核心Servlet的转换来实现的。为了让DWR的核心Servlet起作用,必须在web.xml文件中配置该核心Servlet。
如下:
Java代码
<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>
<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代码
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>
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代码
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>
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代码
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;
}
}
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代码
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>
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代码
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>
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代码
welcome.jsp文件
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>My JSP 'welcome.jsp' starting page</title>
</head>
<body>
here is your information:<br>
<s:property value="name" /><br>
<s:property value="pass" /><br>
<s:property value="age" /><br>
<s:property value="birth" />
</body>
</html>
相关文章推荐
- 基于struts2和DWR的Ajax输入校验
- 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
- Struts2的Ajax输入校验
- 复习struts2之基于XML配置文件实现指定方法的输入校验以及基于XML校验的一些特点
- 基于注解的输入校验
- 基于XML配置方式实现输入校验
- Ajax---后台校验用户输入的数据
- 害怕别人乱输数据吗?提高你的数据校验功能-AJAX输入校验(8)
- 数据校验功能-AJAX输入校验(9)
- 使用AJAX完成用户名是否存在异步校验(基于SSH框架)
- 基于Ajax的编码、拼音缩写、名称模糊查询输入控件
- 使用Struts2的输入校验(四)--基于Annotation的输入校验
- 基于XML配置方式实现输入校验
- 基于AJAX技术实现Struts校验框架
- Struts2基于XML配置文件实现输入校验
- 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验
- 基于Annotation的输入校验 推荐
- 基于XML配置方式实现对action的所有方法进行输入校验
- Struts2(七)基于XML方式进行数据输入校验
- 基于xml配置方式实现对action中指定方法进行输入校验