0
点赞
收藏
分享

微信扫一扫

HttpSession和Cookie的理解(一)

四月天2021 2022-04-30 阅读 92

HttpSession

1. 什么是HttpSession?
其实就是一个服务器与用户之间的一个对话。当用户第一次访问Servlet的时候,服务器端会给用户创建一个独立的Session,相当于创建了一个独立的房间,这个房间有唯一的ID,也就是sessionID。服务器会将sessionID以cookie的方式发送给浏览器。当浏览器再次访问服务器时,会将sessionID发送过来,服务器依据sessionID就可以找到对应的session对象。
2. 直接看例子
这里用两个数相加后再进行平方的运算作为例子,内含注释简单易懂
(1)Addnumber类

package com.xiaoming;

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

import javax.servlet.ServletException;
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;		
//		创建session
		HttpSession session = req.getSession();
		session.setAttribute("count", count);
//		注意,这里的是set,把key=count以及它的值value=i + j构成(key,value)放进session里面
		res.sendRedirect("sq");//把请求重定向到sq
	}
}

(2)Sqnumber类

package com.xiaoming;

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

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{
//		创建session对象
		HttpSession session = req.getSession();	
//		注意,这里是get,获取session中key=count的值,注意类型转换
		int k = (int) session.getAttribute("count");
		session.removeAttribute("count");//调用该方法移除session中的count
		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
如图所示,输入4,3
在这里插入图片描述
点击提交,结果如图,注意地址栏的变化,这里的变化与web.xml文件有关,可以看看为什么变了
在这里插入图片描述

举报

相关推荐

0 条评论