1、查找与JSP文件对应的Servlet,如果已经存在,就调用它的服务方法。
2、如果与JSP对应的Servlet不存在,就解析文件系统中的JSP文件,将它翻译成Servlet源文件,接着把Servlet源文件编译成Servlet类,然后再去初始化并运行Servlet。
以下是经过翻译的JSP文件,可见在它的服务方法中存在以下对像
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
jsp语法
JSP指令。
<%@ 指令名 属性=“值”%>
JSP声明。成员变量,或是成员方法.
<%! …. %>
Java程序片段。不论有多少这样的代码块,都将包含_jspSerivice方法中。
<% … %>
Java表达式。-快速输出信息. _jspSerivice
<%= …%>
JSP隐含对像。
pageContext.request,response,session,confing,application
JSP指令-page:
语法:
<%@ 指令名 属性=“值”%>
Page指令-用于指定所使用的语言,及导入的包。
属性说明:
language – 示例:language=“java”
import -如: (注意多个引用之间使用逗号分开。)
<%@ page import=“java.util.*,java.sql.*”%> contentType – 指定响应结果的MIME类型。默认为text/html;charset=ISO-8859-1
session = true | false –指定jsp页面是否使用session.
errorPage = url – 指定当发生异常时转发到哪一个页面。
isErrorPage = true|false, - 表示此页是处理异常的页面。
pageEncoding – 设置页面的编码方式,此编码方式,会自动应用到contentType中的charset上,如果没有设置content-Type的话。显示时以content-Type为准。建议这两个值应该设置一个或至少应该一致。建议设置content-Type
buffer = none | 8kb | sizeb – 设置页面缓冲区大小。-建议不要修改此值。
JSP指令-include:
JSP可以通过include指令来包含其他文件的内容,被包含的可以是JSP或html文件。
语法:
<%@ include file=“目标页面”%> -静态包含.
共享变量,共享request
<jsp:incluce.. JSP标签动态包含.
仅共享request
实际应用:
在开发中通常使用此功能包含一些不经常修改的页头和页脚。
<%
out.print("Java学习");
//演示导包
List<String> list = new ArrayList<String>();
PrintWriter pw = new PrintWriter(System.out);
//演示变量
String name = "Jack";
request.setAttribute("hncu","OKOK");
%>
<div>这是一个div中的文字</div>
<%
out.print("Java学习---第2次输出");
//session.getAttribute("name");
out.write(name);
name="张三";
out.write("<br/>"+ abc()+age );
%>
<br/>
<%=name+","+age%>
<%! //这种方式写脚本,会声明成类的成员
public String abc(){
return "fun:";
}
int age=5;
%>
<hr/>
<!-- 静态导入 -->
<%@ include file="jsps/a.jsp" %>
<br/>
<a href="jsps/include.jsp">演示动态导入</a>
<!-- 在每个页面的最后动态导入 脚页面 -->
<jsp:include page="/jsps/foot.jsp" ></jsp:include>