Jsp-查漏补缺

翻译后的jsp,继承HttpJspBase实现JspSourceDependent接口

_jspInit()
_jspDestroy()
_jspService()

1. javax.servlet.jsp.PageContext pageContext
2. application = pageContext.getServletContext();
3. config = pageContext.getServletConfig();
4. session = pageContext.getSession();
5. out = pageContext.getOut();
6. java.lang.Object page = this;
7. javax.servlet.http.HttpServletRequest response
8. javax.servlet.http.HttpServletResponse request
9 exception

pageContex application config session out
page request responce exception

jsp指令 include taglib page

include指令 是属于静态包含,它包含的所有多个jsp页面编译成一个Servlet文件

而与之相对的是

reques.getRequestDispatcher("x.jsp").include(request,responcse);

它包含的所有多个jsp页面编译成多个Servlet文件。执行的时候在动态包含内容进来。

面试题:静态包含与动态包含的区别:

静态包含:编译时包含,包含的所有多个jsp页面编译成一个Servlet文件,效率高
动态包含:运行时包含,所有多个jsp页面编译成多个Servlet文件,执行的时候在动态包含内容进来。

pageContext.forword(); 实际上这个是reques.ggetRequestDispatcher().forword()
pagecontext.include();实际上这个是reques.ggetRequestDispatcher().include()

pageContext.getAttribute("",Scope)//从四大域里面查找 page request session application

jsp运行原理:
当JSP页面第一次被访问时,Web服务器会请求交给JSP引擎去处理。
JSP引擎先将JSP页面文件转译成一个Java文件,也就是jsp会被翻译成一个Servlet,
服务器将前Java文件编译成字节码文件,再执行这个字节码文件来响应客户的请求。
当这个JSP页面再次被请求时,只要该JSP文件没有被改动,JSP引擎就直接调用已装载的Servlet。

out
out的类型是JspWrite
JspWrite相当于一种带缓存功能额PrintWrite。
page指令的buffer属性可以调整缓存大小或关闭

只有向out对象写入了内容,且满足如下任一条件时。out对象才会调用ServletResponse.getWrite方法
并通过该方法的PrintWrite对象将out对象的缓冲区内容真正写入到Servlet引擎提供的缓冲区中。
1.设置page指定的buffer属性关闭了out对象的缓存功能
2.out对象的缓冲区已满
3.整个jsp页面结束

面试题:out隐式对象的工作原理。

调用out对象方法写入的数据,首先存储在JspWrite对象的缓冲区里面
当JspWrite对象的缓冲区已满或整个jsp页面结束的时候
JspWrite对象会调用ServletResponse.getWrite()方法返回的PrintWrite对象的write()方法将数据写入Response的缓冲区里面

<jsp:include> --->动态包含,运行时包含
<jsp:forward> --->首页调整。首页不能配置Servlet,

<jsp:param> -->用法给forward的页面传递参数

映射jsp-->映射servlet

<Setvlet>
<servlet-name>xxx</servlet-name>
<jsp-file>/14.jsp</jsp-file>
</Setvlet>
<Servlet-mapping>
<Servlet-name>xxx</Setvlet-name>
<url-pattern>/index.html</url-pattern>
</Servlet-mapping>

时间: 2024-10-13 18:49:25

Jsp-查漏补缺的相关文章

近来的java小总结(2.1):类的知识的查漏补缺

首先,我是一名新手,所以,要带着批判的眼光来看下面的文章   这篇文章说了些什么? 这文章是我近来8.6号来在编程思想上打的代码,从0~200页的源码接近到在这里,下文正是总结这0~200页的的知识,涉及到接口,内部类.初始化,数值计算的一些细节.此文章不会一下子写完,可能隔一天可能再补下来.因为代码确实有点多.. 注意 1 我的注释不一定正确(不过各小标题和代码一定是正确的,因为是书本上的原话,但是注释不一定正确),如果你确信我的内容的话,你可能会损失很大,因为我只是个菜鸟,我只是来补救一些知

查漏补缺——java多态

---恢复内容开始--- 刚学完java,开始了查漏补缺阶段阶段,为了巩固自己的知识和为别人提供一些微末的帮助决定开通博客,求各位大牛们指出我的不足,不要吝惜言语,也希望我的总结可以对别人有帮助,对自己对他人负责. 开始正文:术语多态:可以定义为“有多种形态”,多态引用是一个一个在不同时刻可以指向不同类型对象的引用变量.通过多态引用可以调用不同的具体的方法. 类方法的多态性的实现有两种方式: 1:方法重载:可以声明多个同名但是参数不同(个数.类型和顺序)的方法.注意呵呵重载方法只能声明在一个类里

近来的java小总结(2.2):类的知识的查漏补缺

1 首先,我是一名新手,所以,要带着批判的眼光来看下面的文章   这篇文章说了些什么? 这文章是我近来8.6号来在编程思想上打的代码,从0~200页的源码接近到在这里,下文正是总结这0~200页的的知识,涉及到接口,内部类.初始化,数值计算的一些细节.此文章不会一下子写完,可能隔一天可能再补下来.因为代码确实有点多.. 注意 1 我的注释不一定正确(不过各小标题和代码一定是正确的,因为是书本上的原话,但是注释不一定正确),如果你确信我的内容的话,你可能会损失很大,因为我只是个菜鸟,我只是来补救一

java知识查漏补缺

一.重写(override)和重载(overload)的区别 二者除了名字相似,其实没什么联系 范围不同:重写发生在同一个类的不同方法之间.重载发生在父类和子类自荐. 前提: 重写要求:方法名相同,参数列表不同,对于返回值类型不要求相同. 重载要求:方法名形同,参数列表也相同.重载是实现多态的关键,注意如果父类中的方法是private类型,那么子类中对应方法不算重载,而相当于是定义了一个新方法. 二.final的用法 修饰类:该类不能被继承 修饰方法:该方法不能被重写 修饰属性:该属性初始化后不

自家用的java小总结(2.4):类的知识的查漏补缺(内部类)

1 2      首先,这是一篇自己用的文章,不对读者承担任何责任,所以,要带着批判的眼光来看下面的文章   1 发现了,得加上输出结果,怕自己出错,~~   这篇文章说了些什么? 这文章是我近来8.6号来在编程思想上打的代码,从0~200页的源码接近到在这里,下文正是总结这0~200页的的知识,涉及到接口,内部类.初始化,数值计算的一些细节.此文章不会一下子写完,可能隔一天可能再补下来.因为代码确实有点多.. 注意 1 我的注释不一定正确(不过各小标题和代码一定是正确的,因为是书本上的原话,但

查漏补缺

查漏补缺[1].this语句:this语句用于构造函数之间进行相互调用.this语句只能定义在构造函数的第一行,因为初始化要先执行.[2].对象的初始化过程 Person p =new Person("hei",10); 1.因为new用到了Person.class,所以先找到Person.class文件加载到内存中 2.执行类中的静态代码块,如果有的话,给Person.class类进行初始化 3.在堆内存中开辟空间,分配内存地址 4.在堆内存中建立对象的特有属性,并进行默认初始化 5

《CSS权威指南》基础复习+查漏补缺

前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司,事情不算多,于是拿起<CSS权威指南>进行"基础学习"+"查漏补缺",本篇文章主要是总结了些自己认为CSS中值的注意的几个知识点(本文知识点仅限本书范围内,若要讲CSS全部样式,那本兽还是选择慢慢懵逼去~). 选择器 这里要说明的是类选择器的嵌套选择与多类

hibernate查漏补缺2

Hibernate对象状态 瞬时(transient):由new操作符创建,且尚未Hibernate Session关联.瞬时对象不会被持久化到数据库,也不会被赋予持久化标识. 持久(persistent):持久化的实例在数据库中有对应的记录,并拥有一个持久化标识. 持久化的实例可能是刚被保存,或刚被加载的,无论哪一种,它都只存在于相关联的Session作用范围内.这点很重要.Hibernate会检测处于持久化状态的对象的任何变动,在当前操作单元执行完毕时,将对对象数据与数据库同步. 脱管(de

今天开始慢下脚步,开始ios技术知识的查漏补缺。

从2014.6.30 开始工作算起.现在已经是第416天了.不止不觉,时间过的真快. 通过对之前工作的总结,发现,你的知识面,会决定你面对问题时的态度.过程和结果. 简单来讲,知识面拓展了,你才能有更多的备选方法,才更有可能选择到一条最最有效的路. 趁现在正好有时间,时机又正好,开始我的技术总结补缺之路吧. 参考教材<疯狂iOS讲义>.主要原因是,知识比较全面,涉及面比较广.适合查漏补缺. 开始吧.看我能坚持多久. 版权声明:本文为博主原创文章,未经博主允许不得转载.

查漏补缺1

前言 Java的部分有基础.设计模式.IO.NIO.多线程,之后有时间还会把集合这 部分补上去,这么多内容里面,难免有一些知识点遗漏,本文主要是讲解这些遗漏的知识点.这些知识点,不是特别大的难点,所以没有必要专门写一篇文章讲解: 但是这些知识点,也不是一两句话就说得清楚的,所以放在这里.查漏补缺系列文章,每篇5个知识点,只要有值得研究的问题就会写上来. Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为 Thread