【JavaWeb】案例一:记录用户的上次访问时间

👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️

👀专栏介绍

【JavaWeb】 目前主要更新JavaWeb,一起学习一起进步。

👀本期介绍

本期主要介绍案例一:记录用户的上次访问时间

文章目录

1.1、 流程及技术分析

1.2、 讲解:cookie

1.2.1、cookie 简述

1.2.2、cookie 入门案例

1.2.3、cookie 获取及 cookie 原理

1.2.4、cookie 使用注意

1.2.5、cookie 种类

1.2.6、cookie 的有效路径

1.2.7、cookie 的唯一标识

1.3、 代码实现

1.1、 流程及技术分析

域对象:
request :仅针对某次请求,因为该案例会有两次请求,所以无法使用 request
ServletContext :针对整个项目所有请求,会导致用户 1 记录的时间被其他用户使用。
会话技术:
相当于浏览器和服务器之间打电话的技术。
浏览器和服务器本身都是健忘症患者。
会话数据需要记录:要么小红记录,要么小明记录
浏览器 服务器
会话技术:
保存在浏览器的会话技术 ----Cookie
保存在服务器的会话技术 ----Session 

1.2、 讲解:cookie

1.2.1cookie 简述

保存在浏览器端的会话技术。
Cookie----- 小甜点,小饼干
Cookie 就相当于浏览器和服务器之间传递的一张小纸条。
服务器负责写小纸条,负责查看小纸条
浏览器负责保存小纸条,负责把小纸条展示给服务器看
作用:就是为了保存会话数据

1.2.2cookie 入门案例

入门案例 1
服务器如何书写 cookie ,如何把 cookie 传递给浏览器保存的
Cookie 的基本使用:

Cookie key value

1.2.3cookie 获取及 cookie 原理

入门案例 2 :服务器如何接收并查看浏览器传递来的 cookie
服务器的关闭与否,不会影响浏览器的 cookie 保存
服务器把 cookie 通过响应头传递:

浏览器把保存的 cookie 通过请求头展示给服务器:  

上述方法若获取不到 cookie,就会返回 null 

1.2.4cookie 使用注意

1 cookie 是由 http 协议制定,只要使用 http 协议,就可以使用 cookie 。浏览器、手机端
2 cookie 保存是有上限。
Cookie 的 value 值不能太多, 4K.
一个浏览器保存的 cookie 也是有上限。 300
一个网站只能在一个浏览器上最多保存 30 个。
例如:商品浏览记录、上次访问记录、 7 天内自动登录。。
3 cookie 不能直接保存中文

不允许

获取到值使用时,需要进行 url 解码。 URLDecoder.decode
建议: cookie 中不要保存中文

1.2.5cookie 种类

Cookie 分为两种:
保存在浏览器内存中的 cookie (默认)。 特点是:浏览器关闭, cookie 就会销毁
保存在浏览器对应的硬盘上(持久化 cookie )。 特点:浏览器即使关闭,cookie 也会保存下来
问题: cookie 保存 7 天?
60*60*24*7

 

问题:把这个保存 7 天的 cookie 删除。

1.2.6cookie 的有效路径

Cookie 会保存在硬盘上,保存路径,是由浏览器来自动控制。
访问某路径,带哪些 cookie ,才要根据 cookie 的有效路径来判断

访问的路径等于或者包含 某个 cookie 的有效路径,这个 cookie 就会被发送过来 

总结:一般都要进行 setPath(request.getContextPath()+”/”); // /day37_1/ 

1.2.7cookie 的唯一标识

Cookie 是可以进行分别保存或者相互覆盖的。
Cookie 如何进行相互覆盖,新 cookie 会覆盖旧 cookie
前提: cookie 的唯一标识必须完全相同(身份证)
唯一标识: 域名 + 有效路径 +cookie 名称
例如 1
C1:http://www.baidu.com/ /hehe/ nihao
C2: http://www.itcast.cn/ /hehe/ nihao
会分别保存,因为域名不同
例如 2
C1:http://www.baidu.com/ /hehe/ nihao
C2: http://www.baidu.com/ /haha/ nihao
会分别保存,因为有效路径不同
例如 3
C1:http://www.baidu.com/ /hehe/ k1
C2: http://www.baidu.com/ /hehe/ k2
会分别保存,因为 cookie 名称不同
例如 4
C1:http://www.baidu.com/ /hehe/ k1
C2: http://www.baidu.com/ /hehe/ k1
唯一标识相同,判定是同一个 cookie ,新的 cookie 会覆盖旧的 cookie
域名不用手动设置,因为 tomcat 服务器会设置 .
我们只要关注: 有效路径 cookie 名称 即可

1.3、 代码实现

Visit

Show

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是 Java Web 实现银行转账的代码示例: 首先,需要创建一个 TransferServlet 类来处理转账请求。在该类中,我们需要实现 doPost 方法以处理 POST 请求: ```java import java.io.IOException; import java.math.BigDecimal; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TransferServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fromAccount = request.getParameter("fromAccount"); String toAccount = request.getParameter("toAccount"); BigDecimal amount = new BigDecimal(request.getParameter("amount")); // 调用银行转账服务进行转账 BankService bankService = new BankService(); boolean success = bankService.transfer(fromAccount, toAccount, amount); // 根据转账结果返回不同的响应 if (success) { response.getWriter().write("转账成功!"); } else { response.getWriter().write("转账失败!"); } } } ``` 在 doPost 方法中,我们从请求参数中获取转账相关的信息,然后调用一个 BankService 类的 transfer 方法进行转账。转账成功后,我们返回一个简单的成功或失败的消息。 接下来,我们需要实现 BankService 类来处理转账逻辑。在该类中,我们需要实现 transfer 方法来完成转账操作: ```java import java.math.BigDecimal; public class BankService { public boolean transfer(String fromAccount, String toAccount, BigDecimal amount) { // 检查账户余额是否充足 BigDecimal balance = getBalance(fromAccount); if (balance.compareTo(amount) < 0) { return false; } // 扣除转出账户的余额 BigDecimal newBalance = balance.subtract(amount); updateBalance(fromAccount, newBalance); // 增加转入账户的余额 balance = getBalance(toAccount); newBalance = balance.add(amount); updateBalance(toAccount, newBalance); return true; } private BigDecimal getBalance(String account) { // 查询账户余额 // 省略具体实现 } private void updateBalance(String account, BigDecimal newBalance) { // 更新账户余额 // 省略具体实现 } } ``` 在 transfer 方法中,我们首先检查转出账户的余额是否充足。如果余额不足,则转账失败。否则,我们扣除转出账户的余额,并增加转入账户的余额。最后,我们返回转账成功的消息。 以上就是 Java Web 实现银行转账的代码示例。当然,这只是一个简单的示例,实际场景中还需要考虑更多的因素,比如并发操作、事务处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶然同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值