- 在HTML中嵌入Java脚本代码
- 由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码
- 然后将生成的整个页面信息返回给客户端
特点:
1.程序逻辑和现实分离。具有动态页面与静态页面的分离。
2.可重用组件
3.使用标签简化页面开发,JSP标记具有可扩展性
4.具有java的特点,所有的JSP页面都被编译成Servlet,如安全性,跨平台性,通过编译后执行,克服了ASP的脚本级解释执行的缺点。
2.JSP执行流程
a.用户(客户机)访问相应的JSP页面。
b.服务器找到相应的页面。
c.服务器将JSP转译成Servlet的源代码(.java文件)
d.服务器将Servlet源代码编译为class文件
e.服务器将class文件加载到内存并执行。
f.服务器将class文件执行后生成的HTML代码发送给客户机,客户机浏览器根据相应的HTML代码进行显示。
Web容器处理JSP文件请求需要经过3个阶段:
.翻译阶段.java
.编译阶段.class
.执行阶段
特点:第一次请求之后,Web容器可以重用已经编译好的字节码文件,不执行转译只执行响应请求;如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译 。
3.JSP 页面的元素包括:
声 明 :<%! 声明语句 %>
使用声明语句声明的变量为全局变量,当有多个用户执行此JSP页面时,将共享该变量。如果该变量有改变值的语句,不同浏览器访问的值会不一样。
方法声明后可在页面中多处调用
小脚本 :<% Java 代码 %>
表达式: <%=Java表达式 %>
JSP表达式标签不必也不能使用分号作为结束的标记。
注释 : <!-- html注释,但客户端可以查看到 -->缺点:不安全,加大网络传输负担
<%-- JSP注释,但客户端不能查看到 --%>
还可以在脚本中使用Java注释。不会在HTML源代码中显示
静态内容 :HTML静态文本
4.指 令:以“<%@ ” 开始,以“%> ” 结束。 page指令:主要用来设定JSP页面的全局属性,该配置作用为JSP整个页面。 语法:<%@ page 属性1="属性值" 属性2="属性值1,属性值2"… 属性n="属性值n"%> 1.<%@ page language="java" %> 声明脚本语言种类,默认是Java(目前只能Java) 2.<%@ page extends="继承的父类" %> 指定该JSP生成的Servlet继承哪个父类,很少使用。 3.<%@ page import="导入的包名" %> 导入的Java包,默认导入的包: java.lang.*; javax.servlet.*; javax.servlet.jsp.*; javax.servlet.http.*; 4.<%@ page session="false" %> 该JSP页面是否可以使用session对象,默认是true。 5.<%@ page buffer="40kb" %> 指定输出流是否具有缓冲区,设置为none表示输出流不具有 6.<%@ page autoFlush="true" %> 缓冲区是否进行强制输出,设置为true,那么当缓冲区满的时候仍能输出正常;设置为false,当缓冲区满到时候将会产生异常。 如果buffer属性设置为none,就不能将autoFlush设置为false。autoFlush默认属性为true。 7.<%@ page isThreadSafe="true" %> 指定该JSP文件是否支持多线程使用,默认为true。 8.<%@ page info="JSP文件相关信息" %> 设置该JSP文件的相关信息,可以是任何的信息字符串。 用Servlet.getServletInfo方法来获取该信息。out.println(getServletInfo()); 9.<%@ page errorPage="错误处理页面" %> 设置在当前JSP文件发生异常错误时,网页重新跳转到能够处理异常的JSP文件。 10.<%@ page isErrorPage="false" %> 指定该JSP文件是否为能够处理异常的JSP文件,默认值时false。 11.<%@ page contentType="text/html; charset=UTF-8" %> 指定该JSP文件的MIME格式,以及网页编码格式,可以在网页正常显示JSP中的中文。 12.<%@ page pageEncoding="UTF-8" %> 指定网页的编码格式。 13.<%@ page isELIgnored="false" %> 指定该JSP文件是否支持EL表达式。如果设置为true,表示JSP文件忽略EL表达式,也就是EL表达式不会被执行; 如过设置为false,则表示EL表达式不会被忽略,EL表达式将会被执行。 include指令 用于在JSP文件中插入一个包含文本或代码的文件(HTML文件,文本文件,JSP文件),将被包含的文件所执行的结果插入到JSP文件放置include指令的位置。 语法格式:<%@ include file="被包含文件的地址" %> 只有一个属性file,值为URL地址。 1.包含文本文件<%@ include file="content.txt" %> 把文本里面的内容显示在放include指令的位置,修改文本内容后页面出现乱码,在文本文件的第一行加入<%@ page contentType="text/html; charset=UTF-8" %>就能正常显示中文。 2.包含HTML文件<%@ include file="content.html" %> .包含JSP文件<%@ include file="content.jsp" %> taglib指令 用来声明此JSP文件使用了自定义标签,同时引用所指定的标签库并设置标签库的前缀。 语法格式:<%@ taglib uri="" prefic="" %> 包含两个属性,uri用来指定标签库的位置,prefix属性用来指定该标签库使用的前缀。