密保问题数据库设计思路和代码实现

您所在的位置:网站首页 密码找回问题答案怎么设置 密保问题数据库设计思路和代码实现

密保问题数据库设计思路和代码实现

2024-07-09 23:03| 来源: 网络整理| 查看: 265

用户注册时设置三个密保问题方便用户找回。

数据库设计思路:

用户一张表,用户密保问题答案一张表,密保问题单独一张表。这样做的好处是满足三范式,条理清晰,跟重要的是方便后期更改维护密保问题,比如增加删除某些密保问题。

代码实现页面端的代码:

My JSP 'x1.jsp' starting page 手机或邮箱 用户密码 密保问题1: ${ques1.qusetions} 答案 密保问题2: ${ques1.qusetions} 答案 密保问题3: ${ques1.qusetions} 答案 ========${listquestion} /* $("#teleoremail").focus(function(){ $("#x1").html(""); }); */ $("input[type='text']").click(function(){ $(this).parent().find("span").html(""); }); $("input[type='text']").not("input:eq(0)").blur(function(){ if($(this).val()==""){ $(this).parent().find("span").html("不能为空!"); } }); $("#teleoremail").blur(function(){ //alert("111"); var te =$("#teleoremail").val(); if(te.match(/^[\d]{11,20}$/)){ $.get("findtelephone.action",{"telephone":te},function(k){ if(k==1){ $("#x1").html("该手机已被注册!请重新输入!"); } }); }else if(te.match(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/)){ $.get("findtemail.action",{"email":te},function(k){ if(k==1){ $("#x1").html("该邮箱已被注册!请重新输入!"); } }); }else if(te==""){ $("#x1").html("注册信息不能为空!"); }else{ $("#x1").html("格式不正确!"); } }); $("input[type='button']").click(function(){ //alert($("select[name='one']").val()); $.ajax({ url : "regin.action", type : "post", data : { q1: $("select[name='one']").val(), q2: $("select[name='two']").val(), q3: $("select[name='three']").val(), ans1:$("#answer1").val(), ans2:$("#answer2").val(), ans3:$("#answer3").val(), teleoremail:$("#teleoremail").val(), userpwd:$("#userpwd").val() }, success:function(){window.open("x2.jsp","_parent")} //枚有"_parent"则打开一个新网页,添加后实现跳转功能! }); }); 后台代码mapper接口

select qusetions,id from question select telephone from user where telephone=#{telephone} select email from user where email =#{email} 实现类

package it.com.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; public class UserDao { SqlSessionFactory sf; public List findAllQuestion(){ SqlSession session = sf.openSession(); List list =null; list=session.selectList("selectAllQuestion"); session.commit(); session.close(); return list; } //验证电话号码是否存在 public List findTelephone(String telephone){ SqlSession session = sf.openSession(); List list = session.selectList("selectTelephone",telephone); session.commit(); session.close(); return list; } //验证邮箱是否存在 public List findEmail(String email){ SqlSession session=sf.openSession(); List list = session.selectList("selectEmail",email); session.commit(); session.close(); return list; } public SqlSessionFactory getSf() { return sf; } public void setSf(SqlSessionFactory sf) { this.sf = sf; } } action类

package it.com.action; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.util.Map; import it.com.dao.UserDao; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class UserAction { @Resource UserDao user; @RequestMapping(value="frist.action") public ModelAndView finduser(HttpSession session){ List listquestion = user.findAllQuestion(); //System.out.println(listquestion); session.setAttribute("listquestion", listquestion); return new ModelAndView("x1.jsp"); } //验证电话号码是否存在 @RequestMapping(value="findtelephone.action") public void findTelephone(HttpServletRequest request,HttpServletResponse response) throws IOException{ String telephone = request.getParameter("telephone"); //System.out.println("===="+telephone); List list = user.findTelephone(telephone); //System.out.println("xxxxx"+list); int n=0; if(list.size()!=0){ n=1; } PrintWriter out = response.getWriter(); out.print(n); } //验证邮箱是否存在 @RequestMapping(value="findtemail.action") public void findEmail(HttpServletRequest request,HttpServletResponse response) throws IOException{ String email = request.getParameter("email"); //System.out.println("===="+email); List list = user.findEmail(email); //System.out.println("xxxxx"+list); int n=0; if(list.size()!=0){ n=1; } PrintWriter out = response.getWriter(); out.print(n); } @RequestMapping(value="regin.action") public ModelAndView regin(String teleoremail,String userpwd,HttpServletRequest request,HttpServletResponse response){ System.out.println(teleoremail+" "+userpwd); String q1 =request.getParameter("q1"); String q2 = request.getParameter("q2"); String q3 = request.getParameter("q3"); System.out.println(q1+" "+q2+" "+q3); return new ModelAndView("x2.jsp"); } } 结果展示:

分析:逻辑验证的业务,好像可以用动态sql。我为了前端ajax验证数据类型的准确性,用js正则将类型划分,跳转不同的action。

            标签不换行,用来写提示信息是不错的选择。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3