在线考试系统登录功能总结
话不多少先看成品。
https://imgblog.csdnimg.cn/20200326234400243.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjIwMTU3OQ==,size_16,color_FFFFFF,t_70#pic_center)]
历时一周的成果,嘻嘻嘻。
选材
我是一个主要学习java的学生,主要学习的是后端,前端只会一点点的js代码,所以不准备自己写丑陋的前端,好的产亲需要优美的前端,所以准备使用layui自己弄,但是因为时间关系,就在网上找了一个基本写好的前端。
我准备写的是在线考试系统,所以要防止机器人代刷一定要有验证功能,验证码功能对我来说还是可以 实现的。但是用layui的验证码时就发现他的验证码是死图片。需要自己来改。(此处附上一个链接,供参考)
上面的链接,已经测试过了是写好的,但是和我的前端界面并不符合,然后我又找的现在这个登录的前端,他是html界面,但是我需要一些动态的数据,所以改成了jsp(另一方面json传数据对于我来说太麻烦了)。在jsp页面中,js与css的的加载路径也更方便一些,如图:
并且通过js代码实现了验证码的功能,减轻了服务器端的压力(虽然我用不上,但是需求分析里可以写啊,哈哈哈)。在设计时候,用户密码或者账号输入错误时,需要给一些提示,(上图中红色部分)使用了标签,并渲染了颜色。
此时就引申出了一个问题
我的登录界面是访问程序时直接显示的,但是我需要对用户的错误进行提示,就需要在Controller层在此对登录页访问,但是我开启了Spring Mvc的视图解析器。而视图解析器访问的路径是web-inf下的,而web-inf下的是不能由浏览器直接访问的,所以就发生了冲突。
我的解决办法是
因为三种用户都需要给予错误提示,所以我的登录页一定要在web-inf的路径。而index.jsp又是每次都访问的(前提存在并且web.xml没更改)我就想通过一个handler来访问登录页,就像这样:
想法不错,但是我发现我就是一个憨憨,话不多说让你们看看有多憨
Spring Mvc爸爸牛逼,并且告诉我要用转发来操作。因此
代码写完了。
开始测试
加载项目到tomcat里。
启动tomcat。
访问index.jsp。
登录成功,但是!!!!
这啥情况,视图解析器阵亡????
找了半天发现,我在Login.action这个handler上用了,@ResponseBoby这个标签,把我的返回值解析成了字符串。
去掉去掉。
重新测试,完美运行。
总结
1.浏览器不能直接访问web-inf或者webroot下的资源。
2.视图解析器在@ResponseBady和@RestController注解下阵亡。
3. 对进行不需要操作的jsp也面直接用他来转发,不用在控制器中在做转发映射了。
4. 解决问题的办法不止一个,要多尝试。
作者萌新,如有不对之处请给予指正,本帖只用于楼主个人记录开发过程遇到的问题。最后
谢谢观看
楼主不定期更新哦,晚安!