2022年jsp课时十三——Cookie和Session的应用

简介: 2022年jsp课时十三——Cookie和Session的应用

内容Cookie和Session的应用


Servlet常用对象

ServletConfig:静态数据

ServletContext:共享静态数据。共享动态数据。共享文件数据。

HttpServletRequest

HttpServletResponse

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

response.sendRedirect("ServlectDengLu");


>>回话管理

会话>>同一个浏览器与服务器之间在一段时间多次请求称一次会话,

浏览器关闭,会话结束。

Cookie>> :的概念

Cookie的本意

Cookie是客户端技术,程序把每个用

户数据以Cookie的形式写给用户各自浏览器

Cookie

Session, 类名HttpSession

Cookie的概念

Cookie的本意是“小甜饼”,我们俗称“曲奇饼”

Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。

当用户使用浏览器再去访问服务器的时候,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据。

1.一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(name)和值(value)。

2.一个web网站可以给一个web浏览器发送多个cookie,一个浏览器也可以存储多个cookie。

3.浏览器一般只允许存放300个cookie,每个网站最多存放20个cookie,每个cookie的大小限制为4kb。

4.如果创建了一个cookie,并将他发送到了浏览器,默认情况下他是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。

Session的概念

HttpSession对象

服务器为每个会话创建一个HttpSession对象

每个会话对象都有一个唯一的ID

用户的数据保存在相应的HttpSession对象内。

session应用

package com.Servlect;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * Servlet implementation class Servlet2
 * session
 */
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
  private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Servlet2() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("session servlect2在运行中");
    }
  /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
  PrintWriter pw=response.getWriter();
  //档浏览器访问服务器的servlet的时候,需要检查该浏览器的session对象是否是刚刚创建的
  HttpSession session=request.getSession();
  //session.isNew()判断session到值是否为空
  if (session.isNew()) {
    //session是刚刚创建的
    //浏览器是第一次访问服务器
    pw.print("浏览器是第一次访问服务器");
    //设置三个动态数据
    session.setAttribute("text1", "一等奖学金");
    session.setAttribute("name", "hug");
    session.setAttribute("pw", "12345");
    //删除指定的数据
    //session.removeAttribute("text1");
    //当session中存放大量数据的时候,如果需要全部销毁,直接干掉session对象
    //session.invalidate();
  }else {
    String info=(String) session.getAttribute("text1");
    String info1=(String) session.getAttribute("name");
    String info2=(String) session.getAttribute("pw");
    System.out.println("浏览器不是第一次访问服务器的文件内容");
    System.out.println("浏览器不是第一次访问服务器的名字");
    System.out.println("浏览器不是第一次访问服务器了的密码");
    System.out.println("=====================================================");
    pw.print("<h1>浏览器不是第一次访问服务器的文件内容<hr></h1>"+info);
    pw.print("<h1>浏览器不是第一次访问服务器的名字<hr></h1>"+info1);
    pw.print("<h1>浏览器不是第一次访问服务器了的密码<hr</h1>"+info2);
  }
  }
  /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
  }
}


Cookie

package com.Servlect;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class Demo01Servlet
 */
@WebServlet("/Demo01Servlet")
public class Demo01Servlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Demo01Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }
  /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  response.getWriter().append("Served at: ").append(request.getContextPath());
  }
  /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  //获取文本框中的内容
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //首先判断账号密码是否正确
        if("hug".equals(username) && "123".equals(password)){
            //登录成功之后判断用户是否点击了记住我
            String remember = request.getParameter("remember");
            if (remember != null) { //因为单选框默认是null,选上了之后value是on
                //如果用户点击了,就存到Cookie中
                Cookie cookie = new Cookie("username",username);
                //设置访问路径
                cookie.setPath(request.getContextPath()+"/index.html");
                //设置生存时间
                cookie.setMaxAge(60);
                //把cookie内容传到浏览器响应头
                response.addCookie(cookie);
                Cookie cookie1 = new Cookie("password",password);
                //设置访问路径
                cookie1.setPath(request.getContextPath()+"/login.html");
                //设置生存时间
                cookie1.setMaxAge(60 * 60 * 24);
                //把cookie内容传到浏览器响应头
                response.addCookie(cookie1);
            }
            //登录成功,跳转到成功页面
            response.sendRedirect("ServlectA");
        }else{
            //登录失败,跳转到失败页面
          System.out.println("登录失败,跳转到失败页面");
            response.sendRedirect("ServlectB");
        }
    }
}
package com.Servlect;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class ServlectA
 */
@WebServlet("/ServlectA")
public class ServlectA extends HttpServlet {
  private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServlectA() {
        super();
        // TODO Auto-generated constructor stub
    }
  /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
  PrintWriter pw=response.getWriter();
  pw.print("<h1>客户:恭喜你成功登录</h1>");

 

}
  /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
  }
}
package com.Servlect;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class ServlectB
 */
@WebServlet("/ServlectB")
public class ServlectB extends HttpServlet {
  private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServlectB() {
        super();
        // TODO Auto-generated constructor stub
    }
  /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
  PrintWriter pw=response.getWriter();
  pw.print("<h1 >客户:你成功登录失败哦</h1>");
  response.setHeader("refresh", "10;url=Demo01Servlet");
  }
  /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
  }
}
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
    <title>用户登录</title>
    <!--导入js文件-->
    <script src="js/commons.js"></script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>用户登录</h2>
<form action="Demo01Servlet" method="post" id="loginForm">
    <table>
        <tr>
            <td width="60">用户名</td>
            <td><input type="text" name="username" id="username"/></td>
        </tr>
        <tr>
            <td>密码</td>
            <td><input type="password" name="password" id="password"/></td>
        </tr>
        <tr>
            <td>记住我</td>
            <!--没有value属性的前提下,点中它的值是on-->
            <td><input type="checkbox" name="remember"/></td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="登录"/></td>
        </tr>
    </table>
</form>
</body>
</html>

运行界面






Servlect常用对象

ServletConfig:静态数据

ServletContext:共享静态数据。共享动态数据。共享文件数据。

HttpServletRequest:

HttpServletResponse:

Cookie

Session

HttpServlet

Request  and response

response的基本知识

HttpServlet

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象

request和response对象即代表了请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就可以了,要想客户机输出数据,只需要找response即可。

response只是一个对象名称,HttpServletResponse类

Student  xiaoming=new Student();   类名: Student       对象名:xiaoming

重定向:重新制定访问的方向

作用:用于从一个Servlet去开启另一个Servlet

重定向:

重定向属于浏览器跳转,不是服务器自己跳转    超链接是一样的

重定向跳转页面浏览器地址会发生变化

重定向为两次请求

重定向可以访问不同服务器的页面跳转

request

作用:用于服务器上接收浏览器发送过来的数据信息

请求转发

response 重定向 重新指定访问方向

sendRedirect("ServletB");

从一个servlet 去 开启 新的servlet

重定向:属于浏览器的跳转

请求转发和重定向区别:

重定向跳转浏览器地址会发生变化,

请求转发浏览器地址不会发生变化

重定向是两次请求,请求转发是一次请求

重定向属于浏览器跳转,请求转发属于服务器内部跳转

重定向跳转页面是不能发送数据,

请求转发是可以携带数据的


相关文章
|
12天前
|
存储 前端开发 Java
【SpringMVC】——Cookie和Session机制
获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute
|
2月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
82 4
|
2月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
3月前
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
230 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
3月前
|
存储 安全 数据安全/隐私保护
Cookie 和 Session 的区别及使用 Session 进行身份验证的方法
【10月更文挑战第12天】总之,Cookie 和 Session 各有特点,在不同的场景中发挥着不同的作用。使用 Session 进行身份验证是常见的做法,通过合理的设计和管理,可以确保用户身份的安全和可靠验证。
45 1
|
4月前
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
|
4月前
|
存储 前端开发 Java
JavaWeb基础7——会话技术Cookie&Session
会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
JavaWeb基础7——会话技术Cookie&Session
|
4月前
|
存储 安全 NoSQL
Cookie、Session、Token 解析
Cookie、Session、Token 解析
84 0
|
5月前
|
存储 JavaScript 前端开发
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
325 1
|
5月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
337 0