目录
一、登录界面的验证:【还有注销账户】
❀ 登录界面的验证【账号、密码都需要验证】------是否与数据库匹配
--------------------------通过账号到数据库中查找匹配的用户,然后返回匹配的用户,然后再比较密码
--------------------------依靠账号的唯一性就可以进行大概率的验证了
//把当前登录用户存储到Session中 req.getSession().setAttribute("USER_IN_SESSION", user); //登录验证成功 resp.sendRedirect("/studnet");
✿ 登录界面的验证作用:只有通过登录,才可以访问到咱的管理界面
【在studnetServlet中加入验证】
二、基于session的购物成
1,购物车:
2,缓存设计【举例:基于session的购物车的设计】
1)基于session的购物车的设计【容器是session】
■ session:会话
■ 购物车:domain(实例)对象
2) ShoppingCartServlet
//调用业务处理请求 //ShoppingCart cart = new ShoppingCart();【不对,这样每次请求都创建了一个购物车对象】//咱是基于session的购物车 ShoppingCart cart = (ShoppingCart) req.getSession().getAttribute("SHOPPINGCART_IN_SESSION"); //这里需要缓存设计【就是第一次session中还没有放进购物车对象,咋就new一个放进去, //然后第二次进行判断,非空,就直接使用session中的购物车】 if(cart == null) { cart = new ShoppingCart(); req.getSession().setAttribute("SHOPPINGCART_IN_SESSION", cart); } |
三、验证码
1、作用:防止破解密码、刷票、论坛灌水、刷页
2、使用场景:
一般是在互联网上的系统【登录/注册、 发帖】,必须使用到验证码,二企业管理系统【MIS】处于局域网中,一般只有内部才访问到,可以不设置验证码。
3,验证码原理:
四、表单的重复提交(注意重复提交---是重复携带相同的数据)
----------------数据不同【就不是重复了啦】
1,根本原因:
没有完整的进行一次请求页面->提交页面的过程而完成数据提交
2、造成重复提交的原因:
1): 由于服务器缓慢或者网络延迟的原因,重复点击提交按钮
2):已经提交成功,刷新成功的页面(forward)
3):已经提交成功,通过回退,再次点击提交按钮
3,解决:(思路跟验证码一样的)
<%--解决表单的重复提交----通过token令牌(其实跟验证码一样的)UUID 【一份在表单中,一份存到session传递到servlet,用于判断两份UUID 是否一致】--%> <% //生成一个随机数【口令】 String token = UUID.randomUUID().toString(); //存放与session中用以判断 session.setAttribute("TOKEN_IN_SESSION", token); %> <form action="/transform"method="post"> <%-- 表单中的UUID --%> <input type="hidden"name="token"value="<%=token%>"/> 转账金额: <input type="text"name="money"required/></br> <input type="submit"value="俺的钱过去啦"/> </form> |