JSP工作原理
一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet
JSP引擎使用javac把转换成的servlet的源文件编译成相应的class文件
对每一个请求,JSP引擎创建一个新的线程来处理请求
JSP和Servlet本质
- JSP是嵌套Java代码的HTML代码
- JSP转换成对应的Servlet类运行
- Servlet是嵌套HTML代码的Java代码
JSP生命周期
转译 --> 编译 --> 加载(将类加载至内存
)–> 实例化(创建一个Servlet类实例对象
)–> 初始化( jspInit() ) --> 服务( _jspService() ) --> 销毁( jspDestroy() )
JSP转换Servlet
jsp | Servlet |
---|---|
<%= %>表达式和HTML代码 | out.write(); |
<%! %>声明变量、方法,可以先使用后声明 | 成员变量、方法 |
<% %>声明变量、方法,必须先声明再使用 | _jspService()中的局部变量、方法 |
<%@ page import=“”%> | import语句 |
<jsp:useBean id=“” class=“类名” /> | 创建一个类和一名为id的对象 |
page伪指令属性
- import属性(相当于java中的import)
– <%@page import=“java.io.,java.sql.”%>
– 默认导入包:java.lang、javax.servlet、javax.servlet.jsp、javax.servlet.http - session属性
– session属性指定页面是否需要一个http会话
– <%@page session=“true/false”%> //默认为true,
– 相当于
- errorPage和isErrorPage属性(JSP异常处理)
– JSP产生一个不能捕获的溢出时跳转到一个错误页面
<%@page errorPage=“error.jsp”%>
在error.jsp页面中必须加入<%@page isErrorPage=“true”%>才能进行错误处理 - info属性
– 用于指定JSP的描述信息
<%@page info=“information”%> - contentType和pageEncoding属性
– contentType属性指定页面响应的类型和字符编码
<%@page contentType =“text/html;charset=UTF-8” %>
– pageEncoding属性用于指定JSP页面字符编码格式,默认值为ISO-8859-1
<%@page pageEncoding =“UTF-8”%> - language和extends属性
– language属性指定JSP页面中声明、脚本、和表达式中使用语言,默认是Java
<%@page language=“java” %>
– extends属性用于指定JSP页面对应Servlet类的基类,极少使用
<%@page extends=“mypackage.BaseServlet”%> - buffer和autoFlush属性
– buffer属性指定JSP的输出缓存区的最小值
<%@page buffer=“32kb” %>
– autoFlush属性用于指定当缓存区满时,是否自动将数据发送给客户端,默认值为true
<%@page autoFlush =“false”%>