《JSP应用技术与Ajax》 课件_第1页
《JSP应用技术与Ajax》 课件_第2页
《JSP应用技术与Ajax》 课件_第3页
《JSP应用技术与Ajax》 课件_第4页
《JSP应用技术与Ajax》 课件_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1简介定义:J2EE(JavaEnterpriseEdition)是一个开发分布式企业级应用的规范和标准JavaSEXMLJDBCJavaBeanJSPServletHibernateStrutsJNDIJSFSpringEJBWebServiceJava2平台分类J2SE适用于桌面系统的Java2平台标准版(Java2PlatformStandardEdition)J2ME适用于小型设备和智能卡的Java2平台Micro版(Java2PlatformMicroEdition)J2EE适用于创建服务器应用程序和服务的Java2平台企业版(Java2PlatformEnterpriseEdition)J2EE是什么J2EE(Java2Platform,EnterpriseEdition)提供了一个平台无关的,可移植的,多层的,分布式的基于组件的企业级应用Java开发模型。J2EE是规范而不是产品。企业级开发产品供应商通过实现J2EE规范,开发基于J2EE的产品J2EE是一个体系结构,它包含了很多技术,和服务。利用它可以简化企业级项目的开发、部署和管理相关的复杂问题企业应用的特点企业应用系统之目的:扩展业务范围,降低经营成本,缩短与客户之间相应时间。简捷而快速的服务于企业、合作伙伴和雇员之间,同时为用户提供更为广泛的服务。企业应用系统之特点:高可用性(Availability)互用性(Interoperability)安全性(Security)可伸缩性(Scalability)多层分布式模型J2EE提出了多层分布式开发模型将应用逻辑按功能划分为组件根据他们所属层次分布到不同机器上J2EE与后续课程的关系Struts、Hibernate、Spring,它们都是框架框架,即Framework。其实就是某种应用的半成品,就是一组组件,用来完成自己的系统简单说就是使用别人准备好的一切,来实施自己的项目装修后的房子毛坯房可以按照自己的意图装修毛坯房就类似一个框架1.2J2EE体系架构

1.2.2【J2EE三层架构】页面显示技术HTMLJavaScriptAjax技术1.2J2EE体系架构

1.2.2【J2EE三层架构】中间层技术JSP显示动态内容的服务器网页JSTL辅助JSP显示动态内容的标准标签库Servlet接收客户请求,并做出响应的Java程序Servlet是中间件技术的重要部分,它控制着其他的组件JavaBeanJavaEE的模型组件中间层框架技术Struts框架Struts框架主要是扩展了Servlet1.2J2EE体系架构

1.2.2【J2EE三层架构】数据库层技术JDBC技术JDBC(JavaDatabaseConnectivity):Java数据库连接JDBC用来访问数据库和操作数据库表中数据数据层框架技术HibernateJavaBean数据库JDBC访问返回数据Hibernate数据库访问返回数据JavaBean1.3J2EE的优越性保留现存的IT资产:高效的开发支持异构环境可伸缩性稳定的可用性:2.1Tomcat目录结构与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。Tomcat

|binTomcat:存放启动和关闭tomcat脚本;

|confTomcat:存放不同的配置文件(server.xml和web.xml);

|doc:存放Tomcat文档;

|lib/japser/common:存放Tomcat运行需要的库文件(JARS);

|logs:存放Tomcat执行时的LOG文件;

|webapps:Tomcat的主要Web发布目录(包括应用程序示例);

|work:存放jsp编译后产生的class文件;2.2Tomcat下载,安装以及在Eclipse中的配置

可以到/tomcat

上去下载Tomcat的安装包安装Tomcat把Tomcat解压缩包拷入合适的地址:如的:D:\apache-tomcat-6.0.18打开命令提示程序,运行安装程序,根据提示配置环境变量C:\Users\db2admin>D:\apache-tomcat-6.0.18\bin\startup.bat配置环境变量:CATALINA_HOME=D:\apache-tomcat-6.0.18JAVA_HOME=C:\ProgramFiles\Java\jdk1.6.0_12Eclipse中添加Tomcat插件tomcat插件安装:插件tomcatPluginV321.zip在Eclispe的根目录下添加link文件:D:\eclipse\links\tomcat.linkLink文件的内容为:path=C:/eclipse/plug/tomcatPluginV321tomcatPluginV321.zip解压后的位置D:\eclipse\plug\tomcatPluginV321\eclipse\plugins\com.sysdeo.eclipse.tomcat_3.2.1重启Eclispe2.2Tomcat下载,安装以及在Eclipse中的配置注意:我们目前使用的是Tomcat6.0.18.下载目录是bin/而不是src/.在Eclipse中,可以直接将tomcat和Java项目绑定起来。步骤如下:(1)在Eclipse中建立一个Java项目TomcatProject2.2Tomcat下载,安装以及在Eclipse中的配置(2)【点击Property】,在【Tomcat】项目中,勾选上”IsaTomcatProject”。在【Contextname】中设定【WebContext】路径,在“Subdirectorytosetaswebapplicationroot”中设置放置web程序文件的目录。点击”Apply”.2.2Tomcat下载,安装以及在Eclipse中的配置右击【TomcatProject】项目,在【TomcatProject】栏目中,选中“UpdatecontextDefinition”,即可。2.2Tomcat下载,安装以及在Eclipse中的配置进入【Windows】-

【Preference】,点击【Tomcat】

【Advanced】,点击【Browse】,目录找到Tomcat的目标目录,点击确定。3.1简介Servlet是一个Java程序,是在服务器上运行以处理客户端请求并做出响应的程序Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面Servlet是位于Web服务器内部的服务器端的Java应用程序,像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势随着Internet的兴起,现在大多数电脑用户更加习惯Internet的Web应用。用Web应用的交互如图所示。3.2

HTTP基础知识

3.2.1HTTP请求、响应和头信息

客户端发送的请求消息为字符流,由请求行(包括方法、统一资源标识符URI和HTTP协议版本)和头信息组成。下面是一个合法的HTTP请求消息的例子。我们通过这个例子来大概了解一下HTTP请求消息。

GET/ntctest/page/jsp02/easy.jspHTTP/1.1Host:localhost:8080User-Agent:Mozilla/5.0(Windows;U;WindowsNT6.0;zh-CN;rv:1)Accept:text/html,application/xhtml+xml,application/xml,*/*Accept-Language:zh-cnAccept-Charset:gb2312,utf-83.2

HTTP基础知识3.2.1HTTP请求、响应和头信息

请求行指定了用GET方法,访问一个名为/ntctest/page/jsp02/easy.jsp的资源,并指定请求使用HTTP/1.1协议版本。Host首部可以像服务器通知URL中所用的主机名。User-Agent首部包含了发出请求的浏览器的类型相关信息。服务器可以使用此信息向不同类型的浏览器发送不同类型的响应。Accept首部提供了浏览器所接受语言和文件格式的有关信息。这些首部可以用于针对浏览器的功能和用户的首选项(如使用某种所支持的图像格式和首选语言)对响应加以调整。请求信息由服务器进一步处理,并生成相应的响应,响应消息由状态行和头信息组成。下面是响应消息的事例。3.2

HTTP基础知识3.2.1HTTP请求、响应和头信息

HTTP/1.x200OKServer:Apache-Coyote/1.1Content-Type:text/htmlContent-Length:186Date:Wed,17Jun200900:57:35GMTServer头部指定服务器软件。Content-Type头部指定了文档的MIME类型,如果是“text/html”指示格式化的Web文档,如果是“text/plain”只是未格式化的文本文档。Content-length头部指定文件的大小,以字节来表示。注意:这里介绍下常见的状态码:404是找不到被请求的网页时常遇到的状态码;500是服务器内部错误;503是服务器超时等,如果想具体了解,上有很详细的内容3.2HTTP基础知识

3.2.2GET和POST方法区别

以请求行的形式(地址重写)提交数据提交数据在地址栏可见,不安全具有长度的限制,255个字符以内monitor监控工具请求消息请求行标题信息方法资源名称版本GET/POSTbar01.jpgHTTP/1.1浏览器类型内容类型User-Agent:Mozilla/4.0(compatible;MSIE4.0:WindowsXPAccept:image/gif,image/jpeg,text/*,*/*3.2HTTP基础知识

3.2.2GET和POST方法区别

与Get请求不同,地址栏没有变化数据在地址栏不可见,安全理论上没有长度限制TCP/IPMonitor监控工具3.2HTTP基础知识

3.2.2GET和POST方法区别

下面我们来对比一下GET和POST方法。GET是从服务器上获取数据;POST是向服务器传送数据。在客户端,GET通过URL提交数据,数据在URL中可见;POST把数据放在form的数据体内提交。GET提交的数据最多只有1024字节;POST提交的数据量无限制。由于使用GET时,参数会显示在地址栏上,而POST不会,所以,如果这些数据是非敏感数据,那么使用GET;如果包含敏感数据,为了安全,用POST。3.3Servlet简介和优点使用JSP技术如何编写服务器动态网页?请求响应JSP页面运行执行Java代码HTML代码生成JSP使用Java

生成动态内容运行Servlet程序3.3Servlet简介和优点定义:Servlet是一个Java程序,是在服务器上运行以处理客户端请求并做出响应的程序请求

响应Servlet运行于服务器端3.3Servlet简介和优点

Server有以下优点:

可移植性强大的功能性能安全性3.4第一个Servlet例程

packagecom.ntc.sample.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/***HelloWorldServlet.*@authorNTC*/public

classFirstServletextendsHttpServlet{/**serialVersionUID.*/

private

static

final

long

serialVersionUID=2372510451801586160L;3.4第一个Servlet例程

protected

voiddoGet(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException{//设定内容类型为HTML网页UTF-8编码

resp.setContentType("text/html;charset=UTF-8");//输出页面

PrintWriterout=resp.getWriter();out.println("<html><head>");out.println("<title>FirstServletHello</title>");out.println("</head><body>");out.println("Hello!大家好!");out.println("</body></html>");out.close();}}3.4第一个Servlet例程

代码写好后,我们来设定web.xml文件,web.xml文件在我们Web项目的WEB-INF文件夹内。如图所示。

我们来详细看一看web.xml中这段关于Servlet的配置。配置一个Servlet需要配置两个标签,第一个<servlet>,一个是<servlet-mapping>。

对象outout对象用于向客户端输出数据out对象常用方法:print():在页面中打印出字符串信息response.setContentType("text/html");PrintWriterout=response.getWriter();out.println("<!DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");out.println("<HTML>");out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");out.println("<BODY>");out.print("Thisis");out.print(this.getClass());out.println(",usingthePOSTmethod");out.println("</BODY>");out.println("</HTML>");out.flush();out.close();对象request4-1request对象主要用于处理客户端请求JSP,Servlet页面request对象客户端请求请求信息对象request4-2request对象常用方法方法名称说明StringgetParameter(Stringname)根据页面表单组件名称获取页面提交数据String[]getParameterValues(Stringname)获取一个页面表单组件对应多个值时的用户的请求数据voidsetCharacterEncoding(Stringcharset)指定每个请求的编码在调用request.getParameter()之前进行设定,可以解决中文乱码问题request.getRequestDispatcher(Stringpath)返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求对象request4-4<formname="form1"method="post"action="reginfo.jsp"><tableborder="0"align="center"><tr><td>用户名</td><td><inputtype="text"name="name"></td></tr><tr><td>密码</td><td><inputtype="password"name="pwd"></td></tr><tr><td>你从哪里知道ACCP</td><td><inputtype="checkbox"name="channel"value="报刊">报刊

<inputtype="checkbox"name="channel"value="网络">网络

<inputtype="checkbox"name="channel"value="朋友推荐">朋友推荐

<inputtype="checkbox"name="channel"value="电视">电视

</td></tr><!--以下是提交、取消按钮--></table></form>String[]channels=request.getParameterValues("channel");if(channels!=null){for(inti=0;i<channels.length;i++){out.println(channels[i]);}}request.setCharacterEncoding("GBK");request.getParameter(“name”);request.getParameter("pwd");对象response2-1response对象用于响应客户请求并向客户端输出信息response对象常用方法voidsendRedirect(Stringlocation):将请求重新定位到一个不同的URLJSP/Servlet页面response对象客户端响应从服务器中检索的信息存储信息,以在响应客户端请求时发送此信息对象response2-2在首页面(input.jsp)上输入用户名、密码,提交至input2.jsp进行处理如果输入的用户名、密码都是sa,跳转至欢迎页面(welcome.jsp)<formname="form1"method=postaction="input2.jsp">用户名:<inputtype="text"name="userName">密码:<inputtype=“password"name="pwd"><inputtype="submit"value="登录"><form>input.jsp客户端重新建立链接<%request.setCharacterEncoding("GBK");Stringname=request.getParameter("userName");Stringpwd=request.getParameter("pwd");if(name.equals("sa")&&pwd.equals("sa")) response.sendRedirect("welcome.jsp");%>跳转至欢迎页面input2.jspHTML基本标签2:列表练习39列表主要分为无序(unordered)列表和有序(ordered)列表用<ul></ul>或<ol></ol>来定义边界列表中的项目用<li></li>进行标记列表可以嵌套40<ul><li>这是一个无序列表</li><li>下面是内部的一个有序列表</li><ol><li>列表项A</li><li>列表项B</li><li>列表项C</li></ol><li>列表结束</li></ul>练习41无序列表的属性type有3个选项:disc:实心圆

circle:空心圆

square:方块使用语句:

<litype="square">借东风</li>有序列表的起始编号:type=在<li>标签里使用,用于编号的数字,字母等的类型,如type=astart=

如start=2则编号从2开始,如果从1开始可以省略。列表练习43标题标签:<h1></h1>加粗:<b></b>斜体:<i></i>预格式化文本<pre></pre> 有特殊意义的字符用于纯文本时

<;<>;>

 ;不断行的空格

&;&

";“©;©水平线标签:<hr>超链接:<a></a>标签来创建,href作为属性。

知识复习列表标签主要分为无序列表和有序列表<ul></ul>或<ol></ol>

定义边界;<li></li>标记项目;列表可以嵌套;图像标签src

图像文件的URL;width

宽度;height

高度;alt

替代文本;

id

指定包含嵌入的图像文件的名称;title规定元素的工具提示文本;

border图像外边框大小;background将图片作为背景;知识复习HTML基础人机交互设计第四章JSP简介本章任务掌握JSP的定义、作用、以及页面组成掌握如何创建JSP页面掌握JSP页面的执行过程为什么需要JSP2-1为什么需要基于B/S技术的动态网页?B/S技术的特点是什么?使用动态网页,可以动态输出网页内容、同用户进行交互、对网页内容进行在线更新应用服务器IEIE解释执行HTML文件从服务器端检索到的信息返回响应客户端的请求信息发送请求访问数据库返回结果运行JSP等服务器端脚本程序1用户输入234数据库服务器为什么需要JSP2-2如何在浏览器上动态输出当前日期?<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%><html><head><title>输出当前日期</title></head><body>你好,ibm-etp!今天是<%java.text.SimpleDateFormatformater=newjava.text.SimpleDateFormat("yyyy年MM月dd日");StringstrCurrentTime=formater.format(newjava.util.Date());%><%=strCurrentTime%></body></html>显然,无法通过静态HTML完成这个效果,试一试JSP,看看是否可行运行结果什么是JSPJSP(JavaServerPages)是指:在HTML中嵌入Java脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令然后将生成的整个页面信息返回给客户端JSP页面数据库服务器应用服务器编译、执行客户端嵌入Java脚本语言1234返回页面信息JSP页面组成4-1JSP页面的元素包括:静态内容指令表达式小脚本<%Java代码%><%=Java表达式%>HTML静态文本以“<%@”开始,以“%>”结束。比如:<%@includefile="

Filename"%>声明标准动作<%!方法%>以“<jsp:动作名”开始,以“</jsp:动作名>”结束比如:<jsp:includepage="Filename"/>注释<!--这是注释,但客户端可以查看到--><%--这也是注释,但客户端不能查看到--%>JSP页面组成4-2<%@pagelanguage="java"import="java.util.*,java.text.*"contentType="text/html;charset=GBK"pageEncoding="GBK"%><html><head><title>输出当前日期</title></head><!--这是HTML注释(客户端可以看到源代码)--><%--这是JSP注释(客户端不可以看到源代码)--%><body>你好,IBM-ETP!今天是<%//使用预定格式将日期转换为字符串SimpleDateFormatformater=newSimpleDateFormat("yyyy年MM月dd日");StringstrCurrentTime=formater.format(newDate());%><%=strCurrentTime%></body></html>指令静态内容小脚本表达式注释JSP页面组成4-3在浏览器上观看运行结果查看网页源文件可以通过源代码查看到HTML注释的内容所有注释内容都不可见JSP页面组成4-4合理、详细的注释有利于代码后期的维护和阅读在JSP文件的编写过程中,共有三种注释方法:HTML的注释方法:<!--html注释-->JSP注释标记:<%--JSP注释--%>在JSP脚本中使用注释:<%//单行注释%><%/*多行注释*/%>缺点:不安全,加大网络传输负担小结1请编写一个JSP页面exercise1.jsp,要求:至少包含三种注释创建新闻发布系统的JSP页面5-1回忆第一章内容,请说明开发JSP动态网站的几个步骤创建Web项目开发步骤设计Web项目的目录结构编写代码

(创建JSP)部署、运行本章将从这里开始,带领大家创建新闻发布系统的JSP页面创建新闻发布系统的JSP页面5-2设计Web项目的目录结构:创建目录ch04:存放JSP页面创建目录CSS:存放样式表文件创建目录images:存放图片创建新闻发布系统的JSP页面5-3使用JSP模板向导创建JSP页面,共有三步:123右键点击“WebRoot”下的“ch04”,从右键菜单中选择:新建→其他在新弹出的窗口中,选择“Web”下的“JSP”,点击“下一步”在下一个新弹出的窗口中,输入文件名index.jsp,点击“完成”创建新闻发布系统的JSP页面5-4手工创建JSP页面,共有两步:12右键点击“WebRoot”下的“ch04”,选择:新建→文件在新弹出的窗口中,输入文件名index.jsp,点击“完成”创建新闻发布系统的JSP页面5-5采用你认为最方便的方式,把静态新闻发布系统的所有页面转换为JSP页面,并部署运行生活中的欢迎页面通常情况下,访问某个网站时,我们只需要知道网站的域名就可以了。比如:

现在看到的就是新浪的首页面如何设置欢迎页面欢迎页面,就是web应用的默认访问页面在配置文件web.xml中设置欢迎页面<web-app><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>假定在web应用(news)下存在一个index.jsp页面,输入http://localhost:8080/news地址时,web容器会默认调用index.jsp页面JSP执行过程2-13执行2翻译编译1请求响应Web容器处理JSP文件请求需要经过3个阶段:翻译阶段:JSP文件会被Web容器中的JSP引擎转换成Java源码编译阶段:Java源码会被编译成可执行的字节码执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP文件;处理完请求后,容器把生成的页面反馈给客户端进行显示应用服务器客户端JSP文件.java.classJSP执行过程2-2执行第二次请求响应第一次请求之后,Web容器可以重用已经编译好的字节码文件应用服务器客户端.class注意:如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译演示:JSP页面修改前后的响应速度JSP运行环境Web容器(如:Tomcat)提供JSP引擎,负责JSP文件的执行,提供JSP的运行时环境在Eclipse中部署Web应用,等同于在Web容器中部署Web应用与Eclipse中Web应用的目录结构一模一样小结2为什么JSP页面在第一次请求时会比较慢,而之后对同样的JSP页面的请求会非常快?总结<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1"%><HTML><BODYBGCOLOR="#FFFFFF"><center>欢迎登录新闻发布系统</center><tableborder="0"align="right"cellpadding="0"cellspacing="0"><tr><tdwidth="614"height="403"><imgsrc="../images/main-1.gif"width="590"height="433"alt="0"></td></tr></table></BODY></HTML>在运行welcome.jsp时,会出现什么现象?如何改正?出现中文乱码,把字符集改为:GBKWEB-INF文件夹中的内容无法对外发布,把images文件夹拖至WebRoot文件夹下第六章JSP语法之隐式对象

本章主要内容6.1简介6.2与输入输出有关的隐式对象6.3与Servlet有关的隐式对象6.4与错误有关的隐式对象6.5与作用域通信有关的隐式对象6.6属性和范围6.7总结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="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html> <head>6.2与输入输出有关的隐式对象

<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>直接跳转到response2.jsp</title> </head> <body> <% response.setContentType("text/html;charset=UTF-8"); response.sendRedirect("response2.jsp"); %> </body> </html>6.2与输入输出有关的隐式对象

6.2.2response对象下面我们来创建response2.jsp。我们在里边显示了response1.jsp中设定的ContentType,并设定每5秒画面自己刷新一次。代码如例所示。

<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>自刷新</title> </head>6.2与输入输出有关的隐式对象

6.2.2response对象

<body> response的content类型为:<%=response.getContentType()%> <br> <% response.setIntHeader("Refresh",5); %> </body> </html>6.2与输入输出有关的隐式对象

6.2.2response对象这时,我们看看执行结果,注意底下的刷新条,会不会每5秒刷新一次。如图。

6.2与输入输出有关的隐式对象6.2.3out对象out对象用于向客户端输出数据out对象常用方法:print():在页面中打印出字符串信息<html><body><%out.print("helloACCP");%></body></html>6.3与Servlet有关的隐式对象

6.3.1page对象

page对象代表JSP本身,更准确地说,它代表JSP被转译后的Servlet,因此,它可以调用Servlet类所定义的变量和方法。它是java.lang.Object类的一个实例。不过,page很少在JSP中使用,一般使用前面学过的page指令即可。例的page.jsp为我们展示了如何通过page对象获得Servlet信息。执行结果如图所示。

<%@pageinfo="这是page对象的例子"language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html>6.3与Servlet有关的隐式对象

6.3.1page对象

<head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>page对象</title> </head> <body> <%=((HttpJspPage)page).getServletInfo()%> </body> </html>6.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="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"errorPage="div0exception.jsp"%> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>除数为0的计算</title> </head> <body> <% intcnt=5/0; %> </body> </html>6.4与错误有关的隐式对象

现在我们来创建异常处理页面div0exception.jsp,代码如例所示。

<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"isErrorPage="true"%> <%@pageimport="java.io.PrintWriter"%> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>除数为0的计算错误处理</title> </head> <body>

除数为0错误:<%=exception%> <br> <% exception.printStackTrace(newPrintWriter(out)); %> </body> </html>6.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对象<body>session生成时间:<%=fmt(newDate(session.getCreationTime()))%><br>sessionID:<%=session.getId()%><br>最后发送请求时间:<%=fmt(newDate(session.getLastAccessedTime()))%><br>最大session不活动时间:<%=session.getMaxInactiveInterval()%><br><ahref="showsession.jsp">显示存放在session中的值</a></body>6.5与作用域通信有关的隐式对象

6.5.1session对象在例中,我们往session中存入key为user值为admin的数据对,然后设定session会在5秒没有任何操作的情况下失效。并显示session的ID,生成时间等等的内容。在最下边,有一个连接迁移到另一个页面showsession.jsp中显示session中user:admin的数据对。showsession.jsp代码如例所示<body>user:<%=session.getAttribute("user")%></body>。6.5与作用域通信有关的隐式对象

执行结果如图所示。6.5与作用域通信有关的隐式对象

此时,我们点击“显示存放在session中的值”链接,页面显示结果如图所示。

6.5与作用域通信有关的隐式对象

如果在如图6.7的页面中什么操作都不做等5秒以后,再点击“显示存放在session中的值”链接,将得到如图6.9的页面,得到的user值为null,因为session已经过期了。6.5与作用域通信有关的隐式对象

6.5.2application对象

application对象实现javax.servlet.ServletContext接口,它主要功能在于取得或更改Servlet的设定。application对象的生命周期最长,它从服务器启动开始就存在,知道服务器关闭为止。application类似于系统的“全局变量”,用于实现用户之间的数据共享application对象的常用方法:voidsetAttribute(Stringkey,Objectvalue):以键/值的方式,将一个对象的值存放到application中application.setAttribute("LOGINED_USER",newArrayList());6.5与作用域通信有关的隐式对象

6.5.2application对象ObjectgetAttribute(Stringkey):根据键去获取application中存放对象的值if(application.getAttribute("LOGINED_USER")!=null){ListloginedUsers=(List)application.getAttribute("LOGINED_USER");}6.5与作用域通信有关的隐

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论