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

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

请求转发和重定向区别:

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

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

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

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

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

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


相关文章
|
1月前
|
Java
jsp中使用cookie时报错……
jsp中使用cookie时报错……
8 0
|
1月前
|
Java 数据安全/隐私保护
jsp使用cookie实现记住用户名和密码
jsp使用cookie实现记住用户名和密码
11 0
|
1月前
|
存储 自然语言处理 API
Session、cookie、token有什么区别?
Session、cookie、token有什么区别?
24 1
|
12天前
|
存储 JSON 安全
|
1月前
|
数据采集 存储 安全
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
|
1月前
|
存储 安全 搜索推荐
Django中Cookie和Session的使用
Django中Cookie和Session的使用
21 0
|
1月前
|
存储 安全 对象存储
Cookie和Session的区别:从原理到应用
【2月更文挑战第18天】
56 6
|
1月前
|
存储 搜索推荐 安全
【Web开发】cookie和session
【Web开发】cookie和session
|
2月前
|
存储 搜索推荐 安全
Java Web开发中的会话管理:Cookie与Session对比
Java Web开发中的会话管理:Cookie与Session对比
|
2月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
36 0