**********************为什么有JSP***********************
servlet 输出比较麻烦 ,JSP用来简化servlet输出
**********************什么是JSP***********************
Java Server Pages 服务器端技术
jsp= html + java
******************JSP的工作原理(第一次访问JSP页面时为什么比较慢)*******************
第一次访问时
JSP引擎 编译 运行
index.jsp--------->index_jsp.java(Servlet源程序)------->indx_jsp.class---------> 遵循的是servlet的生命周期
第二次访问时
如果jsp 没有发生改变 直接调用servlet的service方法
如果jsp 发生了变动 从新转换
tomcat
JSP Servlet
index.jsp02 index_jsp.java01
jsp转换后的servlet在work文件夹中
*******************************JSP的五个组成部分*******************************
一.模板元素
html 和 xml
二.注释元素
1. html注释
<!-- 注释内容 显示到客户端浏览器的源代码中-->
2. JSP注释
<%-- 注释内容--%>
例如:
<%--我是JSP注释 我只会存在于JSP文件中 转换后的Servlet中不存在 --%>
3. Java注释
转换后的servlet中也存在
<%
//
/*
*/
/**
*/
%>
****************************************三.指令元素*******************************************
一. page
1 import 导入
<%@ page import="java.util.*,com.vo.Category" %>
2 errorPage 和isErrorPage
errorPage: 错误处理页面, 当前JSP页面如果发生错误,会自动跳转到errorPage指定的页面,然后由这个页面给用户响应信息
isErrorPage: 如果错误处理页面中,想使用exception这个内置对象 需要 在错误处理页面中加入isErrorPage="true"
3.pageEncoding 和 contentType
pageEncoding: 页面编码 要和JSP页面本身的编码方式一致才不乱码
实质是指定 JSP引擎 解码 读进来的JSP文件的解码方案
contentType: 会转换成servlet中的response.setContentType("text/html;charset=utf-8");
SCWCD
Sun Certified Web Component Developer
二. include
<%@include file="reused.jsp" %>
静态包含 相当于把reused.jsp的全部代码 拷贝到这个位置
三. taglib
****************************************四.脚本元素*******************************************
一.声明
<%!
声明变量和方法
--会转换成servlet中的成员变量或成员方法
%>
二. scriptlets
<%
java代码片段1
%>
<%
java代码片段2
%>
多个scriptlets代码 会合成一个 转换到 servlet中的 _jspService方法中
三. JSP表达式
<%="你好"%>
相当于
<%
out.println("你好");
%>
**********************五.动作元素***********************
1. 动态包含
<jsp:include page="reused.jsp"/>
**********************静态包含和动态包含的区别**************
1. 动态包含可以传参数,静态包含无法传参
2. 静态包含 父页面和被包含的页面 合成一个jsp 一起转换成 一个servlet
2个JSP页面 1个servlet
动态包含吧
2个JSP 2个servlet
3. 静态包含会 被包含页面的全部代码 都引入(包括指令元素)
动态包含 不会引入 被包含页面的指令元素
如何选用??
需要传参使用动态包含.
如果复用的页面经常改动,使用动态包含…
因为如果使用静态包含,需要把整个大的页面全部从新转换成servlet效率低,使用动态包含就只会从新转换被引入的页面.