今天我们来学习服务器(session 会话)与客户端存储(cookie 小甜饼)
session 会话(服务端存储)
类似银行,为客户开户,但每次重进会重新生成卡号
cookie 小甜饼(客户端存储)
如果不设时间,浏览器关闭,cookie会消失
一.首先写一个简单的登录界面
<body>
<form action="dolngin.jsp">
<p><input type="text" placeholder="请输入用户名" name="yh"></p>
<p><input type="password" placeholder="请输入密码" name="mm"></p>
<p><button>登录</button></p>
</form>
</body>
使用表格完成,记得一定要加name属性,action提交到哪个页面
二.后台进行操作
1.拿到前台传来的值:request.getparameter
2.数据库连接
3.在if判断中进行存储
session.setAttibute(属性名,属性值)
cookie cookie=new cookie("","")new一个cookie
response.addcookie(cookie)存入cookie
cookie.setMaxAge() cookie存活时间
4.历史记录的完成
定义集合List<String> jl
jl.add将信息存入集合
将集合放入session,session.setAttribute(属性名jl,属性值jl)
从session中拿到记录object类型,session.getAttribute
判断obj是否有值,turn将obj强转为集合赋值给jl
<%
String yh=request.getParameter("yh");
String mm=request.getParameter("mm");
//加载驱动
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");
//定义连接
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(url,"scott","123");
//获得执行对象
PreparedStatement ps=con.prepareStatement("select*from a1 where aname=? and pwd=?");
ps.setString(1,yh);
ps.setString(2, mm);
//获得结果集
ResultSet rs=ps.executeQuery();
//判断
if(rs.next()){
//将用户存到session服务器中
session.setAttribute("aname", yh);
session.setAttribute("pwd", mm);
Cookie cookie01=new Cookie("yh",yh);
Cookie cookie02=new Cookie("mm",mm);
response.addCookie(cookie01);
response.addCookie(cookie02);
//设置存活时间s
//为-1时,在浏览器打开时生效
cookie01.setMaxAge(60*60*24*7);
cookie02.setMaxAge(60*60*24*7);
request.getRequestDispatcher("/index01.jsp").forward(request, response);
}
//去session中那历史记录
Object obj=session.getAttribute("jl");
List<String> jl=new ArrayList<>();
if(obj!=null){//有记录时
jl=(List<String>)obj;//放入集合
}
String mz="";
String nr="";
PreparedStatement ps1=con.prepareStatement("select*from a2");
ResultSet rs1=ps1.executeQuery();
if(rs1.next()){
mz=rs1.getString(1);
nr=rs1.getString(2);
request.getRequestDispatcher("/index01.jsp").forward(request, response);
}
//将信息存入集合
jl.add(mz+"@"+nr);
//将信息放回session
session.setAttribute("jl", jl);
//关闭
if(con!=null&&con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
三.页面cookie的拿值,记录的拿取
先判断如果request.getcookies有值时,遍历request.getcookies,通过cookie.getname与属性名比较分别拿值,cookie.getvalue拿内容
session的存活时间
session.setMaxInactiveInterval(60);
session的删除
session.invalidate();
<body>
<%
String yh="";
String mm="";
if(request.getCookies()!=null){
for(Cookie cookie:request.getCookies()){
if(cookie.getName().equals("yh")){
yh=cookie.getValue();
}
if(cookie.getName().equals("mm")){
mm=cookie.getValue();
}
}
}
%>
<p><input type="text" value="<%=yh%>"></p>
<p><input type="text" value="<%=mm%>"></p>
<%
Object obj=session.getAttribute("jl");//拿到session里面的记录
if(obj!=null){//确保obj里面有数据
List<String> jl=(List<String>)obj;//强转为String类型的集合
for(String s:jl){//遍历集合
String[] ss=s.split("@");//切割成数组
%>
<p><input type="text" value="<%=ss[0]%>"></p>//给value设值
<p><input type="text" value="<%=ss[1]%>"></p>
<%
}
}
%>
<%
//session的存活时间
session.setMaxInactiveInterval(60);
//session的删除
session.invalidate();
//在没有登录前只允许在登录界面
Object obj1=session.getAttribute("yh");
if(obj1==null){
//没有查到用户名直接跳转登录页面
response.sendRedirect("/web07/index01.jsp");
}
%>
</body>
今天的学习就是存储,session和cookie,非常简单,多看两遍就记住了