目录
JSP内置对象session
session的概念
session对象用来存储有关用户会话的所有信息
session对象常用方法:
类型 | 方法名称 | 说 明 |
void | setAttribute(String key,Object value) | 以key/value的形式保存对象值 |
Object | getAttribute(String key) | 通过key获取对象值 |
int | getMaxInactiveInterval() | 获取session的有效非活动时间,以秒为单位 |
String | getId() | 获取session对象的编号 |
void | invalidate() | 设置session对象失效 |
session与窗口的关系
1.每个session对象都与浏览器一一对应 重新开启一个浏览器,相当于重新创建一个session对象重新开启一个IE窗口,直接访问系统首页面
2.通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
Cookie
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保存
新闻登录系统
JSP的应用
代码展示
<%@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", "tiger");
//定义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.历史记录(浏览记录)
*/
//session
//记录用户的登录状态/信息
//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("new/admin.jsp");
//转发 可以传值
//request.getRequestDispatcher("new/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();
}
%>
效果展示(改效果会自动判断需要输入的值不为空等等)