⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsp(day03).txt

📁 这是我们上课学习jsp时的上课笔记
💻 TXT
📖 第 1 页 / 共 2 页
字号:

                                  JSP第三天   2007年7月2日
                                  
一、JSP的异常处理
<%@page errorPage="xxx.jsp"%> 指定本页面出现异常后要转到的页面
<%@page iserrorPage="true"%> 见本页面指定为异常处理页面,也就是其他出异常的页面可以指定本页面为要转到的异常处理页面。                                  

处理异常

运行时异常
1) 一个程序运行时重获的错误;
2) 能被一固有的异常对象引用所使用;
3) 可以利用异常引用创建或产生一个JSP页面显示异常信息给用户。

创建一个异常跟踪方案
1) 在每一个JSP页面,包含要创建的异常页面名称;   
<%@page import="numberguess.NumberGuessBean" errorPage="error.jsp"%>
2) 创建一个异常页面;   
<%@page isErrorPage="true"%>

JSP页面中的异常处理
1) <%=exception.toString()%>        打印异常名称;
2) <%exception.printStackTrace();%> 打印当前错误流中所有错误的列表;
3) <%=exception.getMessage()%> 打印错误的详细描述信息

二、JSP中隐含内置对象

名称         类型                                     注释和范围
request      javax.servlet.http.HttpServletRequest    request

response     javax.servlet.http.HttpServletResponse   response

page         javax.lang.Object                        page

Exception    java.lang.Throwable                      page

pageContext  javax.servlet.jsp.PageContext            page

session      javax.servlet.http.HttpSession           session

application  javax.servlet.ServletContext             ServletContext

out          javax.servlet.jsp.JspWriter              output stream

config       javax.servlet.ServletConfig              ServletConfig

内置对象request

1)封装了来自客户端的请求:    
2)方法:
   getCookies: 取得Cookie数组;          
   getMethod: 返回请求形成的方式(GET/POST);          
   getParameterNames: 返回form中对象名称的枚举;          
   getParameter:返回指定名称的对象值; 5) getParameterValues: 返回指定名称的对象值数组;         setAttribute: 设置属性;          
   getAttribute: 返回属性值;          
   getAttributeNames: 返回属性名称的枚举

内置对象out

1)JSPWriter的一个实例, 用于发送响应给客户端    
2)方法:
   print(String)/println(String) 用于向页面输出          
   print(int)/println(int)          
   flush() 刷新out对象的缓存

内置对象exception

1) 用于异常对象的异常实例;    
2) 异常页面在page指令中存在属性 isErrorPage="true";    
3) 方法:
   getMessage()/printStackTrace()/toString() 

内置对象session

1) HttpSession的一个实例, 用于来维护session的状态    
2) 方法:
   getAttribute(String name)/setAttribute(String name) 
   取得设置的属性的对应资源/设置属性的对应资源             
   removeAttribute(String name)	删除属性和队应资源             
   getAttributeNames() 
   返回值是一个迭代器,可以获得session中设置的属性的名字也就是在set时使用的与资源对应的那个   名字

内置对象application

1) ServletContext一个实例,用来维护application的状态    
2) 方法:   
   getAttribute()/setAttribute() 和session以及request中的那一对设置属性及其对应资源的方法    
   getInitParameter()	获得初始化参数                
   getServletInfo()  获得Servlet的信息
3) application的作用域比session大得多,一个session和一个client联系, 而application保持了用于所有客户端的状态。

注意:如果要保存的数据量比较大时,就要使用生命周期比较短的request对象,page对象只在本页面中有效,也就是会再翻译后的service方法体内
      的一个局部变量,service运行结束后就会销毁,不像request可以转发。session和application的生命周期都比较长而且作用域比较大。
      
      
三、JSP自定义标签(tag)

什么是自定义标签

1,用户自定义的Java语言元素, 实质是运行一个或者两个接口的JavaBean;
2,可以非常机密地和JSP的表示逻辑联系在一起,又具有和普通JavaBean相同的业务逻辑处理能力;
3,当一个JSP页面转变为servlet时,其间的用户自定义标签转化为操作一个称为标签hander的对象;
4,可操作默认对象,处理表单数据,访问数据库以及其它企业服务;

自定义标签库的特点

1,通过调用页面传递参数实现定制;
2,访问所有对JSP页面可能的对象;
3,修改调用页面生成的响应;
4,自定义标签间可相互通信;
5,在同一个JSP页面中通过标签嵌套,可实现复杂交互。

如何使用自定义标签库

1,声明标签库
2,使标签库执行对Web应用程序可用

声明标签库

1,使用taglib指令声明标签库
2,语法:<%@taglib uri="URI" prefix="pre" %>

注意:a. uri属性可以是绝对的,也可以是相对URL,该URL指向标记库描述符(TLD)文件;      
      b. uri属性也可以是一个并不存在的URL,该URL为web.xml文件中将标记库描述符(TLD)文件的绝对

URL到本地系统的一个映射;

3,范例:<%@taglib uri="/WEB-INF/template.tld" prefix="test" %>               
         <%@taglib uri="http://java.sun.com/jstl/core" prefix="core" %>       

使标签库执行可用

方式一:在WEB-INF/classes目录下部署标记处理程序类;
方式二:将标记处理程序类打包成jar文件并置于WEB-INF/lib目录。

几种典型的标签

1,不带属性和主体的简单标签:<mytaglibs:SomeTag/>;
2,不带主体但有属性的标签:<mytaglibs:SomeTag user="TonyDeng"/>;
3,带有主体和属性的标签:
         <mytaglibs:SomeTag user="TonyDeng">                                                               
                  ...// 标签体                                  
         </mytaglibs:SomeTag>;

注意:a. 属性列于start tag中,它是在标记库描述符(TLD)文件中指定,服务于标记库的自定义行为;        
      b. 标签体位于start tag和end tag间,可以是任何合法的JSP内容或者标签;

定义标签

1,开发实现tag的类(tag handler);
2,编辑标记库描述符(TLD)文件;
3,在web.xml中为标记库描述符(TLD)文件的绝对URL建立一个映射(该步骤可选); 

标记库描述符(TLD)文件

1,一个描述标记库的XML文件;
2,内容开始是整个库的描述,然后是tag的描述;
3,标记库描述符(TLD)文件用于Web Container确认tag以及JSP页面发展工具;

实现tag的类(标签处理器)(tag handler)

1,是一些在引用了标签的JSP页面执行期间被Web Container调用以求自定义标签值的对象;
2,必须实现Tag, SimpleTag和BodyTag之一;
3,可以继承TagSupport和BodyTagSupport之一。

标签库的接口和类的继承关系接口的继承关系:       
☉ interface javax.servlet.jsp.tagext.JspTag          
        ☉ interface javax.servlet.jsp.tagext.SimpleTag             
        ☉ interface javax.servlet.jsp.tagext.Tag             
	        ☉ interface javax.servlet.jsp.tagext.IterationTag             
	        ☉ interface javax.servlet.jsp.tagext.BodyTag

类的继承关系:       
         ☉ class javax.servlet.jsp.tagext.TagSupport 
          (implements javax.servlet.jsp.tagext.IterationTag, java.io.Serializable)           
                ☉ class javax.servlet.jsp.tagext.BodyTagSupport 
                 (implements javax.servlet.jsp.tagext.BodyTag)        
         ☉ class javax.servlet.jsp.tagext.SimpleTagSupport 
            (implements javax.servlet.jsp.tagext.SimpleTag)


                  (Interface)                    
                     JspTag                      
                        |                              
                |ˉˉˉˉˉˉˉˉ|             
           (Interface)      (Interface)JSP2.0             
               Tag           SimpleTag ←--SimpleTagSupport              
                |                                          
                |             
            (Interface)           
           IterationTag←--TagSupport
           支持迭代的标签         |
                |                 |           
                |                 |    
            (Interface)           |                
             BodyTag ←---BodyTagSupport
            可以处理标签体


自定义标签的开发步骤

1,写标签处理器,也就是一个符合自定义标签规范的类 xxx.java

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -