《JavaEE架构设计与开发教程》课件-第4章JSP应用基础_第1页
《JavaEE架构设计与开发教程》课件-第4章JSP应用基础_第2页
《JavaEE架构设计与开发教程》课件-第4章JSP应用基础_第3页
《JavaEE架构设计与开发教程》课件-第4章JSP应用基础_第4页
《JavaEE架构设计与开发教程》课件-第4章JSP应用基础_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

JSP应用基础第四章掌握Servlet含义及特点学会Servlet基础编程学习内容掌握JSP动作和指令了解JSP内置对象掌握JSP语法Servlet编程基础1JSP基础2JSP内置对象

3解决中文乱码4目录CONTENTSServlet编程基础Servlet简述Servlet工作原理1Servlet程序编译Servlet配置Servlet接口Servlet的特点Servlet编程基础Servlet简述Servlet是一种可以与用户进行交互的技术,它能够处理用户提交的HTTP请求并做出响应,真正实现了客户端和服务器的互动。Servlet是基于Java的、与平台无关的服务端组件Servlet编程基础Servlet工作原理Servlet是一种用Java编写的服务器端程序,作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。通过Servlet技术,可以收集来自网页表单的用户输入,呈现来自数据库或者其它源的记录,还可以动态创建网页。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet编程基础Servlet工作原理下图显示了Servlet在Web应用程序中的位置:Servlet编程基础Servlet工作原理下图Servlet处理客户请求的过程是:用户通过浏览器向服务器发送一个Servlet请求Servlet容器收到请求后,执行对应的Servlet程序Servlet程序处理用户提交的数据,然后向客户端发送应答浏览器收到应答后把结果显示出来。Servlet编程基础Servlet工作原理Servlet执行以下主要任务:读取客户端(浏览器)发送的显式的数据。如网页上的HTML表单。读取客户端(浏览器)发送的隐式的HTTP请求数据。如cookies、媒体类型等等。处理数据并生成结果。这个过程可能需要访问数据库。发送显式的数据(即文档)到客户端(浏览器)。发送隐式的HTTP响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如HTML),设置cookies和缓存参数,以及其他类似的任务。Servlet编程基础Servlet的特点JavaServlet通常情况下与使用CGI(CommonGatewayInterface,公共网关接口)实现的程序可以达到异曲同工的效果。相比于CGI,Servlet有以下几点优势:可移植性功能强大高效持久安全简洁集成性好Servlet编程基础Servlet接口Servlet是被部署在Servlet容器中的,由Servlet容器管理。编写Servlet时直接继承HttpServlet类,并覆盖所需要的方法即可。一般情况下只覆盖doGet()和doPost()方法。Servlet生命周期大体分为3个阶段:初始化阶段。响应客户请求阶段。终止阶段。Servlet编程基础Servlet接口Servlet的框架核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。在Servlet中定义了五种方法,分别如下:Servlet编程基础Servlet接口在Servlet的生命周期不同阶段被Servlet容器调用的3个方法:

init()方法:servlet容器负责加载Servlet、创建Servlet类的实例、调用Servlet实例的init()方法。service()方法:容器收到客户请求后,将请求对象ServletRequest传递给Servlet实例的service()方法。service()方法负责从请求对象ServletRequest中获得请求信息并处理请求。destroy()方法:当Web应用被终止或Servlet容器停止运行或Servlet容器重新装载该Servlet时,Servlet容器会调用Servlet的destroy()方法释放Servlet所占的资源。Servlet编程基础Servlet接口两个返回Servlet的相关信息的2个方法:getServletConfig():返回一个ServletConfig对象,该对象中包含了Servlet的初始化参数信息;getServletInfo():返回一个字符串,该字符串中包含了Servlet的创建者、版本和版权等信息。Servlet编程基础Servlet接口Servlet接口和实现类:Servlet编程基础Servlet接口ServletConfig接口,位于javax.servlet包中,封装了Servlet的配置信息,在Servlet初始化期间被传递。每一个Servlet都有且只有一个ServletConfig对象。该接口包含如下方法:Servlet编程基础Servlet接口HttpServletRequest接口,该接口位于javax.servlet.http包中,继承了javax.servlet.ServletRequest接口,是Servlet中的重要对象。常用方法如下:Servlet编程基础Servlet接口HttpServletResponse接口,该接口位于javax.servlet.http包中,它继承了javax.servlet.ServletResponse接口,是Servlet中的重要对象。常用方法如下:Servlet编程基础Servlet接口GenericServlet类。在编写一个Servlet对象时,必须实现javax.servlet.Servlet接口,在Servlet接口中包含5个方法,也就是说创建一个Servlet对象要实现这5个方法,这样操作非常不方便。javax.servlet.GenericServlet类简化了此操作,实现了Servlet接口。GenericServlet类是一个抽象类,分别实现了Servlet接口与ServletConfig接口。该类实现了除service()之外的其它方法,在创建Servlet对象时,可以继承GenericServlet类来简化程序中的代码,但需要实现service()方法。Servlet编程基础Servlet接口HttpServlet类。GenericServlet类实现了javax.servlet.Servlet接口,为程序的开发提供了方便;但在实际开发过程中,大多数的应用都是使用Servlet处理HTTP协议的请求,并对请求作出响应,所以通过继承GenericServlet类仍然不是很方便。javax.servlet.http.HttpServlet类对GenericServlet类进行了扩展,为HTTP请求的处理提供了灵活的方法。Servlet编程基础Servlet程序编译Servlet在使用前需要将Servlet源程序编译生成的.class文件放在Tomcat目录下安装的webapps目录下某个Web应用目录下的WEB-INF\classes目录下。为了编辑Servlet源文件,需要javax.servlet包和Javax.servlet.http包,但JDK内置包中并不包含这些包。在Tomcat安装目录的common\lib文件夹下,有一个servlet-api.jar,它就是需要的包。Servlet编程基础Servlet程序编译Servlet编程基础Servlet程序编译可以采用两种方式引入该包:在环境变量的CLASSPATH中添加上这个jar包路径。将这个jar包解压,把解压后的javax文件夹和要编译的Servlet程序放在同一个目录下,这种方法不需要设置环境变量,也能顺利编译Servlet源程序。Servlet编程基础Servlet配置JavaWeb开发中,一种变量信息多倾向于写在某个配置文件中。需要变化时只修改下配置文件即可,维护起来相当方便。web.xml提供了设置初始化参数的功能,可以将一些信息配置在web.xml中。要运行Servlet,就需要在Tomcat配置文件web.xml中进行配置,修改此文件定义要运行的Servlet。下面将详细介绍在web.xml文件中Servlet的配置。Servlet编程基础Servlet配置(1)环境设置Servlet包并不在JDK中,如果需要编译和运行Servlet,必须把servlet.jar包放在clasapath下或复制到jdk的安装目录的lib\jre\ext\下即可。在应用项目中使用Servlet,应在项目的WEB-INF文件夹下新建classes文件夹用来存放所有的类。Servlet编程基础Servlet配置(2)Servlet的名称、类和其他选项的配置在web.xml文件中配置Servlet时,首先必须指定Servlet的名称、Servlet类的路径,选择性地给Servlet添加描述信息,并且指定在发布时显示的名称和图标。Servlet编程基础Servlet配置如TestServlet配置代码如下:代码说明:<description>和</description>元素之间的内容是Servlet的描述信息;<display-name>和</display-name>元素之间的内容是发布时Servlet的名称;<servlet-name>和</servlet>元素之间的内容是Servlet的名称;<servlet-class>和</servlet-class>元素之间的内容是Servlet的路径。Servlet编程基础Servlet配置如果要配置的Servlet是一个JSP页面文件,那么可以通过下面的代码进行指定:代码说明:<jsp-file>和</jsp-file>元素之间的内容是要访问JSP页面文件的名称。Servlet编程基础Servlet配置(3)初始化参数Servlet可以配置一些初始化参数,例如下面的代码:代码说明:指定number的参数值为1000。在Servlet中可以通过在init()方法体中调用getInitParameter()方法进行访问。Servlet编程基础Servlet配置(4)启动装入优先权启动装入优先权通过<load-on-startup>和</load-on-startup>之间的元素内容进行指定,例如下面的代码:代码说明:TestServlet1类先被载入,TestServlet2类随后被载入。Servlet编程基础Servlet配置(5)Servlet的映射在web.xml配置文件中可以给一个Servlet做多个映射,因此,可以通过不同的方法访问这个Servlet,如下面三种:代码说明:可以通过:8080/01/One地址访问有效。Servlet编程基础Servlet配置(5)Servlet的映射代码说明:可以通过:8080/01/Two/test地址访问有效,其中的“*”可以任意填写。Servlet编程基础Servlet配置(5)Servlet的映射代码说明:可以通过:8080/01/Three/login.jsp地址访问有效。JSP基础JSP简介JSP工作原理2事件处理JSP基础JSP简介JSP全称JavaServerPages,是一种动态网页开发技术。它是由sun公司开发的一种服务器端的脚本语言,它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。JavaScript使用JSP工作原理JSP本质上还是servlet。网络服务器需要一个JSP引擎(容器)来处理JSP页面。容器负责截获对JSP页面的请求。JSP容器与Web服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务,并且能够正确识别专属于JSP网页的特殊元素。JavaScript使用JSP工作原理当JavaEE容器接收到对某个JSP的第一次请求时,就会对这个JSP文件进行分析,生成Servlet源文件,再编译成Class类文件,执行这个类文件,把执行结果作为应答发送给客户端;如果接收到的不是对这个JSP的第一次请求,直接执行对应的类文件,把执行结果作为应答发送给客户端。JavaScript使用JSP工作原理JSP工作原理如下:

(1)浏览器发送一个HTTP请求给服务器。(2)Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。(3)JSP引擎从磁盘中载入JSP文件,然后将它们转化为Servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。JavaScript使用JSP工作原理(4)JSP引擎将Servlet编译成可执行类,并且将原始请求传递给Servlet引擎。(5)Web服务器的某组件将会调用Servlet引擎,然后载入并执行Servlet类。在执行过程中,Servlet产生HTML格式的输出并将其内嵌于HTTPresponse中上交给Web服务器。(6)Web服务器以静态HTML网页的形式将HTTPresponse返回到浏览器中。Web浏览器处理HTTPresponse中动态产生的HTML网页,就好像在处理静态网页一样。JavaScript使用JSP注释与声明JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。注释有三种形式:HTML注释:<!--comments-->HTML结合JSP表达式注释:<!--comments--><%--comments--%>JSP注释:<%--comments--%>其中comments是任意文本。前两种注释会发送至客户端,即在浏览器中右击查看源文件可以看到注释内容,第三种则不可以。JavaScript使用JSP注释与声明JSP声明语法格式:<%!声明内容;%>一个声明语句可以声明一个或多个变量、方法,供后面的java代码使用。JSP中使用的变量和方法必须事先声明,并以分号结尾。<%!...%>格式内的是JSP声明,声明JSP对应的Servlet类的属性和方法。JavaScript使用JSP表达式和程序段JSP表达式语法格式<%=Java表达式%>JAVA表达式是一个值,可由多个合法的JAVA表达式组成,执行顺序是从左到右,它转换成字符串后插入到页面中,不能用分号(;)来作为JAVA表达式的结束符。代码表示如下:JavaScript使用JSP表达式和程序段JSP程序段语法:程序段中只能包含合法的JAVA语法的代码,但是可以使用“<%”,“%>”标记,交错使用JAVA代码、HTML标记。程序段中对变量的声明最好进行初始化,否则有些服务器可能会出错。JavaScript使用JSP指令在Web程序设计中经常需要用到JSP的动作指令,,例如在使用JavaBean的时候就离不开userBean的指令,JSP的强大功能和它丰富的动作指令标签是分不开的。JavaScript使用JSP指令JSP指令分为3种:页面指令即page指令;包括指令即include指令;标签库指令即taglib指令。这3种指令格式是<%@XXX指令属性...%>。XXX是include、page、taglib之一。JavaScript使用JSP指令include指令JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。Include指令的语法格式如下:include指令中的文件名实际上是一个相对的URL。如果您没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。JavaScript使用JSP指令page指令page指令为容器提供当前页面的使用说明。用来定义JSP页面的全局属性,该配置会作用于整个JSP页面。page指令用来指定所使用的脚本语言、导入指定的类及软件包等。一个JSP页面可以包含多个page指令。page指令的语法格式:注:include指令只有一个file属性,该属性用来指定插入到JSP页面目前位置的文件资源。JavaScript使用JSP指令page指令右表列出常用的与page指令相关的属性:JavaScript使用JSP指令下面是使用page指令的简单实例语句:上面使用了page指令的contentType属性和import属性。还可以为page指令的import属性指定多个值,这些值之间需要使用逗号进行分隔。但是其他属性只能指定一个值。page指令对整个页面都有效,而与其书写的位置无关,但习惯上常把page指令写在JSP页面最上面。JavaScript使用JSP指令taglib指令JSPAPI允许用户自定义标签,一个自定义标签库就是自定义标签的集合。Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。Taglib指令的语法:当使用一个自定义标签的时候,典型的格式为<prefix:tagname>。uri属性告诉容器位置,prefix属性告诉容器多少位是自定义标签的标记。JavaScript使用JSP指令taglib指令示例:假设custlib标签库包含一个hello标签。如果想要使用这个标签,以mytag为前缀,则这个标签要这么写<mytag:hello>,然后再JSP中要这么用:JavaScript使用JSP动作与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。JavaScript使用JSP动作所有的动作要素都有两个属性:id属性和scope属性。id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。scope属性用于识别动作元素的生命周期。有四个可能的值:(a)page,(b)request,(c)session,(d)application。id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。JavaScript使用JSP动作动作元素只有一种语法,它符合XML标准:动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用JSP作为前缀。JavaScript使用JSP动作可用的标准动作元素如:JavaScript使用JSP动作forward动作:forward动作把请求转到另外的页面。forward标记只有一个属性page。page属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个JavaServlet。语法格式如下所示:JavaScript使用JSP动作include动作:include动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。语法格式如下:前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的include动作不同,插入文件的时间是在页面被请求的时候。JavaScript使用JSP动作plugin动作:<jsp:plugin>元素用于在浏览器中播放或显示一个对象(典型的就是applet和bean),而这种显示需要浏览器的Java插件。当jsp文件被编译送往浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素。JavaScript使用JSP动作useBean动作:useBean动作用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。useBean动作最简单的语法为:JavaScript使用JSP动作在类载入后,我们既可以通过jsp:setProperty和jsp:getProperty动作来修改和检索bean的属性。以下是useBean动作相关的属性列表。JSP内置对象简述Web常用服务器3JSP内置对象简述为了简化页面的快速开发,JSP提供了许多内容对象如request等,这些对象不需要JSP编程者实例化,它们是由容器实现和管理的,成为内置对象。JSP内置对象即无须声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的是JSP内置对象有输出对象out,请求对象request,相应对象response,会话对象session和Web服务器对象application。内置对象也叫隐式对象。JSP所支持的九大隐式对象如下:JSP内置对象简述JSP内置对象属性范围在JSP种提供了4种属性的保存范围。所谓属性保存范围,指的是一个内置对象,可以在多个页面中保存并继续使用。page:只在一个页面中保存属性,跳转之后无交效;request:只有一次请求中保存,服务器跳转后依然有效;session:在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用;application:在整个服务器上保存,所有用户都可以使用。JSP内置对象请求对象请求对象request:request对象是javax.servlet.http.HttpServletRequest类的实例。在Web应用中,用户的需求抽象成一个request对象,这个对象中包括用户所有的请求数据。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。JSP内置对象请求对象当request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的字符串用UTF-8进行编码,并将编码存发到一个字节数组中,然后再将这个数组转化为字符串对象,代码如下:JSP内置对象请求对象request常用的方法如下:getParameter(StringstrTextName):获取表单提交的信息。getProtocol():获取客户使用的协议。getServletPath():获取客户提交信息的页面。getMethod():获取客户提交信息的方式。getHeader():获取HTTP头文件中的accept、accept-encoding和Host的值。getRermoteAddr():获取客户的IP地址。getRemoteHost():获取客户机的名称。getServerName():获取服务器名称。getServerPort():获取服务器的端口号。getParameterNames():获取客户端提交的所有参数的名字。JSP内置对象响应对象响应对象response:response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。JSP内置对象响应对象Response重定向功能:在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用Response的sendRedirect(URL)方法实现客户的重定向。例如:JSP内置对象会话对象会话对象session:session对象是javax.servlet.http.HttpSession类的实例。对象session维护着客户端和服务器端的状态。从session对象中可以取出用户和服务器交互过程中的数据和信息。Session对象在用户关闭浏览器离开Web应用前一直有效。session对象用来跟踪在各个客户端请求间的会话,如果想在整个交互过程中都可以访问到信息,就可以选择存在session对象中。JSP内置对象会话对象session所提供的方法:getAttribute(Stringname):这个方法可以获取指定属性的值。getCreationTime():这个方法可以获取session对象创建的时间。getLastAccessedTime():这个方法可以获取session对象上次被访问的时间。invalidate():这个方法可以失session对象失效。removeAttribute(Stringname):这个方法可以移除指定的属性。setAttribute(Stringname,Objectvalue):这个方法可以给指定名称的属性赋值。JSP内置对象Web服务器对象Web服务器对象application:application对象保存着整个Web应用运行期间的全局数据和信息,从Web应用开始运行时,application对象就会被创建,在整个Web应用运行期间可以在任何JSP页面中访问该对象。访问同一个网站的客户都共享一个application对象,因此,application对象可以实现多客户间的数据共享。访问不同网站的客户,对应的application对象不同。Application对象的生命周期是从Web服务器启动,直到Web服务器关闭。解决中文乱码JSP中文乱码数据库基本表述4常用SQL语句MyEclipseMySQL解决中文乱码JSP中文乱码造成中文乱码的根本原因是Java默认使用的编码方式是Unicode,对中文的编码方式一般情况是GB2312,因为编码格式的不同,导致中文不能正常显示。对于中文乱码问题,在不同的JDK版本和不同的应用服务器中的处理方法是不同的,但是本质上都是一样的,就是将中文字符转化成合适的编码方式,或者是在显示中文的环境中声明采用GB2312的编码

温馨提示

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

评论

0/150

提交评论