javaWeb(六)请求转发和重定向、Cookie及其应用(显示最近访问的时间)

本文介绍了JavaWeb中请求转发和重定向的区别与使用场景,请求转发保持请求状态且仅执行一次,适用于同项目内跳转;重定向地址改变,执行两次请求,可用于跨项目跳转。同时,文章详细讲解了Cookie的概念和作用,它是用于跟踪用户状态的关键技术。以显示最近访问时间为例,展示了Cookie的应用,通过设置Cookie记录用户访问时间,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、请求转发和重定向:

登陆html --> Servlet —>登陆成功html —>另一个Servlet

这里的Servlet向html转的过程有两种方式:请求转发和重定向

在这里插入图片描述

  • 以前的写法:
response.setStatus(302);
response.setHeader("Location", "login_success.html");
  • 请求转发:
request.getRequestDispatcher("login_success.html").forward(request, response);
  1. 地址上显示的是请求servlet的地址。 返回200 ok
  2. 请求次数只有一次, 因为是服务器内部帮客户端执行了后续的工作。
  3. 只能跳转自己项目的资源路径 。
  4. 效率上稍微高一点,因为只执行一次请求。
  5. 可以使用上一次的request对象。
  • 重定向:
 response.sendRedirect("login_success.html");
  1. 地址上显示的是最后的那个资源的路径地址
  2. . 请求次数最少有两次, 服务器在第一次请求后,会返回302 以及一个地址, 浏览器在根据这个地址,执行第二次访问。
  3. 可以跳转到任意路径。 不是自己的工程也可以跳。
  4. 效率稍微低一点, 执行两次请求。
  5. 后续的请求,没法使用上一次的request存储的数据,或者 没法使用上一次的request对象,因为这是两次不同的请求。

2、Cookie及其应用:

在 Internet 中,Cookie 实际上是指小量信息,是由 Web 服务器创建的,将信息存储在用户计算机上的文件。一般网络用户习惯用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 Session 跟踪而存储在用户本地终端上的数据,而这些数据通常会经过加密处理。 ----百度百科

为什么要有cookie(面试)?

http的请求是无状态。 客户端与服务器在通讯的时候,是无状态的,其实就是客户端在第二次来访的时候,服务器根本就不知道这个客户端以前有没有来访问过。 为了更好的用户体验,更好的交互 [自动登录],其实从公司层面讲,就是为了更好的收集用户习惯[大数据]

  • Cookie应用一:显示最近访问的时间:

实现效果如图:
在这里插入图片描述

思路如下:

在这里插入图片描述

代码如下:

登陆页面:index.html

  <body>
  		
   
Java Web中,CookieSession都是常见的用于保持用户会话状态的技术。下面是简化的登录页面示例,演示了如何使用它们: **使用Cookie的例子**(假设用户名密码存放在`username``password`变量中): ```java // 创建Cookie对象 HttpCookie cookie = new HttpCookie("username", username); cookie.setMaxAge(60 * 60 * 24); // 设置有效期一天 response.addCookie(cookie); ``` 这里我们创建了一个名为"username"的Cookie,存储了用户的用户名,并设置了一天的有效期。 **使用Session的例子**: ```java // 登录验证成功后 request.getSession().setAttribute("username", username); // 用户访问需要登录权限的页面 String usernameFromSession = (String) request.getSession().getAttribute("username"); if (usernameFromSession != null) { // 已经登录,继续处理请求 } else { // 未登录,跳转到登录页面或显示错误信息 } ``` 在服务器端,每当用户访问,我们都会检查Session中是否存在用户名属性。 **关于登录页面的代码整合**(简化版): ```java protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String inputUsername = request.getParameter("username"); String inputPassword = request.getParameter("password"); if (validateLogin(inputUsername, inputPassword)) { // 登录验证通过 // 使用Cookie或Session方法保存会话信息 // ...(上面的Cookie或Session代码) request.getRequestDispatcher("/success.jsp").forward(request, response); } else { // 验证失败,可以重定向到登录页并显示错误消息 response.sendRedirect("/login.html?error=invalid"); } } ``` 在这个例子中,用户提交表单数据后,首先验证登录,如果成功则进行会话管理,然后跳转到成功页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值