第5部分内置对象.ppt
第五部分 Jsp内置对象,开始讲授,5.1 request对象,当客户访问服务器页面时,会提交一个HTTP请求。reauest对象就是对HTTP请求包的封装。因此,使用request对象的方法,可以获取客户端和服务器端信息。如客户端主机名、IP地址、传递参数名、参数值、服务器主机名和IP地址等等。,1. 获取客户提交信息,request. getParameter(“组件名称”); 客户通常使用HTML表单向服务器的某个JSP页面提交信息。格式是: 接受数据的组件(0n个) 数据提交控件 ,实例讲解,ex5-1.jsp 分页提取表单内容 ex5-2.jsp 同一页面提取表单内容,2. 获取地址栏变量值,request. getParameter(“变量名称”); 通常以链接或表单提交时附加变量。 第一个变量前要使用“?”,以后的变量之间要使用“&“。 a.jsp?id=123&age=23&name=张三,实例讲解,ex5-3.jsp 提取地址栏变量值,汉字处理,request对象获取客户提交的汉字时,会出现乱码,处理方法:首先,将获取的字符串用ISO-8859-1进行编码,并放入字节数组中,再将数组转化为字符串对象。 String str= request.getParameter(“name“); str=new String(str.getBytes(“ISO-8859-1“), “GBK“);,Vector向量类,Vector是按照插入的顺序进行排列,可以有重复值,新值替换原值。 Vector内部是以Array实现的,可以通过索引来访问元素,但只能存放Object类型,不能存放基本类型,如整数10,得用new Integer(10)构造Integer类对象再放进去。,Hashtable散列表,Hashtable散列表是以关键字为查找对象,其中关键字不能重复,其大小会根据需要自动增大,可以存放基本类型数据。 相关方法: 对象.put(key,value); String str=(String)对象.get(key); /类型转换,实例讲解,ex5-4.jsp 利用request对象提取系统信息,3. 获取环境信息,实例讲解,ex5-5.jsp 用户注册,利用散列表实现,5.2 response对象,客户访问服务器使用的是HTTP请求包,服务器响应客户时,即向客户发送信息时,使用的是HTTP响应包 ,系统将HTTP响应包封装为response对象。在JSP页面中,可以使用response对象的方法动态控制响应方式,向客户端发送数据。,response对象常用方法,setContentType(String t) 设置页面输出类型 setHeader(String h,String v) 添加响应头 sendRedirect(URL u) 页面重定向 setStatus(int n) 设置响应状态行,实例讲解,ex5-6.jsp 以不同类型方式查看页面内容 ex5-7.jsp 设置响应头,添加页面刷新 ex5-8.jsp 利用sendRedirect进行页面重定向 ex5-9.jsp 设置页面状态行,5.3 session对象,客户与服务器是通过HTTP协议通讯。但HTTP协议是一种无状态协议。即一个客户向服务器发送请求,然后服务器返回响应,连接断开。服务器端不保留客户与服务器每一次连接的信息,因此,服务器无法判断上下两次连接是否是同一客户。要想记住客户的连接信息,必须使用会话对象(session)。session对象记录了每个客户与服务器的连接信息。,session对象(续),使用 session可以记录同一客户信息。 每个用户第一次连接某个服务目录时,服务器分配给该用户一个ID号,以Cookie的形式保存在客户端,服务器以此来判断是否为同一用户。用户不同,服务目录不同,ID值不同。 生存周期 关闭浏览器、关闭服务器、程序结束session对象,session对象(续),建立session变量 session. setAttribute(“key名称”,值); 取得session变量的值 session.getAttribute(“key名称”); 返回值为Object类型,需强制转换 获取session对象的编号 session.getId(),session对象(续),返回所有session的变量名称的枚举对象 session.getAttributeNames() 删除session变量 session.removeAttribute(String name); 结束session对象(销毁) session.invalidate() 判断是否是一个新的客户 session.isNew(),实例讲解,ex5-10.jsp 利用session记录用户信息 ex5-11.jsp 以文件方式记录在线访问量,5.4 application对象,我们已经知道,不同的客户与服务器连接时有不同的session对象,同一客户浏览同一服务器的不同目录时,有不同的session对象。 与session对象不同的是application对象。服务器启动后,就产生了application对象。所有客户的application对象是相同的一个,即,所有客户共享这个内置的application对象。,application对象(续),建立application变量 application.setAttribute(“id”,”01002”); 返回application的值(返回Object对象) application. getAttribute(“id”); 删除application变量 application. removeAttribute(“id”); 返回所有application变量 application. getAttributeNames(); 返回Enumeration对象,实例讲解,ex5-12.jsp application实现留言板,5.5 out对象,用来向客户端输出数据。 out.print(); /输出无回车 out.println(); /输出加回车 out.newLine(); /输出新行 以上方法是指向客户端产生的HTML代码中加回车或新行,不是指显示时。,心得体会,用内置对象request的getParameter()方法获取url的参数和表单的信息。经过测试,在相同name的情况下,url的参数会优先于表单的参数。 有时或out.print(“欢迎”)会出现乱码。解决的办法: % new String(“欢迎” .getBytes(“ISO-8859-1); Application对象即使用户与服务器断开,依然存在。直到服务器关闭,才会结束。例如用Application对象可以实现储存网站的访问人数。,