session内置对象 一.认识session 1.session在jsp中是 javax.servlet.http.HttpSession 的对象,用于区分不同的用户,每 一个session就表示一个用户。
2.它的主要功能就是判断用户的登陆,常用的方法如下: (1)设置属性: public void setAttribute(String name,Object value) (2)取得属性: public Object getAttribute(String name) (3)删除属性: public void removeAttribute(String name) (4)判断是否新session: public boolean isNew() (5)返回sessionid: public String getId() (6)让session失效: public void invalidate() (7)设置属性: public void setValue(String name,Object value) (8)取得属性: public Object getValue(String name) (9)删除属性: public void removeValue(String name) (注意后三种方法是session最早的操作,后来为了jsp四种属性范围进行修改, 现在不建议使用.)
二.session主要操作方法
1.取得session id 服务器是靠session id对用户进行区分的,此session id在客户端第一次连接到服务器时 由服务器自动分配,不能手工设置 例1: 新建session1.jsp文件,取得session id: <%@ page contentType=”text/html;charset=GBK”%><h1><%=session.getId()%></h1>复制代码 2.让session失效,即注销 每次执行invalida()方法是,表示session失效。 例2: 新建session2.jsp文件,观察session失效: <%@ page contentType=”text/html;charset=GBK”%><h1><%=session.getId()%></h1><%session.invalidate() ; // 让session失效%>复制代码 3.判断是否为新的session 当用户第一次连接到服务器时,可通过isNew()方法判断是否为新用户。 此方法的原理在于cookie的设置 (1)若用户第一次访问服务器,则cooki中不存在JSESSIONID (2)若用户第二次访问服务器,则cookie中已经存在JSESSIONID 例3: 新建session3.jsp文件,进行判断: <%@ page contentType=”text/html;charset=GBK”%><%if(session.isNew()){%><h2>欢迎新用户光临!</h2><%}else{%><h2>你不是新用户了!</h2><%}%>复制代码 例4: 新建session4.jsp文件,检验JSESSIONID和session id的值是否一致: <%@ page contentType=”text/html;charset=GBK”%><h1><%=session.getId()%></h1><%Cookie c[] = request.getCookies() ;if(c!=null){for(int i=0;i<c.length;i++){%><%=c[i].getName()%> –> <%=c[i].getValue()%><%}}%>复制代码 4.注意session和cookie的关系:session是在服务器端的,cookie是在客户端的
5.sessio用于系统登录 在所有系统中,session对象中使用最多的操作就是设置和取得属性 例5: 新建login.jsp文件,负责登录: <%@ page contentType=”text/html;charset=GBK”%><h1>系统登陆</h1><form action=”login.jsp” method=”post”>用户名:<input type=”text” name=”name”><br>密 码:<input type=”password” name=”password”><br><input type=”submit” value=”登陆”><input type=”reset” value=”重置”></form><%String name = request.getParameter(“name”) ;String pass = request.getParameter(“password”) ;if(!((“”.equals(name)||name==null)&&(“”.equals(pass)||pass==null))){// 假设用户名是abc,密码是123if(“abc”.equals(name)&&”123″.equals(pass)){session.setAttribute(“name”,name) ; // 登陆了设置sessionresponse.sendRedirect(“welcome.jsp”) ;}else{%><h3>错误的用户名或密码</h3><%}}%>复制代码 新建logout.jsp文件,负责注销: <%@ page contentType=”text/html;charset=GBK”%><%session.invalidate() ;%>复制代码 新建welcome.jsp,表示欢迎界面: <%@ page contentType=”text/html;charset=GBK”%><%if(session.getAttribute(“name”)!=null){ // 合法用户%><h1>欢迎光临!</h1><h2><a href=”logout.jsp”>注销</a></h2><%}else{%><h1>请先<a href=”login.jsp”>登陆</a>!</h1><%}%>复制代码
------------------完整例子-----------------------------------------------
1.bankname.jsp <html><head><title>First Page</title></head><body><form method="post" action="custid.jsp">what is you Bank Name?<input type="text" name="bank" ></input><p><input type="submit" value="submit" ></input></p></form></body></html>复制代码 2.custid.jsp <html><head><title>Second Page</title></head><body><%! String name = ""; %><%name = request.getParameter("bank");session.putValue("bankname",name);%>The name is <%= name %><p><form method="post" action="bank.jsp" >what is your customer ID?<input type="text" name="custid" ></input></p><input type="submit" value="submit" ></input></form></body></html>复制代码 3.bank.jsp
<html><head><title>Third Page</title></head><body><%! String name = ""; String CustId = "";%><%CustId = request.getParameter("custid");name = (String)session.getValue("bankname");%>Your bank name is <b><%= name %></b><p>Your customer ID is <b><%= CustId%></b></p></body></html> (责任编辑:admin) |