SSH之注册校验

    无论哪个系统都离不开注册,那么想到注册不得不提到的就是数据的校验,那么接下来就谈谈几种校验的方法。

一、前台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的异步提交,提高用户的体验度,所以在今后的运用中要结合需求来选择。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值