JSP全称叫java server page jsp页面要被web容器翻译成java类,按照servlet规范,所有jsp翻译生成的类,必须实现httpjsppage配置接口,而HttpjspPage是servlet的子接口,也就意味所有jsp翻译生成类也会实现servlet,所以,从这个意义上说,jsp本质是servlet。jsp重在于页面显示,而servlet重在与逻辑处理 JSP引擎: 是web容器编写的类,负责将jsp页面翻译成java类,在web容器/conf/web.xml中进行注册。 jsp生命周期: 1. 由jsp引擎将jsp页面翻译成java代码 2. 将java代码编译成class字节码文件 3. 加载到容器 4. 由容器实例化成对象 5. 初始化阶段相关的方法是jspInit(); 6. 请求到达,调用服务阶段相关的方法是:_jspService() 7. 销毁阶段相关的方法是jspDestroy() js网页主要由元素(Element)和模板数据(templateData)两部分组成 web容器支持两种不同格式的jsp语法: 1. 普通格式和XML兼容模式 2. 普通jsp语法是设计给开发者用的 3. xml兼容jsp语法是设计用来容易被开发工具使用的 jsp的脚本元素: 1. 声明:<%! %>定义jsp类的成员变量、静态变量和方法。 2. 脚本:<% %> 丰富_jspService(),在脚本中定义的变量、全部是_jspService()的局部变量。 3. 表达式:<%= % >丰富_jspService(),相当于out.print()向页面输出内容。注意,后面不能加分号;。 jsp注释: jsp注释 <%--xxxx--%> 容器不翻译,只在源代码可见,最为安全 html注释: <!--xxxx--> html会通过out.print输出到客服端,客服端和服务器均可见,最不安全 java注释: // /**/ 给java代码书写的注释,只在服务器端可见 jsp隐式对象: jsp引擎翻译的jsp类中,在_jspService()中会定义九个变量,并将这些变量做初始化,由于脚本和表达式是在丰富_jspService()方法,所以可以直接使用这些变量,这些变量称为jsp的隐式对象 jsp隐式对象有九个: 四个作用域: 1. pageContext:只在当前jsp页面有效。 2. request:作用于请求 3. session:所用与会话 4. application:作用于全局。 两个输出 5. response:相应对象 6. out:打印输出流 7. page:当前对象 8. config:配置对象 9. exception:异常对象 page指令: - contentType:设置MIME类型和编码集 - pageEncoding:设置编码集,MIME类型默认为text/html; - import:导入该jsp类中所用到的类。如果需要导入多个类,中间以,逗号分开。 - session:默认为true,表示访问该jsp页面是,产生会话对象。 - errorPage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面 - isErrorPage:表示该jsp页面为出错处理页面,定义了exception隐式对象,接收异常对象 <%@include file="my.jsp" %>叫做指令包含,也叫静态包含,在编译时发生,将本身jsp和包含的jsp放在一起编译,形成一个class文件,所以两个页面不能存在同名变量,指令包含也只能包含文件 <jsp:include page="my.jsp">叫做动作包含,在请求时发生,本身jsp包含的是另一个jsp执行的结果,形成两个class文件,所以两个页面可以存在同一个变量。动作包含可以包含文件,也可以包含servlet输出结果。同时可以传递参数。 <jsp:include page="/out"> <jsp:param value="ppp" naem="myid" /> </jsp:include> jsp网页转发到另一个jsp页面 <jsp:forward page="relativeURL"/>内部转发页面