jsp(培训笔记).pdf
《jsp(培训笔记).pdf》由会员分享,可在线阅读,更多相关《jsp(培训笔记).pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JSPJSPJSPJSP第一天第一天2007200720072007年年 6 6 66月月 28282828日日一、JSP(java server page)1、JSP 是服务器端运行的页面,JSP 本事就是一个文档,他不仅可以包含静态的 HTML 代码,也可以包含动态的 JAVA代码,服务器容器可以将 JSP 转换成 Servlet 发布,并接受请求。2、JSP is a Servlet!tomcat-5.5.17confweb.xml 文件中defaultorg.apache.catalina.servlets.DefaultServletdebug0listingstrue-直接用应用名
2、字访问的时候,会把应用的所有文件目录列出来,系统发布的时候置为 false1tomcat-5.5.17confserver.xml 文件中3、Jsp 文件只需放在应用文件下就可以了。4、JSP 例子:time5、JSP 的特点(1)JSP 不需要编译(2)JSP 不需要进行配置JSP文件的存放位置和静态网页存放的位置一样Edited by Foxit ReaderCopyright(C)by Foxit Software Company,2005-2008For Evaluation Only.(3)JSP 本质上就是一个 Servlet(4)JSP 是以静态页面为主的。6、JSP 运行过程(
3、1)JSP 文件先要翻译成 Java文件(Servlet),在tomcat 中翻译后的 java文件在 tomcat 下的 workCatalinalocalhost 中相应名字的应用目录里。(2)编译 Java文件(3)运行.class文件7、JSP 指令JSP 声明JSP 表达式JSP 代码块8、生命周期jspInit()_jspService()jspDestroy()9、JSP 的语法元素(1)Scripting 脚本(代码)a)declaration 声明声明,使用声明的变量,所创建的变量是在 service方法体外,也就是翻译成实例变量,声明也可以声明内部类或者是方法的声明。b)e
4、xpression 表达式表达式,写表达式时不要加上分号,表达式,翻译成 Java 代码也就是直接使用流输出,out.print()的参数,也就不能加分号了。c)scriptlet 代码块代码片断,代码段会原样翻译。在代码段中声明的变量,就会被翻译的 service的方法体中,也就是被翻译成局部变量。(2)action动作(3)directive 指令-表示匿名内部类-从请求中取参数Edited by Foxit ReaderCopyright(C)by Foxit Software Company,2005-2008For Evaluation Only.尽量少声明变量JSPJSPJSPJS
5、P第二天第二天2007200720072007年年 6 6 66月月 29292929日日JSP 的注释JSP 指令和 JSP 动作(标准的 JSP 标签)JSP 指令的语法 包含指令,包含指令会将要包含的文件代码原样输出到本页面(在翻译时把包含文件的内容引入并合并),不进行翻译,file 属性制定要包含的文件的名字(注意要包含的文件的路径),这个指令可以实现页面的复用。注意:要包含的 JSP 文件中不能定义重名的变量,如果不使用包含指令,那么 JSP 中的最小转换单元就是 JSP 文件,使用了包含指令就会将多个 jsp 的结果合并到一起。页面指令 引入包 例:(可出现多次)设定页面显示的字符
6、集设置输出流的编码方式和文件格式。注意:输出的字符集编码方式要和页面显示的字符集相同,一般定义输出流的编码方式,注意以上两个页面指令在 JSP 中最好只出现一次。注意在请求中传送的参数的值是中文的话需要调用请求 request的setCharacterEncoding(.)方法设置相应的编码方式,只适用于 post 请求,也可以通过 Servlet的 Filter来进行中文编码方式的处理。指定 JSP 的脚本语言,现在只能写 java 指定翻译后代码类型的父类,最好不要使用这个指令指定是否自动创建 Session,最好不自己指定,使用默认值设置输出的缓存和是否自动刷新缓存,一般情况下都使用默认
7、值,缓存的默认值为 8KB。是否线程安全,默认为 true,也就是线程安全,只使用Edited by Foxit ReaderCopyright(C)by Foxit Software Company,2005-2008For Evaluation Only.JSP源文件的编码默认值。设置页面信息,一般不用指定异常处理页面设定本页面就是异常后跳转的页面设定本页面是否忽略 JSP2.0 种 EL 表达式 标签库指令,用于引入自定义标签库JSP 动作 include 动作是在翻译和编译后运行时进行响应的合并,也 就 是 对 应 了 Servlet 中 RequestDispatcher 类的 in
8、clude(ServletRequest request,ServletResponse response)方法。include 动作可以传递参数在使用参数时,可以用 request内置对象来获取参数的值。forward 动作对应的是 Servlet 中 RequestDispatcher 类的forward(ServletRequest request,ServletResponse response)方法,也就是把请求进行转发。也可以写成xxx/xxx.jsp这种写法等价于上面的写法。在使用 Servlet 的 response的重定向 sendRedirect(String locati
9、on)方法在使用时要包含应用的路径,注意,重定向会放弃这个请求,并向服务器发送一个新的请求,但是响应对象还是一个。重定向是用来避免重复提交的。注意:对页面的刷新操作就会再一次运行程序,也就仿佛进行了再一次的提交一样,这也就是重复提交的问题,所以需要使用重定向来解决这个问题。.jsp:plugin 动作可以使页面上运行 applet,或者是使用 java 代码。Edited by Foxit ReaderCopyright(C)by Foxit Software Company,2005-2008For Evaluation Only.jsp:useBean 动作,可以通过这个动作来使用 jav
10、a 代码,id 就是变量名,clss 和 type的区别在于,使用 type 是不会创建对象,而只是会先查找如果有该对象就会使用,如果没有就会抛出异常,class 在没有该对象存在时,则会创建新对象。scope 是用来保存实例的空间范围,page、request、session、application,由小到大,默认为 page。直接指定 Bean 属性的值,必须类型一致。用表单中指定的参数来为 Bean 属性赋值,系统会自动作类型转换。用表单中和 Bean 属性同名的标单项来给 Bean 属性赋值,这样写只会为指定的属性赋值这种方式会自动用表单中的同名参数来为 Bean 的所有属性赋值jsp
11、:setProperty name=对象名 property=属性名 value=/使用表达式来为 Bean 的属性进行赋值取得指定的属性,这个动作不常用,一般用表达式代替。我们可以通过设置属性名的方法名也就是 setXxxx()来控制属性的赋值,用form 表单的参数为 Bean 的属性赋值时,系统会自动的调用与之同名属性的 setXxxx()方法,尤其是日期类型,可以通过使用这一方法来处理。例:import java.sql.*;public class Personprivate Srting name;private Date birthday;public void setName(
12、String name)this.name=name;public void setBirthdayAsString(String birthday)this.setBirthday(valueOf(birthday);public void setBirthday(Date birthdays)this.birthday=birthday;Edited by Foxit ReaderCopyright(C)by Foxit Software Company,2005-2008For Evaluation Only.add.jsptoadd.jspJavaBean 和 EJB 的区别JavaB
13、ean 是可视的或者是不可视的,不用部署,EJB 是不可视的,需要部署到服务器中。JavaBean 部署在应用程序中,EJB 是部署在容器中,可以是有状态或者是无状态的,声明式事务。JavaBean 的属性和方法是普通的,EJB 是需要遵守规范,是需要通过标准的描述符来定义的。JavaBean 是基于事件驱动的,EJB 中只有消息驱动 Bean 是基于事件的.JSPJSPJSPJSP第三天第三天2007200720072007年年 7 7 77月月 2 2 22日日一、JSP 的异常处理 指定本页面出现异常后要转到的页面 见本页面指定为异常处理页面,也就是其他出异常的页面可以指定本页面为要转到
14、的异常处理页面。处理异常运行时异常1)一个程序运行时重获的错误;2)能被一固有的异常对象引用所使用;3)可以利用异常引用创建或产生一个 JSP 页面显示异常信息给用户。创建一个异常跟踪方案1)在每一个 JSP 页面,包含要创建的异常页面名称;2)创建一个异常页面;JSP 页面中的异常处理1)打印异常名称;2)打印当前错误流中所有错误的列表;3)打印错误的详细描述信息二、JSP 中隐含内置对象名称类型注释和范围requestjavax.servlet.http.HttpServletRequestrequestresponsejavax.servlet.http.HttpServletRespo
15、nseresponsepagejavax.lang.ObjectpageExceptionjava.lang.ThrowablepagepageContextjavax.servlet.jsp.PageContextpagesessionjavax.servlet.http.HttpSessionsessionapplicationjavax.servlet.ServletContextServletContextoutjavax.servlet.jsp.JspWriteroutput streamconfigjavax.servlet.ServletConfigServletConfig内置
16、对象 request1)封装了来自客户端的请求:2)方法:getCookies:取得 Cookie 数组;getMethod:返回请求形成的方式(GET/POST);getParameterNames:返回 form 中对象名称的枚举;getParameter:返回指定名称的对象值;getParameterValues:返回指定名称的对象值数组;setAttribute:设置属性;getAttribute:返回属性值;getAttributeNames:返回属性名称的枚举内置对象 out1)JSPWriter 的一个实例,用于发送响应给客户端2)方法:print(String)/println
17、(String)用于向页面输出Edited by Foxit ReaderCopyright(C)by Foxit Software Company,2005-2008For Evaluation Only.生命周期只局限在本页面,在同一页面的不同标签之间传递数据print(int)/println(int)flush()刷新 out 对象的缓存内置对象 exception1)用于异常对象的异常实例;2)异常页面在 page 指令中存在属性 isErrorPage=true;3)方法:getMessage()/printStackTrace()/toString()内置对象 session1)
18、HttpSession 的一个实例,用于来维护 session 的状态2)方法:getAttribute(String name)/setAttribute(String name)取得设置的属性的对应资源/设置属性的对应资源removeAttribute(String name)删除属性和队应资源getAttributeNames()返回值是一个迭代器,可以获得 session 中设置的属性的名字也就是在 set 时使用的与资源对应的那个名字内置对象 application1)ServletContext 一个实例,用来维护 application 的状态2)方法:getAttribute(
19、)/setAttribute()和session 以及request中的那一对设置属性及其对应资源的方法getInitParameter()获得初始化参数getServletInfo()获得 Servlet 的信息3)application 的作用域比 session 大得多,一个 session 和一个 client 联系,而 application 保持了用于所有客户端的状态。注意:如果要保存的数据量比较大时,就要使用生命周期比较短的 request对象,page 对象只在本页面中有效,也就是会再翻译后的 service方法体内的一个局部变量,service运行结束后就会销毁,不像 req
20、uest 可以转发。session 和application 的生命周期都比较长而且作用域比较大。三、JSP 自定义标签(tag)什么是自定义标签1,用户自定义的 Java语言元素,实质是运行一个或者两个接口的 JavaBean;2,可以非常机密地和 JSP 的表示逻辑联系在一起,又具有和普通 JavaBean 相同的业务逻辑处理能力;Edited by Foxit ReaderCopyright(C)by Foxit Software Company,2005-2008For Evaluation Only.3,当一个JSP 页面转变为 servlet 时,其间的用户自定义标签转化为操作一个
21、称为标签 hander的对象;4,可操作默认对象,处理表单数据,访问数据库以及其它企业服务;自定义标签库的特点1,通过调用页面传递参数实现定制;2,访问所有对 JSP 页面可能的对象;3,修改调用页面生成的响应;4,自定义标签间可相互通信;5,在同一个 JSP 页面中通过标签嵌套,可实现复杂交互。如何使用自定义标签库1,声明标签库2,使标签库执行对 Web应用程序可用声明标签库1,使用 taglib 指令声明标签库2,语法:注意:a.uri 属性可以是绝对的,也可以是相对 URL,该URL 指向标记库描述符(TLD)文件;b.uri 属性也可以是一个并不存在的 URL,该 URL 为 web.
22、xml 文件中将标记库描述符(TLD)文件的绝对URL 到本地系统的一个映射;3,范例:使标签库执行可用方式一:在 WEB-INF/classes目录下部署标记处理程序类;方式二:将标记处理程序类打包成 jar 文件并置于 WEB-INF/lib 目录。几种典型的标签1,不带属性和主体的简单标签:;2,不带主体但有属性的标签:;3,带有主体和属性的标签:./标签体;注意:a.属性列于 start tag 中,它是在标记库描述符(TLD)文件中指定,服务于标记库的自定义行为;b.标签体位于 start tag 和 end tag 间,可以是任何合法的 JSP 内容或者标签;定义标签1,开发实现
23、tag 的类(tag handler);2,编辑标记库描述符(TLD)文件;3,在 web.xml 中为标记库描述符(TLD)文件的绝对 URL 建立一个映射(该步骤可选);标记库描述符(TLD)文件1,一个描述标记库的 XML文件;2,内容开始是整个库的描述,然后是 tag 的描述;3,标记库描述符(TLD)文件用于WebContainer确认 tag 以及 JSP 页面发展工具;实现 tag 的类(标签处理器)(tag handler)1,是一些在引用了标签的 JSP 页面执行期间被WebContainer 调用以求自定义标签值的对象;2,必须实现Tag,SimpleTag 和 BodyT
24、ag 之一;3,可以继承 TagSupport和 BodyTagSupport 之一。标签库的接口和类的继承关系接口的继承关系:interfacejavax.servlet.jsp.tagext.JspTag interfacejavax.servlet.jsp.tagext.SimpleTag interfacejavax.servlet.jsp.tagext.Tag interfacejavax.servlet.jsp.tagext.IterationTag interfacejavax.servlet.jsp.tagext.BodyTag类的继承关系:classjavax.servlet
25、.jsp.tagext.TagSupport(implements javax.servlet.jsp.tagext.IterationTag,java.io.Serializable)classjavax.servlet.jsp.tagext.BodyTagSupport(implements javax.servlet.jsp.tagext.BodyTag)classjavax.servlet.jsp.tagext.SimpleTagSupport(implements javax.servlet.jsp.tagext.SimpleTag)(Interface)JspTag|(Interf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jsp 培训 笔记
限制150内