《登录功能的实现》PPT课件.ppt

上传人:sh****n 文档编号:13150569 上传时间:2020-06-05 格式:PPT 页数:49 大小:244KB
返回 下载 相关 举报
《登录功能的实现》PPT课件.ppt_第1页
第1页 / 共49页
《登录功能的实现》PPT课件.ppt_第2页
第2页 / 共49页
《登录功能的实现》PPT课件.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
第7章,登录功能的实现,本章主要内容,7.1任务的提出与分解7.2验证登录信息(JDBC驱动)7.3在会话期间维持用户的登录信息7.4公共页面的处理7.5在线会员名单的显示7.6使用Cookie完成自动登录功能,7.1任务的提出与分解,登录功能的完成可分解为以下几个子任务:制作登录信息输入页面验证用户输入的用户名与密码是否正确用户登录成功后,在其访问本网站的一次会话期间,维持其已登录的状态显示当前在线的人员名单,7.2验证登录信息(JDBC驱动),验证登录信息是否正确,实际上就是查询用户信息表中是否存在一条记录-其用户名和密码与用户输入的信息相同。下面将介绍直接通过JDBC驱动访问数据库的方法。,7.2.1通过JDBC访问数据库,JDBC(JavaDatabaseConnectivity)是Sun公司提供的一套访问数据库的标准类或接口。目前,JDBC通用接口得到了各大数据库厂商的支持,主流的数据库产品如Oracle、MicrosoftSQLServer、DB、Mysql等都实现了这些标准接口,并把这些实现类全部打包成jar文件提供给开发人员使用。我们平常所说的JDBC驱动程序就是指这些jar文件,它们是实现了JDBC标准接口和类的集合。,7.2.1通过JDBC访问数据库,下图展示了使用JDBC访问数据库时资源之间的调用关系。,7.2.1通过JDBC访问数据库,当项目中需要访问数据库时,首先应添加对这些jar文件的引用。接下来,使用JDBC驱动访问数据库的过程与第6章中使用JDBC-ODBC桥驱动访问数据库的过程基本相同。下页给出了连接MySql数据库的代码。,7.2.1通过JDBC访问数据库,7.2.1通过JDBC访问数据库,当所采用的数据库产品不同时,连接数据库的驱动类全称和URL也不相同。下面给出了几种常用的数据库产品的驱动类名称和连接URL.连接MicrosoftSQLServer2000StringdriverClass=com.microsoft.jdbc.sqlserver.SQLServerDriver;Stringurl=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=数据库名称;连接MicrosoftSQLServer2005StringdriverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver;Stringurl=jdbc:sqlserver:/localhost:1433;DatabaseName=数据库名称;,7.2.1通过JDBC访问数据库,连接OracleStringdriverClass=oracle.jdbc.driver.OracleDriver;Stringurl=jdbc:oracle:thin:localhost:1521:实例名;Oracle的默认实例名一般为orcl.,7.2.2任务实现,这里以访问MySQL数据库为例,实现用户登录信息的验证。安装完MySQL后,按照第4章中的数据库结构创建3张表,即用户信息表users、主题帖表posts、回复帖表reply,并在每张表中添加数条测试用的记录。,7.2.2任务实现,在项目中添加对MySQL驱动mysql-connector-java-3.1.12-bin.jar(不同版本时文件名称可能会有不同)的引用。编写验证登录信息是否正确的页面chkLogin.jsp,代码如下页所示。,7.2.2任务实现,7.2.3重点提示,以JDBC方式访问数据库前,应先在项目中添加对相应的数据库驱动文件即jar文件的引用,否则,将产生java.lang.ClassNotFound异常,表示无法加载所需要的类。对于不同厂商提供的数据库产品,所需注册的驱动类名称和创建数据库连接时的url也不相同。,7.3在会话期间维持用户的登录信息,当用户通过登录页面登录成功后,用户随后所访问的其它页面都应能得知“该用户已经登录”的这个事实。例如,用户登录后,一般地,网站将会在随后的页面中显示登录用户名,同时,用户还具有发帖等权利。在第2章我们了解到,HTTP协议是无状态的协议,不具备事务记忆的能力,通过协议本身无法保持客户端前一次请求产生的状态信息。JSP内置的session(会话)对象就是专门用来保存客户端的会话状态的。,7.3.1session对象的工作机制,session(会话)对象是JSP的内建对象之一,用于在客户端与服务器的一个会话期间保持客户端的信息。所谓“会话周期”,是指从客户端连接到服务器(例如访问服务器上的某一网页)开始,到发生以下4种情形之一的这段时间:用户关闭了目前正在使用的浏览器程序服务器被关闭(如Tomcat服务被终止)在指定长度的时间段里,用户未向服务器提出请求。Tomcat服务器默认为30分钟。程序中遇到结束session的代码,7.3.1session对象的工作机制,当会话开始时,服务器为客户端创建一份专属的session,即在服务器机器上留出一块内存区域供该客户端使用,该客户端所访问的任何网页都有权写入或读取其中的信息。,7.3.1session对象的工作机制,为了与其它客户端的session区别,服务器用一个ID(即sessionID)来标识它,当服务器向客户端发回响应时,该ID将连同响应内容一起发送给客户端,客户端通常可通过Cookie机制保存此ID。以后当用户访问网站的其它网页(或其它资源)时,每次都会将sessionID夹带在其它请求信息中一起发送给服务器,这样,无论用户访问的是哪项资源(一般是网页),服务器都可识别出专属于该客户端的session。若Cookie被禁用,则会通过URL重写的方式向服务器端发送sessionID。,session对象的常用方法:,voidsetAttribute(Stringname,Objectvalue)向session中写入一个属性,该属性的名称由第1个参数name表示,值由第2个参数value表示,该值可以是一个Java对象。若同名的属性已经存在,则将覆盖原来的值。例:将请求参数username的值以uname的名称存入session中。,session对象的常用方法:,ObjectgetAttribute(Stringname)返回名称为name的属性的值,返回值为Object类型,通常需根据具体应用进行强制类型转换。若不存在指定名称的属性,则返回null。如:voidremoveAttribute(Stringname)删除session中指定名称的属性。例:在用户退出登录时,从session中清除所保存的用户名,session对象的常用方法:,voidsetMaxInactiveInterval(intinterval)设置所允许的最长的非活动时间间隔。有人形象地称之为“发呆时间”,单位为秒。为了更有效地利用服务器的资源,若客户端在规定长度的一段时间内都未访问服务器,则服务器将终止与该客户端的会话,并清除与该客户端相关联的那份session。Tomcat服务器默认的会话超期时间为30分钟,可在项目的配置文件web.xml中自行设置。例:将发呆时间设为一小时voidinvalidate()销毁当前session对象,执行此方法后,将不能再使用session对象。,7.3.2实验案例,例7.1使用session实现简单的点菜功能这里为客户提供3个菜单页面,分别可以选择汤类、色拉以及特色菜,当用户在其中一个页面完成了点菜选择后,将自动转向下一个选择页面。每个选择页面都将完成相同的功能:将用户在前一个页面作出的选择存入session中,并且显示出已点的菜单,同时还提供一个菜单导航条。这些相同的功能由公共页面addToSession.jsp来完成,代码如下页所示。,7.3.2实验案例-处理页面,7.3.2实验案例-菜单选择页面,7.3.3任务实现,修改前一小节的登录验证页面chkLogin.jsp,将登录成功后的处理代码修改为:if(valid)session.setAttribute(username,uname);out.println(登录成功!正在自动转向网站首页.);response.setHeader(refresh,3;url=index.jsp);,7.3.3任务实现,在index.jsp页面的标签后添加如下代码:,7.3.4重点提示,会话周期是指从客户端访问服务器开始,到会话结束的一段时间。session对象供客户端在访问服务器的一次会话期间内使用,即客户端在这段时间内访问的所有网页都能读写服务器上属于自己的那个session对象。每个客户端只能访问专属于自己的那个session对象。向session对象中写入属性时,该属性值可以是一个Java对象,从session中取出该属性时,应强制还原为原来的类型。,7.4公共页面的处理,网站的页面往往需要维持相同的风格,例如不同的网页都有相同的LOGO、导航条及版权信息等,通过JSP的包含指令或包含动作可以方便地实现这一目标。,7.4.1include指令,include指令所实现的文件包含往往又称为“静态包含”,它用于通知JSP引擎在将JSP文件转换为Servlet时,将指定的资源内容内嵌到当前页面中该条指令出现的地方。语法格式:其中的relativeURL表示被包含的资源的文件路径(含文件名)。,7.4.1include指令,例7.2include指令的使用在页面main.jsp中使用include指令包含in.jsp的内容。程序清单web77_4in.jsp注意:创建该文件时,删除原来IDE自动生成的所有内容,然后添加上面这行代码,即显示一张图片。主要代码web77_4main.jsp测试文字1测试文字2访问main.jsp,得到如图7-6所示的运行结果。,7.4.2动作,是JSP的标准动作之一,用于在页面中动态地包含其它资源的执行结果。在请求被执行时,若遇到动作,则先执行指定的被包含文件,然后将执行结果包含进来。由于直到请求被执行时才能确定要包含的内容,因此,使用jsp:include动作所实现的文件包含又被称为“动态包含”。,7.4.2动作,语法格式:或与include指令不同,这里的page属性值可以是一个表达式。,7.4.2动作,例7.3根据操作员的级别,包含不同的导航条。参考文件:web77_4include.jsp及web77_4nav.jsp,7.4.3任务实现,由于论坛的所有页面均采用相同的布局,因此可将页面头部的内容及页脚的内容各自编写为2个文件,然后在论坛网站的所有页面的相应位置包含这2个文件。例7.4演示了在登录页面中包含页头的情形。相关文件:web77_4head.jsp及web77_4login.jsp,7.4.4重点提示,使用include指令或jsp:include动作均可包含其它文件的内容。include指令只能静态包含一个文件的内容,而jsp:include动作则可在执行时动态地包含一个页面的执行结果。jsp:include动作可以结合jsp:param动作向包含的页面传递参数。,7.5在线会员名单的显示,7.5.1application对象的使用application(应用)对象是JSP中的内建对象之一。在session对象中保存的属性只能被一个客户端所使用,可以被该客户端所访问的不同网页共享,而在application对象中保存的属性则可以被不同的客户端在其访问本应用的整个过程中共享。,7.5.1application对象的使用,application对象的常用方法:voidsetAttribute(Stringname,Objectvalue)向application中存入一个属性,名称由name指定,值由value指定ObjectgetAttribute(Stringname)获取application中由name指定的名称的属性的值,若不存在,则返回null。voidremoveAttribute(Stringname)移除application中由name指定的属性。StringgetInitParameter(Stringname)获取应用的初始参数值,该参数的名称由name指定。可以在网站的配置文件web.xml中设置网站的初始参数。StringgetRealPath(Stringpath)获取与虚拟路径对应的物理存储路径,7.5.1application对象的使用,例7.5使用application对象发布信息相关文件:web77_5exinputMsg.jspweb77_5exaddMsg.jspweb77_5exshowMsg.jsp,7.5.2任务实现,要将在线用户的名单显示在页面上,应从以下几个方面完成:1.在用户登录成功后,应将用户名保存到application对象中,可以向量的形式保存用户名单,然后将此向量保存到application中。2.当用户登录成功后,页面导航条中原来的“登录”链接可改为“退出”链接。当用户点击了“退出”链接后,将用户名从名单列表中清除。3.将在线名单显示在页脚区域,可将该区域的内容编写为一个单独的文件,而后在其它所有的页面中用指令或动作包含此文件。,7.5.2任务实现,请按照教材7.5.2小节的提示,修改相应的页面代码,尝试完成在线会员的名单显示。,7.6使用Cookie完成自动登录功能,7.6.1任务提出有时,用户希望登录一次后,在一段时间内都能免去登录的步骤,即网站可提供自动登录的功能。通过Cookie机制可实现这一需求。,7.6.2Cookie的使用,Cookie是一种能够让Web服务器把少量数据储存到客户端的硬盘或内存,之后又能从客户端读回数据的一种技术。Cookie的作用与JSP的内置对象session有些相似,都可以保存某个客户端的信息。但是,Cookie将信息保存在客户端,而session却将信息保存在服务器上;由于Cookie的信息往往保存在硬盘上,因此,它保存信息的时间通常比session更长。,7.6.2Cookie的使用,JSP中对Cookie的读写是通过request对象和response对象实现的。,7.6.2Cookie的使用,使用Cookie的基本方法是:1.创建Cookie对象Cookiec=newCookie(username,Jerry);该构造方法的2个参数依次表示Cookie的名称和值,这里的值只能是字符串类型。2.设置Cookie的有效时间c.setMaxAge(30*24*60*60);时间的单位为秒,当该时间数为0时,表示删除Cookie,为负值时则在关闭浏览器后删除Cookie.3.将Cookie信息发往客户端response.addCookie(c);4.读取Cookie信息Cookiecks=request.getCookie();Stringname=cks0.getName();Stringvalue=cks0.getValue();,7.6.2Cookie的使用,例7.6Cookie的写入与读取页面setCookie.jsp将用户名保存到客户端的Cookie中,保存期为30天;而页面getCookie.jsp则读取保存在客户端Cookie中的用户名。代码见下页。,7.6.2Cookie的使用,主要代码setCookie.jsp:主要代码页面getCookie.jsp,7.6.3任务实现,请按照教材7.6.3中的相关提示,修改原登录功能中的login.jsp、chkLogin.jsp及head.jsp的代码,完成用户的免登录功能。,7.6.4重点提示,通过Cookie机制或session对象均可保存某客户端的信息,但二者之间存在着明显的差别:Cookie信息保存在客户端的硬盘或内存中,而session对象保存在服务器的内存中在Cookie中保存的信息都是字符串,而保存在session中的可以是其它类型的对象Cookie通常用来较长时间地保存客户端的信息Cookie不是JSP的内置对象。,本章小结,本章以登录功能的实现为例,学习了以下内容:通过JDBC访问数据库的方法利用include指令或jsp:include动作实现页面包含session对象的使用application对象的使用Cookie的使用,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!