javaweb状态管理

目录

使用session对象实现页面访问控制

使用Cookie实现保存已访问的信息

使用application对象实现统计在线人数


什么是会话

一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程

什么是Cookie

Cookie是Web服务器保存在客户端的一系列文本信息 Cookie的作用 对特定对象的追踪 统计网页浏览次数 简化登录 安全性能 容易信息泄露

 Cookie的语法

导入包

import="javax.servlet.http.Cookie"

创建Cookie parameter:用于代表cookie的名称(key)

value:用于表示当前key名称所对应的值 写入Cookie

类型

方法名称

说  明

void

setMaxAge(int expiry)

设置Cookie的有效期,以秒为单位

void

setValue(String value)

在Cookie创建后,对Cookie进行赋值 

String

getName()

获取Cookie的名称

String

getValue()

获取Cookie的值

String

getMaxAge()

获取Cookie的有效时间,以秒为单位

 Cookie与session的比较

session是在服务器端保存用户信息,Cookie是在客户端保存用户信息 session中保存的是对象,Cookie保存的是字符串 session随会话结束而关闭,Cookie可以长期保存在客户端 Cookie通常用于保存不重要的用户信息,重要的信息使用session保存

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%
 	//设置编码方式
 	request.setCharacterEncoding("utf-8");
 	//接收表单提交过来的值:用户名 密码 根据name值取value值 
 	String name=request.getParameter("aa");
 	String pwd=request.getParameter("bb");
 	//jdbc连接Oracle判断是否登录成功
 	//两个字符串
 	String URL="jdbc:oracle:thin:@localhost:1521:orcl";
 	String CNAME="oracle.jdbc.driver.OracleDriver";
 	//加载驱动
 	Class.forName(CNAME);
 	//创建连接
 	Connection con=DriverManager.getConnection(URL, "scott", "123");
 	//定义sql语句
 	String sql="select * from tb_0328 where sname=? and spwd=?";
 	//获得执行对象
 	PreparedStatement ps=con.prepareStatement(sql);
 	//给占位符赋值
 	ps.setString(1, name);//用name给第1个占位符赋值 
 	ps.setString(2, pwd);//用pwd给第2个占位符赋值 
 	//开始执行 获得结果集
 	ResultSet rs=ps.executeQuery();
 	//判断/遍历
 	if(rs.next()){
 		//说明登录成功
 		//跳转到新闻发布系统的主界面 
 		
 		/*session的应用场合:
 			1.记录用户登录状态 判断用户是否登录 
 			2.建议大家可以保存User对象(uuid uname upwd urole)
 			3.session版的购物车(增删改查)  List<Goods>
 			
 		Cookie的应用场合:
			1.简化登录 免登陆 
			2.历史记录(浏览记录) 
			
			浏览记录思路提示:
				1.在阅读界面存Cookie(Cookie c=new Cookie(新闻的编号name,新闻的标题value);) 
				2.在主界面(admin.jsp)/游客界面(index.jsp)取出所有的Cookie 遍历打印value值
					Cookie[] cs=request.getCookies;
					for(Cookie c:cs){
						out.print(c.getValue());
					}
					
			需要解决三个问题:
				1.解决中文乱码问题 :URLEncoder URLDecoder
				2.解决用户名和sessionID问题 
				3.解决Cookie跨域问题 
 		
 		*/
 			
 		//记录用户的登录状态/信息
 		//session.setAttribute("uname",name);//键String,值Object
 		//设置session的最大有效非活动时间 10秒
 		//session.setMaxInactiveInterval(10);
 		
 		//打印session的编号:862FF3298197894980E3B9C62B093009
 		//System.out.print(session.getId());
 		
 		//Cookie
 		Cookie c=new Cookie("xname",name);//name,value
 		//设置Cookie的有效期10s 一周内免登录
 		c.setMaxAge(60*60*24*7);//复选框
 		//加入响应
 		response.addCookie(c);
 		
 		//重定向
 		response.sendRedirect("news/admin.jsp");
 		
 		//转发 可以传值 
 		//request.getRequestDispatcher("news/admin.jsp").forward(request, response);
 	}
 	else{
 		//说明登录失败
 		out.print("<script>alert('用户名或者密码有误');location.href='login.jsp';</script>");
 	}
 	//关闭资源 3个
 	if(con!=null&&!con.isClosed()){
 		con.close();
 	}
 	if(ps!=null){
 		ps.close();
 	}
 	if(rs!=null){
 		rs.close();
 	}
 	
 	
 %>

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值