servletjsp培训课件

上传人:沈*** 文档编号:174484079 上传时间:2022-12-15 格式:PPT 页数:118 大小:11.34MB
收藏 版权申诉 举报 下载
servletjsp培训课件_第1页
第1页 / 共118页
servletjsp培训课件_第2页
第2页 / 共118页
servletjsp培训课件_第3页
第3页 / 共118页
资源描述:

《servletjsp培训课件》由会员分享,可在线阅读,更多相关《servletjsp培训课件(118页珍藏版)》请在装配图网上搜索。

1、知识体系Servlet概念、生命周期、运行机制Servlet API的常用接口和类SessionELJSTL定制标签标签文件过滤器监听器为什么需要Servlet2-1使用使用JSP技术如何编写服务器动态网页?技术如何编写服务器动态网页?请求请求 响应响应JSP 页页面面 运行运行执行执行Java代码代码 HTML代码代码 生成生成JSP 使用使用 Java 生成动态内容生成动态内容为什么需要Servlet2-2在在JSP技术出现之前如何编写服务器动态网页?技术出现之前如何编写服务器动态网页?请求请求 响应响应Java代码代码 HTML代码代码 生成生成运行运行Servlet程序程序什么是Ser

2、vlet 2-1Servlet 是一个是一个 Java程序,是在服务器上运行以程序,是在服务器上运行以处理客户端请求并做出响应的程序处理客户端请求并做出响应的程序请求请求 响应响应Servlet 运行运行于服务器端于服务器端什么是Servlet 2-2初识Servletimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloServletTest extends HttpServlet public void doGet(HttpServletRequest request,Ht

3、tpServletResponse response)throws ServletException,IOException response.setContentType(text/html;charset=GBK);PrintWriter out=response.getWriter();out.println();out.println(Servlet);out.println();out.println(你好,欢迎来到你好,欢迎来到Servlet世界世界);out.println();out.println();out.close();继承继承HttpServlet类类Servlet输

4、出输出HTML标签和内容标签和内容导入所导入所需的包需的包处理请处理请求的方求的方法法将数据将数据发送给发送给客户端客户端Servlet的生命周期2-1Servlet的生命周期的生命周期HTTP请求请求容器12解析请求解析请求 345响应响应6创建创建Servlet实例实例 调用调用init()方法方法 Servlet调用调用service()方法方法 调用调用destroy()方法方法 输出响应信息输出响应信息 78Servlet的生命周期2-2生命周期的各个阶段实例化实例化 Servlet 容器创建容器创建 Servlet 的实例的实例初始化初始化 该容器调用该容器调用 init()方法方

5、法 请求处理请求处理 如果请求如果请求 Servlet,则容器调用,则容器调用 service()方法方法销毁实例之前调用销毁实例之前调用 destroy()方法方法 服务终止服务终止 生命周期相关方法public class HelloServlet extends HttpServlet public void init()throws ServletException System.out.println(初始化时初始化时,init()方法被调用方法被调用);protected void service(HttpServletRequest req,HttpServletResponse

6、 resp)throws ServletException,IOException System.out.println(处理请求时,处理请求时,service()方法被调用方法被调用);public void destroy()super.destroy();System.out.println(释放系统资源时,释放系统资源时,destroy()方法被调用方法被调用);Servlet相关接口3-1ServeltConfig接口在Servlet初始化过程中获取配置信息一个Servlet只有一个ServletConfig对象ServeltConfig接口的常用方法方法名称方法名称 功能描述功能描

7、述String getInitParameter(String name)获取获取web.xmlweb.xml中设置的以中设置的以namename命名的初始化参数值命名的初始化参数值ServletContext getServletContext()返回返回ServletServlet的上下文对象的上下文对象引用引用例子:例子:ServletConfigDemoServlet相关接口3-2ServeltContext接口获取Servlet上下文,为容器中所有Servlet所共享JSP隐含对象application就是ServletContext的实例ServeltContext接口的常用方法方

8、法名称方法名称 功能描述功能描述String getInitParameter(String name)获取名为获取名为namename的系统范围内的系统范围内的初始化参数,使用的初始化参数,使用context-元素定义元素定义void setAttribute(String name,Object obj)设置设置ServletServlet中的共享属性中的共享属性Object getAttribute(String name)获取获取ServletServlet中设置的共享属中设置的共享属性性Servlet相关接口3-3GenericServlet抽象类提供了Servlet与Servlet

9、Config接口的默认实现方法GenericServlet的常用方法方法名称方法名称 功能描述功能描述String getInitParameter(String name)获取获取web.xmlweb.xml中设置的以中设置的以namename命命名的初始化参数值名的初始化参数值ServletContext getServletContext()返回返回ServletServlet的上下文对象引用,的上下文对象引用,实际上是调用实际上是调用ServletConfigServletConfig接接口的同名方法口的同名方法void init()初始化初始化ServletServlet例子:例子:

10、GenericServleDemoHttpServlet类2-1HttpServlet继承于GenericServlet处理HTTP协议的请求和响应HttpServlet的方法方法名称方法名称 功能描述功能描述void doGet(HttpServletRequest request,HttpServletRresponse response)以以GetGet请求服务时调用请求服务时调用void doPost(HttpServletRequest request,HttpServletRresponse response)以以PostPost请求服务时调用请求服务时调用Void service

11、(HttpServletRequest request,HttpServletRresponse response)根据请求方法的类型,根据请求方法的类型,调用相应的调用相应的doXxxdoXxx()()方法方法HttpServlet类是抽象类,编写类是抽象类,编写Servlet一定要继承一定要继承HttpServlet类类HttpServlet类2-2使用doXxx()接收用户请求doGet():用户使用get方式提交请求时调用doPost():用户使用post方式提交请求是调用import java.io.IOException;import javax.servlet.*;import

12、javax.servlet.http.*;public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException/doGet方法体内容方法体内容 public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExcept

13、ion/doPost方法体内容方法体内容 使用使用Get方法提交,触发方法提交,触发doGet()方法方法使用使用Post方法提交,触发方法提交,触发doPost()方法方法由由service()方法根据表单提交方法自动调用方法根据表单提交方法自动调用doXxx()方法方法Servlet的部署在Tomcat中如何部署tomcatwebappsstoreWEB-INFindex.htmltest.jsplibclasses*.jarHelloServlet.classweb.xml显示页面显示页面第三方第三方jar文件文件.java编译后编译后的的.class文件文件程序配置文件程序配置文件必须

14、的必须的tomcat主目录主目录文档根目录文档根目录Servlet的配置 在web.xml文件中配置Servlet HttpServletTest cn.jbit.servlet.HttpServletTest HttpServletTest /HttpServletTest 两个名称必须相同两个名称必须相同 为了方便使用为了方便使用Servlet,取个别名,取个别名 完整的包名完整的包名+类名类名 访问访问Servlet的的URL web.xml部署描述文件是部署描述文件是Web应用的核心文件,控制整个应用的行为应用的核心文件,控制整个应用的行为方式和方法,在方式和方法,在Servlet运行

15、时起到运行时起到“总调度总调度”的角色的角色运行Servlet启动Tomcat服务器在浏览器中输入http:/localhost:8080/store/HttpServletTest获取Servlet初始化参数2-1Servlet初始化参数配置 HelloServlet org.jbit.servlet.HelloServlet initParam Hello Servlet HelloServlet /HelloServlet 获取Servlet初始化参数2-2获取初始化参数 public void doGet(HttpServletRequest request,HttpServletRe

16、sponse response)throws ServletException,IOException System.out.println(处理请求时处理请求时,doGet()方法被调用。方法被调用。);String initParam=getInitParameter(initParam);System.out.println(initParam);根据参数名称进行读取根据参数名称进行读取 获取Servlet上下文参数2-1配置Servlet上下文 contextParam Hello Servlet 初始化参数的名字初始化参数的名字 初始化参数的值初始化参数的值 获取Servlet上下文

17、参数2-2读取Servlet上下文public class HelloServlet extends HttpServlet/省略其他代码省略其他代码public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException System.out.println(处理请求时,处理请求时,doGet()方法被调用。方法被调用。);String initParam=getInitParameter(initParam);String contextPara

18、m=this.getServletContext().getInitParameter(contextParam);System.out.println(Servlet初始化参数初始化参数+initParam);System.out.println(系统初始化参数系统初始化参数+contextParam);根据参数名称进行读取根据参数名称进行读取 使用Servlet处理GET/POST请求3-1处理登录表单数据public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletExce

19、ption,IOException request.setCharacterEncoding(GBK);response.setContentType(text/html;charset=GBK);String pass=request.getParameter(password);String user=request.getParameter(loginName);RequestDispatcher dispatcher=null;if(user.equals(“admin)&pass.equals(“123)request.setAttribute(loginname,user);dis

20、patcher=request.getRequestDispatcher(ok.jsp);dispatcher.forward(request,response);else response.sendRedirect(login.jsp);将输入转换为中文将输入转换为中文设置输出为中文设置输出为中文如果不符合要求,则重定向到登录页面如果不符合要求,则重定向到登录页面如果符合要求,则转发到如果符合要求,则转发到ok.jsp页面,页面,并在并在ok.jsp页面中显示用户名页面中显示用户名使用Servlet处理GET/POST请求3-2HttpServletRequest类常用方法HttpServl

21、etResponse类常用方法方法名称方法名称 功能描述功能描述String getParameter(String param)获取客户端请求数据获取客户端请求数据void setCharacterEncoding(String encoding)设置输入字符集设置输入字符集void setAttribute(String,Object)在在requestrequest作用域内存作用域内存储数据储数据方法名称方法名称 功能描述功能描述void setContentType(String contType)设置输出字符集设置输出字符集void sendRedirect(String url)让

22、浏览器重定向到指让浏览器重定向到指定的资源定的资源使用Servlet处理GET/POST请求3-3RequestDispatcher类作用:实现请求转发使用步骤获取RequestDispatcher类实现转发RequestDispatcher dispatcher=request.getRequestDispatcher(url);/参数参数url是欲转发的页面或者是欲转发的页面或者Servlet的的URL地址地址dispatcher.forward(request,response);Session网址重写网址重写是一种Session追踪技术,需要将一个或多个token作为一个查询字符串添加

23、到一个URL中格式:键=值注:URL和token之间要用一个问号(?)隔开,两个token之间用一个&符号隔开例子:Top10Servlet隐藏域隐藏域来保持状态与采用网址重写技术类似。它是将值放在HTML表单的隐藏域中。当用户提交表单时,隐藏域中的值也传送到服务器。只有当页面包含表单,或者可以在页面中添加表单时,才适合用隐藏域.例子:CustomerServletCookieCookie是自动的在Web服务器和浏览器之间来回传递的一些小块信息。可根据需要设置cookie的有效期限。Cookie的使用主要是javax.servlet.htpp.Cookie类和HttpServletReques

24、t类,HttpServletResponse类创建cookie:Cookie cookie=new Cookie(name,value)发送cookie到浏览器:httpServletResponse.addCookie(cookie);Cookie的maxAge属性是设置cookie的有效期限例子:PreFerenceServletHttpSession 1方法名称方法名称 功能描述功能描述HttpSession getSession()返回当前返回当前HttpSessionHttpSession,没有创建并返回没有创建并返回HttpSession getSession(Boolean cr

25、eate)CreateCreate为为falsefalse,返回,返回当前的当前的HttpSessionHttpSession,没有就返回没有就返回null.null.CreateCreate为为truetrue,返回,返回当前的当前的HttpSessionHttpSession,没有就创建一个返回没有就创建一个返回Void setAttribute(String name,Object value)将值放在将值放在HttpSessionHttpSession中中Object getAttribute(String name)获得获得HttpSessionHttpSession中保中保存的对象

26、存的对象Enumeration getAttributeNames()迭代迭代HttpSessionHttpSession中的中的所有属性所有属性HttpSession 2方法名称方法名称 功能描述功能描述String getId()获取获取HttpSessionHttpSession的标的标识符识符Void setMaxInactiveInterval(int seconds)为个别为个别HttpSessiondeHttpSessionde SessionSession期限设置一个期限设置一个不同的值,传递不同的值,传递0,0,那那么么HttpSessionHttpSession将永远将永远

27、不过期不过期Int getMaxInactiveInterval()用户最后一次访问之用户最后一次访问之后维持的时间后维持的时间JSP什么是JSPJSP(Java Server Pages)是指:在HTML中嵌入Java脚本代码由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码然后将生成的整个页面信息返回给客户端JSP页面页面 数据库数据库服务器服务器应用应用服务器服务器编译、执行编译、执行客户端客户端嵌入嵌入Java脚本脚本1234返回页面信息返回页面信息3执行执行2翻译翻译编译编译1请求请求响应响应Web容器处理JSP文件请求需要经过3个阶段:翻译阶段编译阶段执行阶段应用服务应用

28、服务器器客户端客户端JSP文件文件.java.classJSP 执行过程 2-1执行执行第二次请求第二次请求响应响应第一次请求之后,Web容器可以重用已经编译好的字节码文件应用服务器应用服务器客户端客户端.class注意:如果对注意:如果对JSP文件进行了修改,文件进行了修改,Web容器会容器会重新对重新对JSP文件进行翻译和编译文件进行翻译和编译 JSP 执行过程 2-2JSP 页面的元素包括:静态内容静态内容 指指 令令 表达式表达式 小脚本小脚本 HTML静态文本静态文本以以“”结束。结束。比如:比如:声声 明明 注释注释 JSP 页面组成page指令page指令通过设置内部的多个属性来

29、定义整个页面的属性语法:page指令常用属性 属性属性描述描述默认值默认值language指定指定JSP页面使用的脚本页面使用的脚本语言语言javaimport通过该属性来引用脚本语通过该属性来引用脚本语言中使用到的类文件言中使用到的类文件无无contentType用来指定用来指定JSP页面所采用页面所采用的编码方式的编码方式text/html,ISO-8859-1Include指令Include指令可以将另一个文件的内容放到当前的JSP页面格式:Copyright.jspf©2012 BrainySoftwareIncluding a fileThis is the include

30、d context:最后形成的jsp页面Including a fileThis is the included context:©2012 BrainySoftware小脚本与表达式计算求和计算求和两个数的求和结果为:两个数的求和结果为:指令指令小脚本小脚本表达式表达式小脚本格式:B表达式:java代码不需要分号结束在JSP页面中计算两个数的和,将结果输出显示什么是声明声明就是在JSP页面中定义Java的变量和方法语法:你好,今天是你好,今天是方法声明后可在页面方法声明后可在页面中多处调用中多处调用格式:声明可以放在jsp页面的任何位置,并且同一个页面可以有多个声明JSP中的注释合

31、理、详细的注释有利于代码后期的维护和阅读在JSP文件的编写过程中,共有三种注释方法:HTML的注释:JSP注释:在JSP脚本中注释:缺点:不安全,加大缺点:不安全,加大网络传输负担网络传输负担什么是JSP内置对象JSP内置对象是 Web 容器创建的一组对象JSP内置对象的名称是JSP 的保留字JSP内置对象是可以直接在JSP页面使用的对象,无需使用“new”获取实例没有出现没有出现new关键关键字,但却可以使用字,但却可以使用request对象对象JSP内置对象九个内置对象,这些对象可以直接使用而无需声明内置对象内置对象输入输出对象输入输出对象作用域通信对象作用域通信对象Servlet 对象对

32、象错误错误对象对象requestresponseoutsessionpageContextapplicationpageconfigexception动作useBean这个动作将创建一个与某个java对象相关的脚本变量。是将表现逻辑与业务逻辑分隔的容易的方法之一useBean运行之后,将会在浏览中输出当前的日期和时间动作setProperty和getPropertysetProperty是在一个java对象中保存一个属性,getProperty是获取一个java对象的属性 例子:getSetPropertyTest.jspForwordforword动作是将当前页面跳转到另一个不同的资源错误处

33、理利用page指令的isErrorPage属性,该属性必须为trueErrorAn error has occurred.Error message:错误处理防止未捕捉异常的其他页面使用page指令的errorPage属性,将路径引向属性值指定的错误处理页面Deliberately throw an exceptionEL什么是EL表达式什么是什么是EL EL即即Expression Language(表达式语言)(表达式语言)EL的功能的功能替代替代JSP页面中的复杂代码页面中的复杂代码EL的语法的语法$EL exprission$bean.name 或或$beanname$bean.nam

34、e实质是调用实质是调用bean的的getName()方法方法EL的特点自动转换类型自动转换类型 EL得到某个数据时可以自动转换类型得到某个数据时可以自动转换类型 对于类型的限制更加宽松对于类型的限制更加宽松使用简单使用简单 相比较在相比较在JSP中嵌入中嵌入Java代码,代码,EL应用更简单应用更简单EL的语法EL语法语法 以以“$”作为开始,以作为开始,以“”作为结束作为结束直接使用变量名获取值直接使用变量名获取值$username 变量属性范围名称变量属性范围名称属性范围属性范围 ELEL中的名称中的名称pagepageScope,例如例如$pageScope.username,表示在表示

35、在page范围内查找范围内查找username变量,找不变量,找不到返回到返回NullrequestrequstScopesessionsessionScopeapplicationapplicationScopeEL中的运算符EL运算符运算符运算符运算符”运算符运算符”.”作用作用获取对象属性获取对象属性获取一个不是有的获取一个不是有的java变量名称时,只能使用变量名称时,只能使用 运算运算符,如:获取符,如:获取accept-languagea标头标头获取对象集合中的数据获取对象集合中的数据在在Session中保存了一个中保存了一个(list)集合集合users$user.name$us

36、er“name”相等相等$sessionScope.user1得到集合中第二位的对象得到集合中第二位的对象EL表达式的简单应用输出姓名显示姓名:姓名:$names.one姓名:姓名:$namestwo 使用使用EL表达式表达式输出姓名输出姓名EL隐式对象隐式对象隐式对象JSP隐式对象隐式对象 paramValuesparamapplicationScoperequestScopesessionScopepageScope作用域访问对象作用域访问对象 参数访问对象参数访问对象pageContextEL隐式对象EL隐式对象介绍隐式对象介绍 对象名称对象名称说说 明明pageScope返回页面范围的

37、变量名,这些名称已映射至返回页面范围的变量名,这些名称已映射至相应的值相应的值requestScope返回请求范围的变量名,这些名称已映射至相应的值返回请求范围的变量名,这些名称已映射至相应的值sessionScope返回会话范围的变量名,这些名称已映射至相应的值返回会话范围的变量名,这些名称已映射至相应的值applicationScope返回返回应用范围内的变量,并将变量名映射至相应的值应用范围内的变量,并将变量名映射至相应的值param返回客户端的返回客户端的请求参数的字符串值请求参数的字符串值paramValues返回映射至客户端的请求参数的一组值返回映射至客户端的请求参数的一组值pag

38、eContext提供对用户请求和页面信息的访问提供对用户请求和页面信息的访问运算符 运算符运算符 描述描述*乘法/或 div除法+加法-减法%或mod求模运算符Empty逻辑关系算术 运算符运算符 描述描述 或 gt 大于=或 ge大于等于=或 eq等于!=或 ne不等于 运算符运算符描述!或 not逻辑取反&或 and逻辑与|或 or 逻辑或 运算符运算符 描述描述empty检查空值运算符示例 4>3$4 3 4<3$4 3 4≥3$4=3 4≤3$4 le 3 4=4$4=4Empty 运算符运算符 empty info$empty info 三目操作:三目操作:$

39、num1num2?大于大于:小于小于br/禁用ELJSP页面中禁用页面中禁用整个网站禁用,修改整个网站禁用,修改web.xml文件文件*.jsptrueJSTL什么是JSTL使用使用JSTL实现实现JSP页面中逻辑处理页面中逻辑处理什么是什么是JSTLJSTL(JavaServerPages Standard Tag Library)JSP标准标签库标准标签库JSTL通常会与通常会与EL表达式合作实现表达式合作实现JSP页面的编码页面的编码JSTL 的优点的优点提供一组标准标签提供一组标准标签 可用于编写各种可用于编写各种 动态动态 JSP 页面页面JSTL的环境搭建使用使用JSTL的步骤的步

40、骤创建创建Web工程,选择工程,选择JSTL1.1在在JSP页面添加页面添加taglib指令指令使用使用JSTL标签标签JSTL标准标签库介绍 JSTL标准标签库内的标签标准标签库内的标签JSTL标准标签库标准标签库核心标签库核心标签库通用标签通用标签条件标签条件标签迭代标签迭代标签setremoveoutifforEach通用标签通用标签的使用通用标签的使用set:设置指定范围内的变量值:设置指定范围内的变量值out:计算表达式并将结果输出显示:计算表达式并将结果输出显示remove:删除指定范围内的变量:删除指定范围内的变量 out 标签在页面上显示信息或变量值标签在页面上显示信息或变量值

41、 remove 标签用于删除作用域内的变量标签用于删除作用域内的变量 插入使用核心标签的指令插入使用核心标签的指令set 标签用于给变量标签用于给变量设置值和作用范围设置值和作用范围scope=page|request|session|application 设置变量之前的值是:设置变量之前的值是:msg=设置新值以后:设置新值以后:msg=移除变量移除变量msg以后:以后:msg=通用标签的应用使用使用set属性属性进行赋值进行赋值使用使用out属性属性输出显示输出显示使用使用remove属性移除属性移除条件标签条件标签的使用条件标签的使用if:if标签用于判断条件是否成,与标签用于判断条件

42、是否成,与Java中的中的If语句做语句做用用相同用用相同语法语法 判断条件表达式判断条件表达式返回返回true/false 变量名用于保存变量名用于保存 返回的返回的true/false 指定指定var变变 量的作用域量的作用域 条件标签判断登录判断登录登录表单登录表单已经登录!已经登录!使用条件标签判使用条件标签判断是否已登录断是否已登录条件标签Choose,when,otherwise标签 choose,when标签和java中的switch和case相似 otherwise标签在其他测试条件运算结构都不为true后执行,并且必须放在最后一个when标签后面 You are a full

43、 member You are a student member please register 迭代标签循环体代码循环体代码 迭代标签迭代标签-forEach实现对集合中对象的遍历实现对集合中对象的遍历语法语法 var指定集合内指定集合内数据的变量名称数据的变量名称 items指定要遍指定要遍历的集合对象历的集合对象 forEach是是for循环语句的变体,实现循环语句的变体,实现 集合对象集合对象(可以是可以是list、数组等、数组等)的处理的处理 begin指定从集指定从集合的第几位开始合的第几位开始end指定迭代到集合指定迭代到集合的第几位结束的第几位结束 varStatus存放存放v

44、ar引引用的成员的相关信息用的成员的相关信息,如索引,如索引迭代标签 tr style=background-color:rgb(219,241,212);$product.name$product.area$product.price 通过迭代标签显示商品列表通过迭代标签显示商品列表循环遍历集合循环遍历集合判断奇偶行判断奇偶行输出商品信息输出商品信息迭代标签 迭代标签迭代标签forTokensforTokens语法语法 body content 要迭代的字符串 一组分界符 迭代的变量名 保存迭代状态的变量名 指定从集合的第几位开始 指定迭代到集合的第几位结束 从几何第一个step项开始,逐个

45、进行。必须:Step=1格式化动作指令formatNumber:格式化数字 formatDate:格式化日期 timeZone:用来指定时区 body content setTimeZone:将指定的时区保存在某个变量中 parseNumber:将数字,货币或百分比的字符串表示法解析成指定语言环境的数字 parseDate:为指定区域解析日期和时间的字符串表达式 自定义标签自定义标签自定义标签示例 l将若干个自定义标签进行包装,可以形将若干个自定义标签进行包装,可以形成标签库成标签库l标签库组成:标签处理程序、标签库描标签库组成:标签处理程序、标签库描述文件述文件TLD标签库 实现方式实现方式

46、 实现方式实现方式自定义标签的实现方式标签处理程序标签处理程序标签文件标签文件自定义标签自定义标签实现步骤l创建标签处理程序(Tag Handler Class)l创建标签库描述文件(Tag Library Descriptor File),以.tld结尾l在JSP文件中使用taglib指令引入标签库l调用自定义标签标签处理程序l是一个Java程序l实现Tag、IterationTag 或 BodyTag 接口l或者继承TagSupport或BodyTagSupport类l实现或重写doStartTag、doEndTag等方法l注:位于javax.servlet.jsp.tagext包中tag

47、ext包:接口lTag:定义了标签处理程序和JSP页面间的通讯协议lIterationTag:继承了Tag,增加了一个控制重复处理标签的主体内容的方法lBodyTag:继承了IterationTag,由需要对标签的主体内容进行访问并能够对其进行操纵的标签处理程序使用tagext包:Tag常量lTag常量SKIP_BODY:表示之间的内容被忽略EVAL_BODY_INCLUDE:表示标签之间的内容被正常处理SKIP_PAGE:表示立刻停止执行网页,网页上未处理的静态内容和JSP程序均被忽略,任何已有的输出内容立刻返回到客户的浏览器上EVAL_PAGE:表示按照正常的流程继续执行后续JSP网页ta

48、gext包:其它常量lIterationTag常量EVAL_BODY_AGAIN:表示重复处理之间的内容lBodyTag常量EVAL_BODY_BUFFERED:Web容器会创建专门用于保存标签体内容的缓冲区,即BodyContent对象tagext包:TagSupportlTagSupport:实现了Tag、IterationTag接口,支持简单标签和带主体迭代的标签,方法:int doStartTag()throws JspException默认的标签开始的处理方法,返回SKIP_BODYint doEndTag()throws JspException默认的标签结束的处理方法,返回EVA

49、L_PAGEint doAfterBody()throws JspException默认在标签主体处理完后调用的方法,返回SKIP_BODYtagext包:BodyTagSupportlBodyTagSupport:实现BodyTag接口,继承了TagSupport类,支持对标签的主体内容进行再次操作,即可以对标签内的内容进行二次加工,方法:int doStartTag()throws JspException默认的标签开始的处理方法,返回EVAL_BODY_BUFFEREDint doEndTag()throws JspException默认的标签结束的处理方法,返回EVAL_PAGEvoi

50、d setBodyContent(BodyContent)在doInitBody()方法前调用,设置bodyContent属性,传入主体内容void doInitBody()throws JspException用于处理页面主体,对主体内容进行再次操作int doAfterBody()throws JspException默认在标签主体处理完后调用的方法,返回SKIP_BODY,如需重复处理主体内容,则返回EVAL_BODY_AGAIN基本的标签生命周期 doStartTag()返回值setBodyContent()dolnitBody()doAfterBody()返回值doEndTag()r

51、elease()结束引用标签处理程序EVAL_BODY_BUFFEREDEVAL_BODY_AGAINSKIP_BODYEVAL_BODY_INCLUDESKIP_BODYEVAL_PAGESKIP_PAGE实例化标签处理程序标签处理程序简单示例public class CaseTag extends TagSupport public int doEndTag()throws JspException JspWriter out=super.pageContext.getOut();try out.print(*End of Tag*);catch(IOException e)return

52、super.doEndTag();public int doStartTag()throws JspException JspWriter out=super.pageContext.getOut();try out.print(*Start of Tag*);catch(IOException e)return Tag.EVAL_BODY_INCLUDE;标签库描述文件介绍lTLD是Tag Library Definition的缩写,即标签库定义,文件后缀为.tldlTLD文件也称为标签库定义文件lTLD文件为XML格式,存放在WEB-INF目录下,会自动加载该文件l每个TLD文件对应一个标

53、签库,一个标签库可包含多个标签注:可参考tomcat的目录webappsexamplesWEB-INFjsp2中的tld文件主要元素:根元素:该标签库的默认短名:指定标签库的uri,通过此uri来标识标签库:每个tag定义一个标签,可包含多个:标签访问名称,根据此名称访问标签:标签处理程序:可选,设置标签主体内容,可取值:empty空标签,无主体;jsp可以使用jsp脚本;scriptless可以是静态元素表达式语言,但不允许出现jsp脚本;tagdependent纯文本 mytaglib 1.0 util http:/ hello com.itany.HelloTag empty 定义TLD

54、文件此方式不需要配置此方式不需要配置web.xml文件文件在JSP中使用使用taglib指令引用 或或在页面中使用自定义标签 标签文件标签文件的实现过程l定义标签文件:以定义标签文件:以.tag为后缀,保存在为后缀,保存在WEB-INF/tags 目录下目录下l使用标签文件:在使用标签文件:在JSP页面中用页面中用 为标为标签文件定义一个前缀,按标签处理程序的用法签文件定义一个前缀,按标签处理程序的用法使用使用标签文件中的标记和属性l前导指令:前导指令:body-content:标签体的特性,取值范围:标签体的特性,取值范围:empty、tagdependent、scriptless(默认)(

55、默认)description:标签的描述:标签的描述display-name:标签名:标签名example:使用示例:使用示例import:导入要使用的包、类:导入要使用的包、类isElIgnored:是否忽略:是否忽略EL,默认,默认falsepageEncoding:字符编码:字符编码注:注:tag指令如同指令如同JSP网页的网页的page指令,用来设置标签文件指令,用来设置标签文件标签文件中的标记和属性l前导指令:前导指令:dscription:属性的描述:属性的描述fragment:是否为代码片断,默认:是否为代码片断,默认falsename:属性名,必要的:属性名,必要的requir

56、ed:是否必须,默认:是否必须,默认falsetype:属性类型,默认:属性类型,默认Stringrtexprvalue:是否可用动态表达式,默认:是否可用动态表达式,默认truel前导指令:前导指令:prefix:标签库标签使用时的前缀:标签库标签使用时的前缀tagdir 或或 uri:标签库路径:标签库路径标签文件中的标记和属性l前导指令:前导指令:file:包含文件的路径名称:包含文件的路径名称l前导指令:前导指令:name-given:为返回值提供一个名称:为返回值提供一个名称variable-class:返回变量的类型,默认:返回变量的类型,默认Stringscope:变量作用域,取

57、值范围:变量作用域,取值范围:AT_BEGIN、AT_END、NESTED(默认)(默认)注:注:标签文件可以使用隐藏属性:request、response、jsContext、session、application、out、config也可以使用脚本元素、EL表达式、JSTL等标签文件中的标记和属性l标准动作:标准动作:用来执行标签体用来执行标签体var:用来标识标签体的变量,:用来标识标签体的变量,String类型类型varReader:同上,:同上,java.io.Reader类型类型scope:变量的作用域,如:变量的作用域,如:page、request、session、applica

58、tionl标准动作:标准动作:用来执行标签中用来执行标签中JspFragment类型的属性类型的属性var、varReader、scope:同上:同上fragment:在标签调用的过程中标识片段,必须有:在标签调用的过程中标识片段,必须有注:注:和和是是JSP2.0新增的动作元素,新增的动作元素,主要用在主要用在Tag File中中 联系我们联系我们|公司介绍公司介绍|隐私政策隐私政策|服务条款服务条款|人才招聘人才招聘|广告招商广告招商|帮助中心帮助中心Copyright©$now.year+1900 Shop Shot 标签文件的简单实现标签文件指定非主体标签使用标准动作创建Ja

59、vaBean 标签文件的使用JSP 实现使用taglib指令的tagdir属性指定tag文件的路径,prefix属性指定自定义标签的前缀使用自定义标签过滤器过滤器简介l过滤器是向 Web 应用程序的请求和响应处理添加功能的Web服务组件l过滤器的作用:统一的认证处理统一的认证处理详细的日志详细的日志对用户数据的安全性处理对用户数据的安全性处理改变图象文件格式改变图象文件格式对响应数据进行编码对响应数据进行编码对响应做压缩处理对响应做压缩处理对对XMLXML输出做输出做XSLTXSLT转换转换过滤器工作原理l过滤器的工作原理:过滤器的工作原理:Web 资资源源用户用户发送发送请求请求过滤器将过滤

60、器将处理过的处理过的用户的请用户的请求发送至求发送至 Web 资源资源资源将资源将响应发响应发送至过送至过滤器滤器过滤器将过滤器将处理过的处理过的Web 资资源的响应源的响应发送给用发送给用户户用户用户过滤器过滤器过滤器生命周期l过滤器生命周期过滤器生命周期的各个阶段:的各个阶段:实例化实例化 初始化初始化过滤过滤销毁销毁过滤器创建步骤Filter 接口ljavax.servlet.Filter接口定义了过滤器的生命周期接口定义了过滤器的生命周期l其实现类对象按照生命周期,对用户的请求和资其实现类对象按照生命周期,对用户的请求和资源的响应进行过滤源的响应进行过滤lFilter 接口包含以下方法

61、接口包含以下方法:public void init(FilterConfig filterConfig)throws ServletExceptionpublic void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throws java.io.IOException,ServletExceptionpublic void destroy()FilterConfig 接口l在初始化过程中,容器使用在初始化过程中,容器使用 FilterConfig 将信息传将信息传递给过滤器,主要是初始化参数递给过滤器,

62、主要是初始化参数 lFilterConfig 接口包含以下方法:接口包含以下方法:public String getFilterName()public ServletContext getServletContext()public String getInitParameter(String name)public java.util.Enumeration getInitParameterNames()FilterChain接口lFilterChain 接口用于调用过滤器链中的一系列过滤器接口用于调用过滤器链中的一系列过滤器l方法:方法:public void doFilter(Serv

63、letRequest req,ServletResponse resp)throws IOException,ServletException用户过滤器1过滤器2过滤器3Web 资源过滤器链过滤器链配置过滤器l过滤器定义用于将过滤器名称与过滤器定义用于将过滤器名称与部署描述符部署描述符web.xml中的特定类关联中的特定类关联l可在可在中使用如下标记添加参数中使用如下标记添加参数 FilterName ClassName指定过滤器的名称指定过滤器的名称指定类的全名称指定类的全名称映射过滤器l使用使用 元素元素可可将将过滤器映射至过滤器映射至 Web资源,如资源,如Servlet、JSP页面等页

64、面等l另有子标签另有子标签和和可以设可以设置对某些置对某些servlet或某些请求才使用过滤器或某些请求才使用过滤器 MyFilter /servletname/*指定过滤器的名称指定过滤器的名称指定指定 Servlet 的名称的名称过滤器简单示例public void doFilter(ServletRequest request,ServletResponse response,FilterChain filterChain)HttpServletRequest myReq=(HttpServletRequest)request;HttpServletResponse myRes=(Htt

65、pServletResponse)response;/对请求进行处理对请求进行处理filterChain.doFilter(request,response);/对响应进行处理对响应进行处理监听器监听器简介l监听器用于在服务器端监听一些特定事件的发监听器用于在服务器端监听一些特定事件的发生,以便用户对发生的事件做出一些处理生,以便用户对发生的事件做出一些处理l可以在不修改已有代码的情况下,增加可以在不修改已有代码的情况下,增加web应应用程序生命周期中的事件的跟踪用程序生命周期中的事件的跟踪监听器类型lServletContextListenerlServletContextAttribute

66、ListenerlHttpSessionListenerlHttpSessionAttributeListenerlHttpSessionActivationListenerlHttpSessionBindingListenerlServletRequestListenerlServletRequestAttributeListenerServletContext监听器lServletContextListener:用于监听:用于监听WEB 应用启动应用启动和销毁的事件:和销毁的事件:contextDestroyed(ServletContextEvent sce)contextInitialized(ServletContextEvent sce)lServletContextAttributeListener:用于监听:用于监听WEB应用程序的属性改变事件应用程序的属性改变事件,包括:增加属性、删除包括:增加属性、删除属性、修改属性,即属性、修改属性,即ServletContext的的setAttribute、removeAttribute方法被调用时方法被调用时attribute

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!