240 likes | 518 Views
Web 应用中的全局变量. 1.cookie 技术 2.sendRedirect() 方法 3. 隐藏表单技术 4.session 技术. Cookie( 小甜饼 ) 技术. 服务器在客户端保存用户的信息,就是 Cookie 技术。 这些信息 数据量并不大 ,服务器需要时可以从客户端读取,一般保存在客户端 C:Document and Settings 目录里 。. Cookie 在 Web 应用中的表现. 1. 保存用户名、密码,在一定时间内不用登录。 2. 记录用户访问网站的喜好 ( 例如网站背景音乐等 )
E N D
Web应用中的全局变量 • 1.cookie技术 • 2.sendRedirect()方法 • 3.隐藏表单技术 • 4.session技术
Cookie(小甜饼)技术 • 服务器在客户端保存用户的信息,就是Cookie技术。 • 这些信息数据量并不大,服务器需要时可以从客户端读取,一般保存在客户端C:\Document and Settings目录里。
Cookie在Web应用中的表现 • 1.保存用户名、密码,在一定时间内不用登录。 • 2.记录用户访问网站的喜好(例如网站背景音乐等) • 3.网站的个性化服务,例如定制服务、内容等。例如订阅天气预报等
sendRedirect()方法 • 通过该方法将一个信息传递给下一个页面, • 例如:sendRedirect(“welcome?userName=oyhj”); • 的形式。 • 优点:传递信息的速度很快。 • 缺点:它只能传递一个字符串,而不能传递对象。
sendRedirect()方法(续) • sendRedirect(“welcome?userName=oyhj”); • (1) welcome代表要跳转到的servlet的url。 • (2) servlet名和变量名之间要有个?。 • (3) 如果传递两个以上的变量,变量之间要用&。 • (4) 如果传递的是中文,需要进行编码处理。
sendRedirect()应用案例 • 对用户登录系统进行改进,在欢迎界面显示用户的姓名。 • 源码见UserLogin(V1.1)
隐藏表单 • 隐藏表单是最常见的一种方式,也是最简单的一种。 • <form action=login> • <input type=hidden name=oyhj value=aaa> • </form> • 见源码:HiddenFormTest
Session技术 • 当用户打开浏览器访问某个网站时,网站服务器就会在它的内存为这个浏览器分配一个“空间”,这个“空间”被该浏览器独享。空间中存放的数据默认生存时间是30min,可以修改。
Session在Web中的应用 • (1) 实现网上交易平台的购物车功能。 • (2) 保存用户的登录信息 • (3)防止用户非法登录到某个页面
Session的使用 • 可以把Session理解成一张二维表,这个表有两列。每一行是Session的一个属性,行数没有限制。 • 一个属性包括两个部分,一个部分是属性的名字,另一个是属性的值。
Session的使用 • (1) 得到Session对象 • HttpSession hs=request.getSession(true); • (2) 向Session添加属性 • hs.setAttribute(String name,Object value); • (3) 从Session得到某个属性 • String name=hs.getAttribute(String name); • (4) 从Session中删除某个属性 • hs.removeAttribute(String name);
Session使用的注意事项 • 1. Session中属性默认的生存时间是30min,可以对时间进行修改。a)在web.xml文件中(服务器的)。b)在程序中修改。 • 2.Session属性的过期时间指的是间隔时间,而不是累计时间。 • 3.当某个浏览器访问网站时,服务器会给每个浏览器分配一个唯一的Session id,用来区分每个浏览器。 • 4.因为Session的属性是要占用服务器内存的,建议谨慎使用Session。
Session应用案例 • 在用户登录中,防止用户非法登录到欢迎界面。 见源码:UserLogin(V1.2)
Servlet中操作数据库 • Servlet中操作数据库,与普通java文件中操作数据库类似,需要注意的是要将JDBC驱动的jar包引入。 • (1)将JDBC驱动的jar包放到%TOMCAT_HOME%\common\lib目录中。 • (2)将JDBC驱动的jar包放到当前应用的lib目录里。 • 注: (1)是当前Web服务器下所有web应用的公共jar包。 • (2) 是当前web应用的jar包。
Servlet中操作数据库 • 将用户登录系统进行改进,用户名和密码放在数据库里。 • 创建数据库脚本: • create table userInfo • ( UserID int not null auto_increment, • UserName varchar(10), • Password varchar(10), • E-mail varchar(30), • Sex varchar(10), • Grade int, primary key(UserID)); • 源码见:UserLogin(V1.3)
Servlet中访问数据库 • 建议:Servlet里面不要写太多的业务逻辑,这样不利用修改,而且影响程序的层次结构。 • 源码见:UserLogin(V1.3.1)
在Servlet中显示图片 • (1) 在Web应用的目录下,建立一个专门用来保存图片的文件夹(例如Image)。 • (2) 在Servlet里面添加代码: • <img src=“Image/图片名”>即可。 • 源码见:UserLogin(V1.3.2) • 注:img是Html语言里面的一个标签。
Web应用中的分页技术 • 分页是任何一个网站(bbs,购物商城,blog)等必备的显示技术之一,因此有必要掌握。
分页技术 • 分页算法: • (1) int pageSize: 每页显示多少条记录 • (2) int pageCurrent:当前显示第几页 • (3) int pageCount:共有多少页 • (4) int rowCount:共有多少条记录 • if(rowCount%pageSize==0) • pageCount=rowCount/pageSize; • else • pageCount=rowCount/pageSize+1;
分页技术 • 以MySQL为例:将第N页的记录显示出来,可采用如下SQL语句: • select * from userInfo limit (N-1)*pageSize,pageSize; • 注:limit子句使用方法: • (1) select * from userInfo limit M; • 将表中前M条记录取出 • (2) select * from userInfo M,N; • 从表的第M+1条记录开始向后取出N条。 • 以SQL Server为例:将第N页的记录显示出来,可采用如下SQL语句: • Select top pageSize * from userInfo where UserID not in • (select top pageSize*(pageCurrent-1) UserID from userInfo);
分页技术案例 • 对用户管理系统进行修改,在欢迎界面分页显示所有合法用户的相关信息。 • 见源码:UserLogin(V1.4)
利用超链接显示第几页 • 利用超链接将分页的个数显示出来,用户可以随意查看第几页的内容。 • 在Welcome页面完成超链接,本质是Welcome自己连接自己,但是要将“第几页的信息”传递进来。 • 源码见:UserLogin(V1.4.1)
测试分页的效率 • 实际应用中,一张表中的记录会有十几万条,甚至上百万条。扩大表中的记录个数,查看分页效率如何。 • Insert into userInfo(UserName,Password,E-mail,Sex,Grade) select UserName,Password,E-mail,Sex,Grade from userInfo • 采用该SQL语句,表中记录成2的指数倍增加。
显示上一页和下一页 • 如果要分的页数大多,也不利用用户选择,此时可添加上一页和下一页功能。 • 源码见:UserLogin(V1.4.2)