HttpSession和Cookie的理解(二)

本文介绍了Cookie在网络应用中的作用,用于存储状态信息和跟踪用户行为。通过一个简单的加法和平方运算的例子,展示了如何在Servlet中创建和读取Cookie。用户输入两个数,Servlet将它们相加并保存在Cookie中,然后重定向到另一个Servlet,该Servlet读取Cookie中的值,计算其平方并显示结果。
摘要由CSDN通过智能技术生成

Cookie

1. 什么是Cookie?
是在用户浏览网站时由网络服务器创建的小块数据,并由用户的网络浏览器放置在用户的计算机或其他设备上。Cookie 放置在用于访问网站的设备上,并且在会话期间可能会在用户的设备上放置多个 cookie。
Cookie 在网络上提供有用且有时必不可少的功能。它们使 Web 服务器能够在用户的设备上存储状态信息(例如添加到在线商店的购物车中的商品)或跟踪用户的浏览活动(包括单击特定按钮、登录或记录在过去)。它们还可以用于保存用户先前在表单字段中输入的信息,例如姓名、地址、密码和支付卡号,以供后续使用。

2. 直接看例子
这里用两个数相加后再进行平方的运算作为例子,内含注释简单易懂
(1)Addnumber类

package com.xiaoming;

import java.io.IOException;
import java.net.http.HttpRequest;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Addnumber extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public void doGet(HttpServletRequest req , HttpServletResponse res) throws IOException, ServletException{
		
		int i = Integer.parseInt(req.getParameter("num1"));//从请求中获取到num1的值
		int j = Integer.parseInt(req.getParameter("num2"));//从请求中获取到num2的值		
		int count = i + j;	
//		创建Cookie对象,注意两个参数的值均为String,所以下面就把count转换成字符串
		Cookie cookie = new Cookie("count", count + "");
//		把请求添加到Cookie中
		res.addCookie(cookie);

		res.sendRedirect("sq");//把请求重定向到sq
	}
}

(2)Sqnumber类

package com.xiaoming;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Sqnumber extends HttpServlet{
	public void doGet(HttpServletRequest req , HttpServletResponse res) throws IOException
	{
		int k = 0;
//		为什么要用数组的原因:因为getCookies()会把所有的Cookie以数组的形式返回回来,要自己选择需要用哪个
		Cookie cookie[] = req.getCookies();
//		循环查找,找到count并获得它的值
		for(Cookie m : cookie) {
			if(m.getName().equals("count"))
				k = Integer.parseInt(m.getValue());
		}

		k = k * k;
		
		PrintWriter out = res.getWriter();
		out.println("Result is " + k);

		System.out.println("Sqnumber called");
		
	}
}

(3)index.html

<!DOCTYPE html>
<html>
<body>
	<form action="add" method="get">
	<!-- 注意,上面action定向到add,方法是get -->
	输入第一个数 : <input type="text" name="num1"><br>
	输入第二个数 : <input type="text" name="num2"><br>
	<input type="submit">
	
	</form>
</body>
</html>

(4)web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_7.xsd" id="WebApp_ID" version="3.1">  
  <servlet>
  <servlet-name>addnumber</servlet-name>
  <servlet-class>com.xiaoming.Addnumber</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>addnumber</servlet-name>
  <url-pattern>/add</url-pattern>
  </servlet-mapping>
  
  <servlet>
  <servlet-name>sqnumber</servlet-name>
  <servlet-class>com.xiaoming.Sqnumber</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>sqnumber</servlet-name>
  <url-pattern>/sq</url-pattern>
  </servlet-mapping>
  
</web-app>

3.运行index.html
如图所示,输入2,7
在这里插入图片描述
点击提交,结果如图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值