2020-4-11 javaweb Session的使用方法

Session

• Servlet 容器为每一个 HttpSession 对象分配一个唯一的标识符,称为 SessionID,同时将 SessionID 发送到客户端,由浏览器负责保存此 SessionID。
• 当客户端再发送请求时,浏览器会同时发送 SessionID,Servlet 容器可以从请求对象中读取 SessionID,根据 SessionID 的值找到相应的 HttpSession 对象。
通常服务器借助于 Cookie 把 SessionID 存储在浏览器进程中,在该浏览器进程下一次访问服务器时,服务器就可以从请求中的 Cookie 里获取 SessionID。此外,Session 还可以借助 URL 重写的方式在客户端保存 SessionID。
方法名
描述
public void setAttribute(String name,Object value)
将value对象以name名称绑定到会话
public object getAttribute(String name)
获取指定name的属性值,如果属性不存在则返回null
public void removeAttribute(String name)
从会话中删除name属性,如果不存在不会执行,也不会抛处错误
public Enumeration getAttributeNames()
返回和会话有关的枚举值
public void invalidate()
使会话失效,同时删除属性对象
public Boolean isNew()
用于检测当前客户是否为新的会话
public long getCreationTime()
返回会话创建时间
public long getLastAccessedTime()
返回在会话时间内web容器接收到客户最后发出的请求的时间
public int getMaxInactiveInterval()
返回在会话期间内客户请求的最长时间.秒
public void setMasInactiveInterval(int seconds)
允许客户客户请求的最长时间
ServletContext getServletContext()
返回当前会话的上下文环境,ServletContext对象可以使Servlet与web容器进行通信
public String getId()
返回会话期间的识别号

login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="SessionServlet" method="get">
	<div>
		<label for="username">用户名:</label>
		<input type="text" id="username" name="username" placeholder="请输入用户名">
		
	</div>
	<div>
		<label for="password">密码:</label>
		<input type="password" id="password" name="password" placeholder="请输入密码">
	</div>
	<div>
		<input type="checkbox" name="saveSession" value="yes">记住登录状态
	</div>
	<button type="submit">提交</button>
</form>
</body>
</html>

建立session
SessionServlet.java

package test;

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;

/**
 * @author 你的名字
 * @version 创建时间:2021年4月9日  下午7:56:52
 */
@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");

		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		String[] saveSession = request.getParameterValues("saveSession");
		
		//建立session,通过request中的getSession方法
		HttpSession session = request.getSession();
		if(saveSession!=null&&saveSession[0].equals("yes"))
		{
			session.setAttribute("username", username);
			session.setAttribute("password", password);
		}else {
			session.removeAttribute("username");
			session.removeAttribute("password");
			
		}
		
		PrintWriter out = response.getWriter();
		out.print("welcom:"+username);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

调用Session
LoginHtmlSessionServlet.java

package test;

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;

/**
 * @author 你的名字
 * @version 创建时间:2021年4月9日  下午8:20:30
 */
@WebServlet("/LoginHtmlSessionServlet")
public class LoginHtmlSessionServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");

		String username="";
		String password="";
		
		HttpSession session = request.getSession();
		Object user=session.getAttribute("username");
		Object pass=session.getAttribute("password");
		
		if(user!=null&&pass!=null)
		{
			username=""+user.toString();
			password=""+pass.toString();
		}
		System.out.println("信息 "+username+" "+password);
		PrintWriter out=response.getWriter();
		out.print("<!DOCTYPE html>\r\n"
				+ "<html>\r\n"
				+ "<head>\r\n"
				+ "<meta charset=\"UTF-8\">\r\n"
				+ "<title>登录</title>\r\n"
				+ "</head>\r\n"
				+ "<body>\r\n"
				+ "<form action=\"SessionServlet\" method=\"get\">\r\n"
				+ "	<div>\r\n"
				+ "		<label for=\"username\">用户名:</label>\r\n"
				+ "		<input type=\"text\" value=\""+username+"\" id=\"username\" name=\"username\" placeholder=\"请输入用户名\">\r\n"
				+ "		\r\n"
				+ "	</div>\r\n"
				+ "	<div>\r\n"
				+ "		<label for=\"password\">密码:</label>\r\n"
				+ "		<input type=\"password\" value=\""+password+"\" id=\"password\" name=\"password\" placeholder=\"请输入密码\">\r\n"
				+ "	</div>\r\n"
				+ "	<div>\r\n"
				+ "		<input type=\"checkbox\" name=\"saveSession\" value=\"yes\">记住登录状态\r\n"
				+ "	</div>\r\n"
				+ "	<button type=\"submit\">提交</button>\r\n"
				+ "</form>\r\n"
				+ "</body>\r\n"
				+ "</html>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

效果如下:
不勾选记录登录状态时,下次登陆需要重新输入账号和密码
勾选记录登录状态就,下次登陆默认上次的账号和密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yozu_Roo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值