《第8章JSP内置对象(4学时).ppt》由会员分享,可在线阅读,更多相关《第8章JSP内置对象(4学时).ppt(60页珍藏版)》请在三一文库上搜索。
1、Java与J2EE架构,计算机学院,第8章 JSP内置对象,8.1 request对象 8.2 reponse对象 8.3 session对象 8.4 application对象 8.5 out对象,8.1 request对象,request对象封装了客户端提交的数据信息。 用request对象的相关方法可获得提交的各种数据。,request对象方法示例,1. 获取客户端和服务器端参数 【GO】 2. 获取客户端发送给服务器端的参数值: String getParameter(String name) 【GO】 String getParameterValues(String name) 【G
2、O】 3. 获取请求中所有参数的集合 Enumeration getParameterNames() 【GO】,【return】,1. 获取客户端和服务器端参数示例, 请求方式: 请求用的协议: 请求的文件: 响应请求的服务器名称: 响应请求的服务器的端口号: 获取发出请求的客户端IP地址: 获取发出请求的客户端主机名: 获取发出请求的客户端端口号: “/“的真实路径: 表单提交来的值: ,【return】,2. request.getParameter(),max用函数实现, Max( , , ) ,b) if(ac) return a; else return c; else if(bc)
3、 return b; else return c; % ,max.jsp,练习,全错或不选择, 诗人李白是中国历史上哪个朝代的人: 宋朝 唐朝 明朝 元朝 小说红楼梦的作者是: 曹雪芹 罗贯中 李白 司马迁 ,index.jsp, 您得了分 ,answer.jsp,什么功能?,【return】,多项选择如何操作?, 姓名 选出你喜欢吃的水果: 苹果 西瓜 桃子 葡萄 ,input.html,request.getParameterValues(), 你好, ,getParam.jsp,思考问题 如果value值为中文? 如果不知变量名?,request对象获取客户提交汉字的乱码问题,首先,将获
4、取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个属组转化为字符串对象即可。 如: String str=request.getParameter(“name“); byte a=str.getBytes(“ISO-8859-1“); str=new String(a);,【return】,3. request.getParameterNames(),stuID,stuName, 学号: 姓名: ,获取变量名,参考,show.jsp, e = request.getParameterNames(); while(e.hasMoreElements() str=
5、e.nextElement(); out.println(str+“:“+request.getParameter(str)+“); %,枚举类型,java.util.Enumeration,boolean hasMoreElements() 测试此枚举是否包含更多的元素。 Object nextElement() 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素; 返回的是Object对象,需强制转换为原有类型。,Iterator 接口逐渐取代Enumeration接口,【return】,8.2 reponse对象,response对象代表服务器对客户端请求的响应,用于向客户
6、端发送数据。,response对象方法示例,1. 设置指定名称的HTTP头的值 void setHeader(String name, String value) 2. 把响应发送到另外一个位置进行处理 void sendRedirect(String location),【return】,1. reponse.setHeader()方法,设置页面自动刷新: response.setHeader(“refresh“, “秒数“); 设置定时跳转页面: response.setHeader(“refresh“, “秒数 ; URL=页面名称“) ;,示例1, %,示例2,秒钟能自动更新,方法1:
7、java.util.Date类,Date today=new Date(); getYear():年份 y 由整数 (y-1900) 表示 getMonth():月份由0至11的表示:0是一月,11是十二月。 getDate():月份中的某一天,值在 1 和 31 之间。 getHours():小时由从 0 至 23 的表示 getMinutes():分钟由 0 至 59 的表示 getSeconds():秒由 0 至 61 的表示, 值 60 和 61 只对闰秒发生。,使用Date类,方法2:java.util.Calendar类,Calendar now = Calendar.getIns
8、tance(); 主要用now.get()方法 get(Calendar.YEAR) get(Calendar.MONTH) get(Calendar.DATE) 或 get(DAY_OF_MONTH) get(Calendar.HOUR) 0-11(12小时制) get(Calendar.HOUR_OF_DAY) 0-23(24小时制) get(Calendar.MINUTE) get(Calendar.SECOND),Calendar符号常量(要大写),使用Calendar类,示例3,【return】,设置定时跳转页面: response.setHeader(“refresh“, “5 ;
9、 URL=http:/“) ;,如何显示倒计时?,2. reponse.sendRedirect()方法,注意:跳转后客户端看到的是新页面地址。,练习,reponse.sendRedirect()跳转实现,简单用法, 页面1 页面2 ,但此例value只是是数字串,参考, 请选择: 武汉科技大学 华中科技大学 武汉大学 ,go.jsp,sendRedirect()传递参数,传递参数示例:response.sendRedirect(“1.jsp?id=1234“),request.getParameter(“id“),1.jsp,思考,区别: response.sendRedirect( ) ,
10、主要区别,【return】,引例, 姓名 ,1.jsp,2.jsp,8.3 session对象,session对象代表服务器与客户端所建立的会话. 从一个客户端打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话. 为什么需要session? 当一个客户端访问一个服务器时,可能会在这个服务器的多个页面之间反复跳转,服务器应当通过某种办法来识别这是来自同一个客户端的不同请求,这种办法通常就是使用session对象。 session对象可以实现在一个会话期间的多页面间的数据共享/传递。,理解session,HTTP是无状态(stateless)协议,Web服务器对每一个
11、客户端请求都没有历史记忆. session用来保存客户端状态信息,由Web服务器写入,存于客户端. Web服务器通过读取客户端提交的session来获取客户端的状态信息。,session对象的id,当一个客户首次访问服务器上的一个jsp页面时,jsp引擎将产生一个session对象,同时分配一个String类型的id号 jsp引擎同时将这个id号发送到客户端,存放在cookie中,这样session对象和客户之间就建立了一一对应的关系. 当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对
12、应关系消失。 当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。,session.getId()方法, 你的session对象的ID是: ,session对象方法示例,设置和获取session属性值 void setAttribute(String name,Object value) Object getAttribute(String name),设置和获取session属性值,session.setAtrribute(String name, Object value) 用value来初始化session对象某个属性(name指定)的值; 如果指定的
13、属性不存在,则新建一个;如果已存在,则更改name属性的值。 session.getAtrribute(String name) 获得由name指定名称的session对象属性的值; 方法返回的是一个Object对象,因此,对返回的对象要用强制转换把得到的对象转换为此对象原来的类型. 如果属性不存在,返回空值。,基本用法示例,index.jsp,1.jsp,字符串类型值,需强制转换,问题讨论,问题1: 在第一次运行index.jsp后且不关闭,下一次直接运行1.jsp有结果吗?如果关闭又如何? 问题2: 如果没有运行index.jsp,而先运行1.jsp有结果吗? 问题3: 如果将 sessi
14、on.setAttribute(“id“,“1234“); 改为 session.setAttribute(“id“,1234);,示例,index.jsp,1.jsp,字符串类型值,需强制转换,index.jsp,1.jsp,int类型, 姓名 ,session登录问题,logcheck.jsp,names=new ArrayList(); names.add(Name); session.setAttribute(“lognames“,names); hasLog=true; promt=“ 欢迎“+Name+“!你的名字已经写入session “;,for(int i=0;inames.
15、size();i+) String temp=(String)names.get(i); if(temp.equals(Name) promt=Name+“你已经登录“; hasLog=true; break; ,names.add(Name); session.setAttribute(“lognames“,names); hasLog=true; promt=“ 欢迎“+Name+“!你的名字已经写入session “;,思考问题:(3)与(1)有什么区别?,ArryaList基本用法,ArrayList类是个 java.util 包中的类库,存放的是object类型,要从数组列表中提取元
16、素时,需要进行类型转换. 声明形式: ArrayList a = new ArrayList(); 无需指定大小,可自动改变大小 常用方法: add() 添加新元素:a.add(object); size() 代替 length 计算元素的个数:a.size() get(i) 代替 ai 访问元素;,ArrayList a=new ArrayList(); for ( int i=0; i10; i+) a.add(i); for ( int i=0; ia.size(); i+) int t=(Integer)a.get(i); System.out.println(t+1); , 姓名 ,
17、补充:session的注销,index.jsp,logcheck2.jsp,logout.jsp,简易购物车(session版),buy1.jsp,buy2.jsp,index.jsp,display.jsp,关键点: 标签跳转后将会在新页面中产生新的request., 欢迎购物 ,index.jsp, 各种肉大甩卖,一律十块: 猪肉 牛肉 羊肉 买点别的 查看购物车 ,buy1.jsp,采用不同名称便于session操作, 各种球大甩卖,一律八块: 篮球 足球 排球 买点别的 查看购物车 ,buy2.jsp, 您的购物车: “); /再复制5个,依次改为s2s6 % 返回 ,display.
18、jsp,【return】,处理汉字值,8.4 application对象,application对象负责提供应用程序在服务器中运行时的一些全局信息,客户端使用的application对象都是一样的(实现用户间数据的共享)。 服务器一旦启动,就会自动创建application对象,并一直保持,直到服务器关闭。 在此期间,在任何地方对application对象相关属性的操作,都将影响到其他用户对此的访问。,application对象方法示例,获取服务器端基本信息 【GO】 设置和获取application属性值 【GO】 void setAttribute(String key, Object o
19、bj) Object getAttribute(String key),获取服务器端基本信息, 应用服务器名及版本号: 返回/index.jsp虚拟路径的真实路径: 服务器支持的Servlet API的主版本号: 服务器支持的Servlet API的副版本号: ,【return】,设置和获取application属性值,application.setAttribute(String key, Object obj) 将对象obj添加到application对象中,并为添加的对象添加一个索引关键字key. application.getAttribute(String key) 获取application对象中含有关键字key的对象。由于任何对象都可以添加到application中,因此用此方法取回对象的时候,需要强制转化为原来的类型。 如果属性不存在,返回空值。,示例网站计数器,程序参考, 您是第个用户。 ,在浏览器中浏览:http:/localhost:8080/testJSP/index.jsp,严格来说,【return】,8.5 out对象,out对象用来向客户端发送数据(文本级),其内容将是浏览器需要显示的内容。 常用方法:pirnt()和println() 。 可以通过out对象直接向客户端写一个由程序动态生成HTML文件。,【完】,
链接地址:https://www.31doc.com/p-2257902.html