Download - Web 应用中的全局变量
Web应用中的全局变量
1.cookie 技术 2.sendRedirect() 方法 3. 隐藏表单技术 4.session 技术
Cookie(小甜饼 )技术 服务器在客户端保存用户的信息,就是 Cooki
e 技术。
这些信息数据量并不大,服务器需要时可以从客户端读取,一般保存在客户端 C:\Document and Settings 目录里。
Cookie在Web应用中的表现 1. 保存用户名、密码,在一定时
间内不用登录。
2. 记录用户访问网站的喜好 ( 例如网站背景音乐等 )
3. 网站的个性化服务,例如定制服务、内容等。例如订阅天气预报等
sendRedirect()方法 通过该方法将一个信息传递给下一个页面, 例如: sendRedirect(“welcome?userName
=oyhj”); 的形式。
优点:传递信息的速度很快。 缺点:它只能传递一个字符串,而不能传递对
象。
sendRedirect()方法 (续 ) sendRedirect(“welcome?userName=oyh
j”);
(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
Name Value
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 页的记录显示出来,可采用如下 S
QL语句: 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 userI
nfo);
分页技术案例 对用户管理系统进行修改,在欢迎界面分页
显示所有合法用户的相关信息。
见源码: 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)