案例:登录中输入验证码(会话技术)
1.案例需求:
1.访问带有验证码的登录页面login.jsp
2.用户输入用户名,密码以及验证码
如果用户和密码输入有误,跳转登录页面。提示:用户或密码错误
如果验证码输入有误,跳转登录页面,提示:验证码有误
如果全部输入正确,跳转到success.jsp页面,显示:用户名,欢迎您
2.案例分析:
1.设置request的编码
2.获取请求参数
3.获取session中的验证码
此处会出现验证码反复重用的可能
因为图片资源会被浏览器缓存,所以不会再次向服务器请求生成新验证码
所以当用户再次输入相同的验证码,直接会拿session中的对比
解决方案:获取到session中的程序生成的验证码后,立即删除
4.封装表单中的请求数据到Bean
5.判断程序生成的验证码和用户输入的是否一致
一致:
判断用户名密码是否一致
一致:
存储User数据到session
重定向到sucess.jsp
不一致:
1.给提示信息
2.转发到登录页面
不一致:
1.给用户提示信息
2.转发到登录页面
案例分析图解:
3.涉及的知识点:
checkCode验证码生成案例相关知识
StringBuilder对象及其
append(char c):添加字符数据 -->该方法有多种重载
HttpSession对象及其
getSession():获取对象方法
setAttribute(String s, Object obj):设置共享数据
getAttribute(String s):获取共享的数据
removeAttribute(String s):删除共享的数据
Request对象及其
setCharacterEncoding():设置请求数据的字符集
请求参数通用方法:如 getParameter() getParameterMap()
getContextPath():获取项目的虚拟目录
setAttribute():设置request域的共享数据
getRequestDispatcher():转发
Response对象及其
sendRedirect():重定向方法
注意:session数据共享可以用于一次会话中的多次请求之间,所以可用在重定向中
request数据共享只可以用于一次请求中,所以可以用于转发中
login.jsp(登录时的动态资源):
<%&#