JavaWeb网上图书商城完整项目--day02-5.ajax校验功能之服务器端三层实现
Posted luzhouxiaoshuai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb网上图书商城完整项目--day02-5.ajax校验功能之服务器端三层实现相关的知识,希望对你有一定的参考价值。
regist.jsp页面中有异步请求服务器来对表单进行校验:
l 校验登录名是否已注册过;
l 校验Email是否已注册过;
l 校验验证码是否正确。
这说明在UserServlet中需要提供相应的方法来支持前端的请求。
我们需要到数据库查询用户名、邮箱是否注册,到session中检查验证码是否正确。
在进行数据库操作之前,还需要对user表中的字段进行添加处理
因为其他页面中对用户的操作还设计到修改新的密码、确认密码、验证码等几个字段,我们需要在user表中添加下面的几个字段
package com.weiyuan.goods.user.domian; public class User { private String uid; //主键 private String loginname;// 登陆名称 private String loginpass;// 登陆密码 private String email;//注册的邮箱 private String verifyCode; //验证码 private boolean status;//是否激活 private String activationCode;//激活码 //增加下面的几个字段 private String reloginpass; //确认密码 private String newloginpass;//修改密码对应的新密码 public String getUid() { return uid; } public String getReloginpass() { return reloginpass; } public void setReloginpass(String reloginpass) { this.reloginpass = reloginpass; } public String getNewloginpass() { return newloginpass; } public void setNewloginpass(String newloginpass) { this.newloginpass = newloginpass; } public void setUid(String uid) { this.uid = uid; } public String getLoginname() { return loginname; } public void setLoginname(String loginname) { this.loginname = loginname; } public String getLoginpass() { return loginpass; } public void setLoginpass(String loginpass) { this.loginpass = loginpass; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getVerifyCode() { return verifyCode; } public void setVerifyCode(String verifyCode) { this.verifyCode = verifyCode; } public boolean isStatus() { return status; } public void setStatus(boolean status) { this.status = status; } public String getActivationCode() { return activationCode; } public void setActivationCode(String activationCode) { this.activationCode = activationCode; } @Override public String toString() { return "User [uid=" + uid + ", loginname=" + loginname + ", loginpass=" + loginpass + ", email=" + email + ", verifyCode=" + verifyCode + ", status=" + status + ", activationCode=" + activationCode + "]"; } }
我们来看dao层的代码:
package com.weiyuan.goods.user.dao; import java.sql.SQLException; import org.apache.commons.dbutils.handlers.ScalarHandler; import cn.itcast.jdbc.TxQueryRunner; public class UserDao { //操作数据库 private TxQueryRunner qr = new TxQueryRunner(); /*** * 查询用户名是否存在 * @throws SQLException */ public boolean ajaxValidateLoginName(String loginName) throws SQLException{ //获得满足记录的数目是对象,返回一个整数,整数是单行单列使用ScalarHandler String sql ="select count(*) from t_user where loginname=?"; Number num = (Number) qr.query(sql, new ScalarHandler(),loginName); int count = num.intValue(); if(count>0){ return true; } return false; } /*** * 查询邮箱是否存在 * @throws SQLException */ public boolean ajaxValidateEmain(String email) throws SQLException{ //获得满足记录的数目是对象,返回一个整数,整数是单行单列使用ScalarHandler String sql ="select count(*) from t_user where email=?"; Number num = (Number) qr.query(sql, new ScalarHandler(),email); int count = num.intValue(); if(count>0){ return true; } return false; } }
我们来看业务层的代码:
package com.weiyuan.goods.user.service; import java.sql.SQLException; import javax.management.RuntimeErrorException; import com.weiyuan.goods.user.dao.UserDao; public class UserService { private UserDao dao = new UserDao(); public boolean ajaxValidateLoginName(String loginName) { try { return dao.ajaxValidateLoginName(loginName); } catch (SQLException e) { // TODO Auto-generated catch block throw new RuntimeException(e.getMessage()); } } public boolean ajaxValidateEmail(String email) { try { return dao.ajaxValidateLoginName(email); } catch (SQLException e) { // TODO Auto-generated catch block throw new RuntimeException(e.getMessage()); } } }
我们来看servlet的代码:
package com.weiyuan.goods.user.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.weiyuan.goods.user.service.UserService; import cn.itcast.servlet.BaseServlet; /** * Servlet implementation class UserServlet */ @WebServlet("/UserServlet") public class UserServlet extends BaseServlet{ private static final long serialVersionUID = 1L; private UserService service = new UserService(); public String validateLoginname(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //首先获得用户上传的用户名 String loginName = request.getParameter("loginname"); boolean flag = service.ajaxValidateLoginName(loginName); response.getWriter().print(flag); return null; } public String validateEmail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //获得用户上传的emai String email = request.getParameter("email"); boolean flag = service.ajaxValidateEmail(email); response.getWriter().print(flag); return null; } public String validateVerifyCode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //获得用户上传的verfycode String verifyCode = request.getParameter("verifyCode"); //获得session中保存的验证码 String sessionCode = (String) request.getSession().getAttribute("vCode"); //二者进行比较看是否相等 boolean flag = sessionCode.equalsIgnoreCase(verifyCode); response.getWriter().print(flag); return null; } public String regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("regist is called"); return null; } }
以上是关于JavaWeb网上图书商城完整项目--day02-5.ajax校验功能之服务器端三层实现的主要内容,如果未能解决你的问题,请参考以下文章
JavaWeb网上图书商城完整项目--day02-6.ajax校验功能之页面实现
JavaWeb网上图书商城完整项目--day02-14.登录功能的login页面处理
JavaWeb网上图书商城完整项目--day02-10.提交注册表单功能之页面实现
JavaWeb网上图书商城完整项目--day02-12.激活功能各层实现