您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第六章 JSP语法之隐式对象
第六章JSP语法之隐式对象本章主要内容6.1简介6.2与输入输出有关的隐式对象6.3与Servlet有关的隐式对象6.4与错误有关的隐式对象6.5与作用域通信有关的隐式对象6.6属性和范围6.7总结6.8练习6.1简介JSP隐式对象是Web容器加载的一组类的实例,它不像一般的Java对象那样用“new”去获取实例,而是可以直接在JSP页面使用的对象。JSP提供的隐式对象分为4个主要类别,下表列出了JSP提供的九个隐式对象及其分类。6.2与输入输出有关的隐式对象6.2.1request对象在JSP网页中,request对象是实现javax.servlet.http.HttpServletRequest接口的,HttpServletRequest接口所提供的方法,可以将它分为四大类:取得请求参数的方法存取和取得属性的方法取得请求HTTP标头的方法其他方法,如:取得请求的URL、IP和session等最终要的还是要分清取得请求参数的方法,如下表所示6.2与输入输出有关的隐式对象6.2.1request对象在这里,我们不再赘述每一个方法,如需使用它们的时候,请查看API帮助。6.2与输入输出有关的隐式对象6.2.2response对象response隐式对象处理JSP生成的响应,然后将响应发送给客户端。Response对象是实现javax.servlet.http.HttpServletResponse接口。其中常用的方法我们介绍如下三个,其它的方法如果需要请查看API帮助。voidsetHeader(Stringname,Stringvalue);作用是设定标头。它还有两个类似的方法voidsetDateHeader()和voidsetIntHeader()。我们后边介绍。首先我们来看设定页面的缓存方式。如果是HTTP/1.0,我们通过如下方式设定response.setHeader(Pragma,no-cache);6.2与输入输出有关的隐式对象6.2.2response对象如果是HTTP/1.1的情况,我们通过下边方式来设定。response.setHeader(Cache-Control,no-cache);如果我们想让网页自动更新,则要用到setIntHeader()方法和“Refresh”标头,使用方法如下:response.setIntHeader(Refresh,3);6.2与输入输出有关的隐式对象6.2.2response对象voidsetContentType(Stringname);作用是设置作为响应生成的内容的类型和字符编码。voidsendRedirect(Stringname);作用是发送一个响应给浏览器,指示其请求另一个URL。下面我们来看一个实例:首先,创建response1.jsp,其中用到了上述方法,并重定向到response2.jsp。response1.jsp的代码如例所示。%@pagelanguage=javacontentType=text/html;charset=UTF-8pageEncoding=UTF-8%htmlhead6.2与输入输出有关的隐式对象metahttp-equiv=Content-Typecontent=text/html;charset=UTF-8title直接跳转到response2.jsp/title/headbody%response.setContentType(text/html;charset=UTF-8);response.sendRedirect(response2.jsp);%/body/html6.2与输入输出有关的隐式对象6.2.2response对象下面我们来创建response2.jsp。我们在里边显示了response1.jsp中设定的ContentType,并设定每5秒画面自己刷新一次。代码如例所示。%@pagelanguage=javacontentType=text/html;charset=UTF-8pageEncoding=UTF-8%htmlheadmetahttp-equiv=Content-Typecontent=text/html;charset=UTF-8title自刷新/title/head6.2与输入输出有关的隐式对象6.2.2response对象bodyresponse的content类型为:%=response.getContentType()%br%response.setIntHeader(Refresh,5);%/body/html6.2与输入输出有关的隐式对象6.2.2response对象这时,我们看看执行结果,注意底下的刷新条,会不会每5秒刷新一次。如图。6.2与输入输出有关的隐式对象6.2.3out对象out对象用于向客户端输出数据out对象常用方法:print():在页面中打印出字符串信息htmlbody%out.print(helloACCP);%/body/html6.3与Servlet有关的隐式对象6.3.1page对象page对象代表JSP本身,更准确地说,它代表JSP被转译后的Servlet,因此,它可以调用Servlet类所定义的变量和方法。它是java.lang.Object类的一个实例。不过,page很少在JSP中使用,一般使用前面学过的page指令即可。例的page.jsp为我们展示了如何通过page对象获得Servlet信息。执行结果如图所示。%@pageinfo=这是page对象的例子language=javacontentType=text/html;charset=UTF-8pageEncoding=UTF-8%html6.3与Servlet有关的隐式对象6.3.1page对象headmetahttp-equiv=Content-Typecontent=text/html;charset=UTF-8titlepage对象/title/headbody%=((HttpJspPage)page).getServletInfo()%/body/html6.3与Servlet有关的隐式对象6.3.1page对象上列运行效果如图所示:6.3与Servlet有关的隐式对象6.3.2config对象config对象存储Servlet的一些初始信息与page对象一样很少使用。config对象是javax.servlet.ServletConfig接口的一个实例。下面我们通过一个例子来演示通过config对象来获得web.xml中设定的Servlet初始参数值6.4与错误有关的隐式对象与错误有关的隐式对象只有一个就是exception对象。JSP页面执行后,会在网页上显示内容。如果执行JSP过程中出现错误,JSP页面的执行就会终止。exception对象就是用于处理JSP页面中的错误。在这里我们再举一个简单的例子,我们来写一个JSP来做除数为0的计算,并显示出错误信息。我们先来创建div0.jsp,代码如例所示。6.4与错误有关的隐式对象%@pagelanguage=javacontentType=text/html;charset=UTF-8pageEncoding=UTF-8errorPage=div0exception.jsp%htmlheadmetahttp-equiv=Content-Typecontent=text/html;charset=UTF-8title除数为0的计算/title/headbody%intcnt=5/0;%/body/html6.4与错误有关的隐式对象现在我们来创建异常处理页面div0exception.jsp,代码如例所示。%@pagelanguage=javacontentType=text/html;charset=UTF-8pageEncoding=UTF-8isErrorPage=true%%@pageimport=java.io.PrintWriter%htmlheadmetahttp-equiv=Content-Typecontent=text/html;charset=UTF-8title除数为0的计算错误处理/title/headbody除数为0错误:%=exception%br%exception.printStackTrace(newPrintWriter(out));%/body/html6.4与错误有关的隐式对象注意:作为错误处理对象的JSP必须设定page指令中的isErrorPage属性为“true”。而捕获错误的JSP必须设定page指令中的errorPage属性为处理错误的页面URL。而且,printStackTrace()函数的参数要为PrintWriter而不是JspWriter。运行结果如图所示。当我们迁移到div0.jsp时发生除数为0错误,直接跳转到处理错误的div0exception.jsp。6.5与作用域通信有关的隐式对象6.5.1session对象session对象用来存储有关用户会话的所有信息session对象常用方法:voidsetAttribute(Stringkey,Objectvalue):以键/值的方式,将一个对象的值存放到session中ObjectgetAttribute(Stringkey):根据名称去获取session中存放对象的值session.setAttribute(name,admin);Stringname=(String)session.getAttribute(name);6.5与作用域通信有关的隐式对象6.5.1session对象下面我们就来举一个例子来看看这些方法。sessionfun.jsp代码如例%!publicStringfmt(Datedate){SimpleDateFormatsdf=newSimpleDateFormat(yyyy/MM/ddHH:mm:ss);returnsdf.format(date);}%%session.setAttribute(user,admin);session.setMaxInactiveInterval(5);%6.5与作用域通信有关的隐式对象6.5.1session对象bodysession生成时间:%=fmt(newDate(session.getCreationTime()))%brsessionID:%=session.getId()%br最后发送请求时间:%=fmt(newDate(session.getLastAccessedTime()))%br最大session不活动时间:%=session.getMaxInactiveInterval()%brahref=showsession.jsp显示存放在session中的值/a/body6.5与作用域通信有关的隐式对象6.5.1session对象在例中,我们往session中存入key为user值为admin的数据对,然后设定session会在5秒没有任何操作的情况下失效。并显示session的ID,生成时间等等的内容。在最下边,有一个连接迁移到另一个页面showsession.jsp中显示session中user:admin的数据对。showsession.jsp代码如例所示bodyuser:%=session.getAttribute(user)%/body。6.5与作用域通信有关的隐式对象执行结果如图所示。6.5与作用域通信有关的隐式对象此时,我们点击“显示存放在session中的值”链接,页面显示结果如图所示。6.5
本文标题:第六章 JSP语法之隐式对象
链接地址:https://www.777doc.com/doc-3870970 .html