这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 扣丁学堂JavaEE培训之JSP动态网页编程技术原理详解

共1条 1/1 1 跳转至

扣丁学堂JavaEE培训之JSP动态网页编程技术原理详解

助工
2020-11-30 16:33:53     打赏

  一、jsp概述


  1、关于jsp


  JavaServerPages简称jsp,从“server”这个词可以看出,这其实也是一门java服务端技术,其实可以简单的把jsp认为是servlet,一点错也没有。Jsp的实质,就是客户端需要的资源是通过jsp技术动态生成的。

  2、jsp的技术原理


  1)当客户端在访问一个jsp资源时,服务器上有相应的servlet来负责jsp资源,那么该servlet将会把jsp页面翻译成一个servlet,然后执行该servlet的service方法。


  2)服务器将jsp翻译成java程序(就是一个Servlet),然后执行该Servlet的service方法,在方法内部动态地向客户端写html代码。


  因此jsp就是一个servlet,也就是jsp页面将被翻译成servlet


  3、jsp与servlet的选择


  jsp就是servlet,那么如果碰到需要写繁多的html代码,建议使用jsp,如果需要写繁多的java代码,建议使用servlet。


  二、JSP技术详解


  1、JSP脚本


  ?就是怎样在jsp页面中使用java代码,使用了脚本的地方,就不会作为输出流的内容,而是作为java代码来执行。使用方式有三种:


  1)jav代码会被作为程序的一部分来执行,而不会被翻译成out.write(),这是常用的。


  2)会被翻译成out.print(java代码)


  3)声明成员变量。


  4)jsp的注释方式


  html的注释:


  用户看得到,程序员也看得到


  java的注释://单行注释/多行注释/


  ?用户看不到,但是会被翻译


  jsp的注释:用户看不到,不会被翻译,只有程序员在写jsp页面时才看得到。


  2、三大指令


  1)page指令


  page指令是用于告诉服务器该如何翻译此jsp页面。通过page指令的属性来指明翻译的效果。


  language:指的是jsp页面支持哪种语言,只支持java,所以该属性可以省略


  pageEncoding和contentType写一个就行,建议使用pageEncoding,更加简单


  session:默认值是true,默认情况下服务器会为该页面开辟一个session空间


  import:用于导入该页面中的java类需要用到的包


  errorPage:当发生错误时跳转到的资源,注意,该地址是一个服务器地址。


  isErrorPage:默认值是false。当在web.xml中配置错误页面时,需要将该jsp页面的isErrorPage设为true.


  404/error.jsp?


  总结:一般情况下,page指令就这么写即可:


  2)include指令:静态包含,file属性使用的是服务器地址。


  include指令是用于在一个jsp页面中包含另一个jsp页面,两个页面组合成一个页面发送给客户端。


  所谓的静态包含,在翻译时是把被包含的jsp页面写给客户端。那么此时客户端拿到的是两套html标签。


  3)taglib指令:标签库


  taglib指令用于引入第三方标签库,通过taglib指令中的prefix指明前缀,通过前缀来使用第三方标签库中的标签


  3、四大域对象(jsp有四个,servlet有三个(request,session,servletContext))


  1)pageContext


  (1)pageContext作为域对象


  描述当前page的上下文。那么pageContext对象是一个域对象,所谓域对象,就是提供了一个区域,用来存储数据。因此当前的page就能向pageContext对象中存储数据.


  pageContext域对象的作用范围:当前page(页面)


  setAttribute(Stringkey,Objectvalue);


  getAttribute(Stringkey);


  removeAttribute(Stringkey);


  向其他域对象中操作数据.


  pageContext.setAttribute(Stringkey,Objectvalue,intscope);向其他域对象中存值


  pageContext.getAttribute(Stringkey,intscope);向其他域对象中取值


  pageContext.removeAttribute(Stringkey,intscope);向其他域对象中移除值


  intscope来自于PageContext类的常量


  REQUEST_SCOPE:表示request域


  SESSION_SCOPE:表示session域


  APPLICATION_SCOPE:表示application域


  findAttribute(Stringkey):Object:这是通过键,向所有域中搜索数据。


  搜索的顺序:


  pageContext->request->session->application


  (2)可以通过pageContext对象来获取其他八个内置对象


  通过pageContext的get*()来获得。


  2)request


  作用范围:一次请求


  3)session


  作用范围:一次会话


  4)application


  作用范围:当前web应用


  4、九大内置对象


  所谓的内置对象,即在jsp页面的脚本中能直接使用的java对象。


  out:输出流


  当通过out的write()写内容时,实际是往out的缓冲区(默认大小是8kb)中去写,有两种情况导致缓冲区的内容会冲刷进底层的输出流中


  1)out对象被销毁


  2)out的缓冲区不够用了。其实我们可以设置out缓冲区的大小。如果缓冲区是0kb,那么out就把内容直接写到response缓冲区中。


  page:this,表示当前的Servlet对象


  pageContext:重点,表示当前page的上下文对象,也是一个域对象


  session:当jsp页面的page指令的session属性为true时,才会有session对象


  request:


  response


  exception当jsp页面的page指令的isErrorPage属性为true时,才会有exception对象


  application:实际就是ServletContext对象


  config:实际就是ServletConfig对象


  5、Jsp标签


  1)jsp:include


  动态包含:在一个页面中包含另一个页面的内容


  和静态的区别:


  ?静态包含会在翻译的过程中直接翻译被包含的页面,被包含的页面不会产生java文件。


  ?而动态包含会在翻译的过程中只翻译自己页面的内容,被包含的页面的翻译交给相应的类来完成,被包含的页面会产生java文件,实际开发中更加常用动态包含。


  2)jsp:forward


  请求转发,与servlet中的请求转发的效果一致。


  最后想要了解更多Java信息的同学可以前往扣丁学堂官网咨询,扣丁学堂JavaEE培训深受学员的喜爱。扣丁学堂不仅有专业的老师和与时俱进的课程体系,还有大量的Java视频教程供学员观看学习哦。扣丁学堂Java技术交流群:850353792。



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]