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和Session的应用

 


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>

运行界面

Cookie和Session的应用


Cookie和Session的应用 


Cookie和Session的应用


 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
重定向:属于浏览器的跳转


请求转发和重定向区别:
重定向跳转浏览器地址会发生变化,
请求转发浏览器地址不会发生变化
重定向是两次请求,请求转发是一次请求
重定向属于浏览器跳转,请求转发属于服务器内部跳转
重定向跳转页面是不能发送数据,
请求转发是可以携带数据的

上一篇:事件 passive 是什么?


下一篇:解决 Firefox 显示“已阻止载入混合活动内容”的问题