• javaWeb第七天:登录、基于session的购物车、验证码、表单重复提交


    目录

    一、登录界面的验证:【还有注销账户】

    二、基于session的购物成

    1,购物车:

    2,缓存设计【举例:基于session的购物车的设计】

    三、验证码

    1、作用:防止破解密码、刷票、论坛灌水、刷页

    2、使用场景:

    3,验证码原理:

    四、表单的重复提交(注意重复提交---是重复携带相同的数据)

    1,根本原因:

    2、造成重复提交的原因:

    3,解决:(思路跟验证码一样的)


    一、登录界面的验证:【还有注销账户】

    登录界面的验证【账号、密码都需要验证】------是否与数据库匹配

    --------------------------通过账号到数据库中查找匹配的用户,然后返回匹配的用户,然后再比较密码

    --------------------------依靠账号的唯一性就可以进行大概率的验证了

    //把当前登录用户存储到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>

  • 相关阅读:
    2.22
    LG P7077 函数调用
    2020/10/30 模拟赛 序列
    2020/10/27 模拟赛 数列
    2020/10/23 模拟赛 chip
    2020/10/23 模拟赛 escape
    2020/10/23 模拟赛 center
    LOJ#6581. 「ICPC World Finals 2019」断头路探测者
    LG P1587 [NOI2016]循环之美
    LG P4156 [WC2016]论战捆竹竿
  • 原文地址:https://www.cnblogs.com/shan333/p/15899811.html
Copyright © 2020-2023  润新知