无论哪个系统都离不开注册,那么想到注册不得不提到的就是数据的校验,那么接下来就谈谈几种校验的方法。
一、前台js校验
<span style="font-size:18px;">* 事件触发:onsubmit
* 校验:
functioncheckForm(){
// 校验用户名:
// 获得用户名文本框的值:
varusername = document.getElementById("username").value;
if(username== null || username == ''){
alert("用户名不能为空!");
returnfalse;
}
// 校验密码:
// 获得密码框的值:
varpassword = document.getElementById("password").value;
if(password== null || password == ''){
alert("密码不能为空!");
returnfalse;
}
// 校验确认密码:
varrepassword = document.getElementById("repassword").value;
if(repassword!= password){
alert("两次密码输入不一致!");
returnfalse;
}
}</span>二、使用AJAX完成用户名是否存在异步校验
<span style="font-size:18px;">1.事件触发:
*onblur
2.编写AJAX代码:
* 向Action中提交:传递username参数
functioncheckUsername(){
// 获得文件框值:
varusername = document.getElementById("username").value;
//1.创建异步交互对象
varxhr = createXmlHttp();
//2.设置监听
xhr.onreadystatechange= function(){
if(xhr.readyState== 4){
if(xhr.status== 200){
document.getElementById("span1").innerHTML= xhr.responseText;
}
}
}
//3.打开连接
xhr.open("GET","${pageContext.request.contextPath}/user_findByName.action?time="+newDate().getTime()+"&username="+username,true);
//4.发送
xhr.send(null);
}
functioncreateXmlHttp(){
var xmlHttp;
try{ // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{// Internet Explorer
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
returnxmlHttp;
}
3.编写Action
* 接收username:模型驱动接收.
*编写实体类
*User
*User.hbm.xml
以上配置完后:
publicclass UserAction extends ActionSupport implements ModelDriven<User>{
//模型驱动使用的对象
privateUser user =new User();
publicUser getModel(){
returnuser;
}
//注入userservice
privateUserService userService;
publicvoid setUserService(UserService userService) {
this.userService= userService;
}
/**
* AJAX进行异步校验用户名的执行方法
*
* @throws IOException
*/
publicString findByName() throws IOException {
// 调用Service进行查询:
UserexistUser = userService.findByUsername(user.getUsername());
// 获得response对象,项页面输出:
HttpServletResponseresponse = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
// 判断
if(existUser != null) {
// 查询到该用户:用户名已经存在
response.getWriter().println("<fontcolor='red'>用户名已经存在</font>");
}else {
// 没查询到该用户:用户名可以使用
response.getWriter().println("<fontcolor='green'>用户名可以使用</font>");
}
returnNONE;
}
}
* 配置到Spring中.
<!--注册Action -->
<beanid="userAction" class="com.tgb.shop.user.action.UserAction"scope="prototype">
<propertyname="userService"ref='userService'></property>
</bean>
4.编写DAO
* 继承HibernateDaoSupport
/**
* 用户持久层代码
* @author yujie
*
*/
publicclass UserDao extends HibernateDaoSupport {
//按名字查询是否存在该用户
publicUser findByUsername(String username){
Stringhql="from User where username = ?";
List<User>list =this.getHibernateTemplate().find(hql, username);
if(list != null && list.size()>0) {
returnlist.get(0);
}
returnnull;
}
}
* 在配置中注入sessionFactory
<beanid="userDao" class="com.tgb.shop.user.dao.UserDao"scope="prototype">
<propertyname="sessionFactory"ref="sessionFactory"></property>
</bean>
5.编写Service:
* 事务管理及调用代码:
@Transactional
publicclass UserService {
//注入userDao
privateUserDao userDao;
publicUserDao getUserDao() {
returnuserDao;
}
publicvoid setUserDao(UserDao userDao) {
this.userDao= userDao;
}
//按照用户名查找用户的方法
publicUser findByUsername(String username){
returnuserDao.findByUsername(username);
}
}
*配置中注入UserDao
<beanid="userService"class="com.tgb.shop.user.service.UserService"scope="prototype">
<propertyname="userDao" ref="userDao"></property>
</bean>
以上3-5的步骤和普通查询后台数据验证一样,这里就不详细介绍。</span>三、后台数据校验
<span style="font-size:18px;">在这里讲到的后台校验,用的是Struts2自带的validation校验:
1.在Action所在包下创建一个校验的xml.
* 创建一个与Action类名-validation.xml(针对所有方法进行校验,只需要针对regist方法进行校验)
*UserAction-user_regist-validation.xml
<validators>
<!-- 校验用户名 -->
<fieldname="username">
<field-validatortype="requiredstring">
<message>用户名不能为空!</message>
</field-validator>
</field>
<!-- 校验用户名 -->
<fieldname="password">
<field-validatortype="requiredstring">
<message>密码不能为空!</message>
</field-validator>
</field>
<!-- 校验邮箱 -->
<fieldname="email">
<field-validatortype="email">
<message>邮箱格式不正确!</message>
</field-validator>
</field>
</validators>
2.配置INPUT逻辑视图:
<!-- 配置注册的action -->
<actionname="user_*" class="userAction" method="{1}">
<resultname="input">/WEB-INF/jsp/regist.jsp</result>
</action></span>四、总结
以上三种不同的校验,体现了不同的特点,第一种前台校验很方便,但是安全性不高,还需要后台校验来补充和拦截,当然在这个过程中还需要ajax的异步提交,提高用户的体验度,所以在今后的运用中要结合需求来选择。
2080

被折叠的 条评论
为什么被折叠?



