开源项目:图书管理系统碰到的问题(一)

前几天的没有记录下来,我记得我拿到的是CSDN里面一个名叫别先生博主的图书馆理系统,大四学生。目前上学校的专项综合实习,要求做一个web系统。我自己其实刚从前端,java,sql中走出来。说实话,刚走完那一周就开始碰这些东西其实啥都不会的。选了个最基础底层的jsp+servlet,框架没学也不敢拿框架的资源来二次开发。有点偏题了,进入正题。是这样的,拿到他的那个版本是第一版本,最初的,很多功能都差不多实现了,不过缺点还是很多的。比如数据校验,数据库存储的价格double类型的,而输入价格的文本框没有进行限制校验,可以输入任何东西,产生异常。页面就不说了,哈哈哈估计原博主看了也吐槽的。还是那句话,哥搞后台开发的,不是玩美工设计的,想好看找前端小姐姐去~
首先我解决的第一个问题是数据校验,当时前端和数据校验并不难,前端就比如手机号只能输入数字,用正则限制就完了。数据库怕产生类型不匹配异常,也在前端进行限制就行了。当时主要是后端的校验,唯一性认证有很多种,常见的短信,邮箱,二维码,验证码。邮箱和短信就涉及收费啊网络啊挺麻烦的,弄出来也是时间问题,二维码也有点不符合jsp+servlet这种等级的web,用框架等高等级再打算尝试那些。

思路:后端产生验证码,前端的图像的src获取后端的验证码显示在前端上,然后提交时获取验证码框的值扔到检测账号密码登录功能的函数中,判断对错。

问题:
1.验证码无法产生
2.验证码产生了在前台显示不出来
解决问题1:当初我在网上找的验证码,工具类,其实网上很多都有这东西,但都只是给方法,不完整,直到我找到了一个老哥的带有主函数的,就解决了。参考这位老哥的https://www.cnblogs.com/nanyangke-cjz/p/7049281.html
解决问题2:当初的我在这个问题上尝试了各种方法,把生成的验证码放在自己的D盘,然后再让的src去D盘拿,但这样子D盘好多的验证码都是生成占空间。后来我直接把src指向生成验证码的代码,直接接收生成验证码的图片。然后就解决了。
然后剩下的怎么去判断这大家都懂了。

整个过程大致是这样的,后台验证码工具类生成,还要多一个类将他获取存储在session中;前台直接指向生成验证码,验证码里文本框的值有用户名,密码,验证码通过submit提交到form表单的action的地址。在那个地址进行处理,这里可以创一个java类来进行处理或者直接内嵌jsp里都可以。通过request.getParameter获取前端的值,还有request.getSession()获取session里面存储的后台验证码的值,toString换成字符串。进行比较,相等通过不等给提示信息。大概就是这样子了。

附带几张图
前端验证码

jq换图代码

检测代码
<%
//引入数据交互层
User user=new User();
UserDao dao=new UserDaoImpl();
String name=request.getParameter("name");
String password=request.getParameter("password");
//获取前台的验证码
String code = request.getParameter("Code");
// 获取存在服务器session的验证码
String sessionCode = request.getSession().getAttribute("code").toString();
//清空session中存储的随机验证码
session.removeAttribute("sessionCode");
user.setName(name);
user.setPassword(password);
User us=dao.login(user);
//判断验证码不为空,且session中存储的验证码不为空,都不等于空格的情况下
if(code != null && !"".equals(code) && sessionCode != null && !"".equals(sessionCode))
{
//进一步判断验证码是否和存储在session中的验证码相等
if (sessionCode.equalsIgnoreCase(code))
{
//如果相等再进一步判断用户名和密码
//out.println("验证码正确,正在判断用户名密码是否正确");
session.setAttribute("user",user);
if(us != null)
{
//如果是管理员跳转到管理员页面
if(user.getName().equals("admin"))
{
response.sendRedirect("admin.jsp");
}
//如果是普通会员,跳转到图书列表的页面
else
{
response.sendRedirect("book.jsp");
}
}
else
{
out.println("登录失败,密码或账号不正确,请重新检查输入");
}
}
//验证码不相等
else
{
out.println("error,验证码不正确!");
}
}
//验证码输入空格或者为空
else
{
out.println("error,验证码不能为空");
}
%>

额还有两个类就是用上面那位老哥的java类了。到这里就完成了。看下效果演示

第一篇随笔,萌新一个。文案的写作能力有点提高哈哈哈,好好学习,热爱代码!

posted @ 2020-10-30 15:35  红豆奶昔  阅读(723)  评论(0)    收藏  举报