httpsession详解

会话跟踪:服务器端的技术:HttpSession对象: 
   
   1:原理:客户端浏览器第一次访问,服务器端创建一个会话对象。

        并且具有id的唯一值。 
      依赖cookie将sessionId的值发送给客户端。  
      
      第二次请求的时候,客户端浏览器携带sessionId到服务器。服务器端获得sessionId, 
      从而实现了会话跟踪: 
       
     
   2:特点:创建在服务器端,并且保存在服务器端  
   
   
   .3:获得一个会话对象: 
   HttpSession session = request.getSession();  
   HttpSession session = request.getSession(boolean create); 
   
 
   解释: 
   request.getSession(); 获得了一个会话对象: 
   具体的过程:首先会去寻找服务器端是否存在sessionId具备的会话对象。,没有找到,创建。 
   如果找到该会话对象,使用原来的对象:  
   
     request.getSession(true); //作用和request.getSession();完全一样:
     request.getSession(false); session不创建。 
     

import java.io.IOException;

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

/*
 * 演示:获得一个HttpSession 对象: 
 */
public class AServlet extends HttpServlet {

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

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		HttpSession session = request.getSession();
		System.out.println(session.getId());// 获得id的值: // 0181C49A7E825C977A50EA54FF18316B
		
		HttpSession session2 = request.getSession();// 同一个session 对象: 
		System.out.println(session2.getId());
		
		
	}


   
   依赖cookie将会话Id的值发送给客户端。  
   客户端也依赖cookie将sessionid的值发送给服务端。 
   
   
 

 4:session对象的作用:(超级重要*****)


(1)
域对象的范围:当前的会话。

域对象的作用:  

使用会话存值和取值:

import java.io.IOException;
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 BServlet extends HttpServlet {
	
	/*
	 * 演示域对象的作用: 
	 *  session :向域对象当中存值: 
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		//获得session对象: 
		HttpSession session = request.getSession();
		
		//存值: 
		session.setAttribute("username", "王旭");
		session.setAttribute("password", "888888"); 
		
		
	}

}

实例:用HttpSession的实现用户的登陆:

下面代码为什么if语句一定要加回?

让下面的语句不再执行,即:用户名密码不正确就返回重定向

import java.io.IOException;
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 UserLogin extends HttpServlet {

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

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		/*
		 * 1:获得前端页面的参数: 
		 * 2: 校验: 
		 * 3: 用户名称和密码的保存
		 * 4: 跳转到主页: 
		 */
//		 1:获得前端页面的参数:  
		String username = request.getParameter("username");
		String password = request.getParameter("password"); 
		
		//2: 校验: 
		/*
		 * 长度: 
		 * 格式校验: 
		 * 正确性校验:  admin  admin 
		 */
		if(!("admin".equals(username)&& "admin".equals(password))){
			
			//返回到登录页面: 主要用来做页面的回显
			request.setAttribute("username", username);
			request.setAttribute("password", password); 
			
			//转发:  同一个request 对象: 重定向不是同一个request。
			request.getRequestDispatcher("/user/login.jsp").forward(request, response); 
			return; 
		}
		
		// 3: 说明用户名称和密码都是正确: 保存: 用户名和密码, 保证当前session当中, 不需要重复登录。 
		
		HttpSession session = request.getSession();
		
		session.setAttribute("username", username.trim()); 
		session.setAttribute("password", password.trim()); 
		
		
		// 4: 跳转到登录成功的页面: //重定向: 
		response.sendRedirect("/javaEE-11/user/succ1.jsp"); 
		
		
		
		
		
	}

}

-

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东方-教育技术博主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值