第8章、JSP页面的访问控制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
服务器为每个会话创建一个HttpSession对象 每个会话对象都有一个唯一的ID 把用户的数据保存在相应的HttpSession对象内
服根务据器ID创号建服一务个器H寻tt找pSession对象 内并存把中该相对应象的的数ID据返回给用户
第二次请求把ID一 起第发一送次给请服求务器
响应
把ID发送给客户端
/
同一用户的不同页面共享数据的四种方法 cookies技术 sendRedirect(),转发 隐藏表单 session技术
/
已访问人数统计
升级学生信息管理系统,增加已访问人数统计功能, 具体要求如下:
在页面中增加超链接:已访问人数统计 已访问人数统计页面:显示已访问人数,以及访问者的登录名
/
如何实现访问控制
访问控制流程图:
1 用户登录

是否是注册用户 是
进入用户注 册页面
系统保存该用 户的登录信息
进入欲访问 的页面
2
用户直接访 问某个页面
系统是否保存了 该用户登录信息
进入用户登录

页面
是 显示该页面 内容
系统如何保存不同用户的登录信息?
使用JSP会话跟踪机制,可以维持每个用户的会话信息,也就是为 不同的用户保存不同的数据
session.setAttribute("counter", ival);
第二次Biblioteka Baidu出:
4
%>
<%=ival%>
/
总结
掌握访问控制实现的流程 掌握session和application对象的用法 会使用include指令 掌握如何在超链接中传递参数
response.sendRedirect(“login.html"); } %>
在后台首页面(index.jsp)中使用include指令引用登录 验证文件
<%@ include file="checklogin.jsp"%>
/
练习
升级学生管理系统
修改登录功能,若登录成功则显示学生列表,登录失败转到 失败页面。若未登录直接访问学生列表则直接跳转到登录页 面(要求:注意安全性)
cookie的生命周期是累计的,从创建时就开始计时,20分钟后结 束cookie就无效了
session的生命周期是间隔的,从创建时开始计时,如20分钟没有 访问过session,那么session信息无效,如果在20分钟内访问过 session,那么,它的生命周期将重新开始计算。
另外,关机会造成session生命周期结束,但是对cookie没有任何 影响。
<%
Integer ival = (Integer)session.getAttribute("counter");
if (ival == null)
ival = new Integer(1);
else{
第一次输出:
6
ival = new Integer(ival.intValue() + 1);
}
升级学生信息管理系统,增加访问控制功能,要求如下:
提供用户登录页面 用户必须登录之后,才能访问该系统
登录处理页面(login.jsp)
2
1、获得登录信息
2、查询数据库,判断该用户是否注册
3、如果该用户已注册,在session中
1
保存该用户的登录信息,并且跳转到
系统的首页面
session中无法
提取到用户信息
/
什么是会话
一个会话就是浏览器与服务器之间的一次通话,它包含浏 览器与服务器之间的多次请求、响应过程
请求 1
session与浏览器一一 对应,允许用户存储和 提取会话状态的信息
浏览器
响应 1
session对象
浏览器
请求 2…n 响应 2…n
浏览器关闭,
本次会话结束
/
session对象
会话跟踪
HttpSession对象
应用:
创建:ServletContext application=this.getServletContext(); 添加属性:setAttribute(String name,Object ob); 得到值:getAttribute(String name);返回Object; 删除属性:removeAttribute(String name);
会话的使用 getSession( )
获取ses使sio用nHttpSession接口的方法,进行
对象的方 法保存数据:
getSession( true )
返回与当前关联的 true 会话,如果没有就
创建后将其返回
取出数据ge:tSession(boolean bool )
返回与当前关联
public void setAttribute(String param,Objefcatlsvealue的); 会话,如果没
application.setAttribute("LOGINED_USER", new ArrayList());
Object getAttribute(String key):根据键去获取application 中存放对象的值
if (application.getAttribute("LOGINED_USER") != null) { List loginedUsers = (List) application.getAttribute("LOGINED_USER");
/
session对象的存在周期
session对象的存在周期
session的创建
浏览器访问服务器时,服务器为每个浏览器创建不同的session对象
session的关闭
调用session. invalidate()方法,使session对象失效 访问时间间隔大于非活动时间间隔, session对象失效 关闭浏览器时,session对象失效
JSP内置对象application
application类似于系统的“全局变量”,用于实现用户 之间的数据共享
application对象的常用方法:
void setAttribute(String key, Object value):以键/值的方 式,将一个对象的值存放到application中
/
ServletContext
因为存在ServletContext中的数据会长时间的保存在服务 器,会占用内存,因此我们建议不要向ServletContext中 添加过大的数据。
servlet中,session中存放的值当关闭浏览器后就丢失了 ,而ServletContext中的则不会丢失。
/
系统首页面(index.jsp) 1、从session中提取该用户信息
3
2、如果用户信息存在,显示首页内容
3、如果用户信息不存在,跳转到登录页面
用户已注册
/
include指令 2-1
除了首页面,其它页面中同样需要加入登录验证, 有没有办法避免冗余代码的出现?
可以将一些共性的内容写入一个单独的文件中,然后通过 include指令引用该文件,从而降低代码的冗余问题,也便 于修改共性内容
第八章 -----JSP页面的访问控制
本章目标
掌握访问控制实现的流程 掌握JSP内置对象的用法
session对象 application对象
掌握include指令 掌握如何在超链接中传递参数
/
生活中的访问控制
下载电子书时,系统会提示用户登录网站
点击下载, 系统转入登录页面
每次下载之前,系统如何判断用户是否已经登录?
同时,服务器在内存中开辟 一空间,用来保存该对象数据
/
会话的创建和使用
Servlet中会话的创建
使用HttpServletRequest 的 getSession() 方法创建会话, 语法如下:
public HttpSession getSession(); public HttpSession getSession( boolean value);

/
ServletContext
javax.servlet.ServletContext类,存放于服务器中,可以被所有 的客户访问。
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应 的ServletContext对象,它代表当前web应用。
由于一个WEB应用中的所有Servlet共享同一个ServletContext 对象,因此Servlet对象之间可以通过ServletContext对象来实 现通讯。
public Object getAttribute(String param);
有返回null
使用时,将其转换成原来数据类型
/
JSP内置对象session
session对象用来存储有关用户会话的所有信息 session对象常用方法:
void setAttribute(String key, Object value):以键/值的方式, 将一个对象的值存放到session中
如何将一个Cookie添加到客户端: response.addCookie(cookie); 如何读取cookie(从客户端读到服务器):
Cookie[] allcookies= request.getCookie(); 然后用for循环遍历 删除cookie:首先取出,cookie.setMaxAge(0);
/
使用:
创建一个Cookie(在服务端创建的): Cookie cookie=new Cookie(String name,String val);
设置cookie存在的时间: cookie.setMaxAge(20); //单位为秒, 若为负值则不保存,为0则删除,为正值为保存时间。 注意:如果不设置该项,cookie将不保存。
}
/
小结2
升级学生管理系统
增加修改、删除功能
用超链接传递参数:
<a href=“StudentServ?id=1001”>修改</a>
/
启动IE窗口运行如下JSP,如果连续刷新5次,输出结果是什么?
重新启动一个新的IE窗口运行该JSP,如果连续刷新3次,输出结果是 什么?
<%@ page contentType="text/html; charset=GBK"%>
请求
在内存开辟空间 保存数据信息
清空内存内当前浏 览器相关数据信息
/
session的应用场合
应用案例:
网上商城中的购物车 保存登录用户的信息 将某些数据放入到session中,供同一用户的各个页面使用 防止用户非法登录到某个页面(如未登录直接访问主页) ……
/
为学生信息管理系统增加访问控制
session.setAttribute("name", "admin");
Object getAttribute(String key):根据名称去获取session中 存放对象的值
String name = (String) session.getAttribute("name");
访问控制就是基于session来完成的
/
Cookie应用
保存用户登录信息,一周内不需要重新登录
/
cookie与session的比较
存在的位置:cookie保存在客户端,session保存在服务器端 安全性:cookie的安全性比session要弱 网络传输量:cookie通过网络在客户端与服务器端传输,而session保
存在服务器端,不需要传输 生命周期(20分钟为例):
/
小结1
创建登录页面login.html
提供用户名输入框、以及登录按钮
创建登录处理页面login.jsp
如果用户名为sa,把用户名存储在session中,并跳转进 入index.jsp中
否则跳转进入login.html页面
创建页面index.jsp
如果session中没有该用户信息,跳转进入login.html中 否则显示欢迎信息
/
include指令 2-2
创建登录验证文件 checklogin.jsp
<%@ page import="s2jsp.sg.ch07.User"%> <% User user = (User) session.getAttribute("LOGINED_USER"); if (user == null) {
/
Cookie
服务器在客户端保存用户的信息,比如登录名,密码 等。。。就是cookie,这些信息就像是小甜饼一样,数据 量并不大,服务器端在需要的时候可以从客户端读取。
cookies的用处:
保存用户名、密码,在一定的时间不用重新登录 记录用户访问网站的喜好(比如有无背景音乐、背景色什么
的) 网站的个性化,比如定制网站的服务,内容。
相关文档
最新文档