JSP基础知识1

来源:互联网 发布:淘宝联盟怎么分享到qq 编辑:程序博客网 时间:2024/06/14 22:05

JSP工作原理

所有的JSP应用程序在首次载入时都被编译成Servlet文件,然后再运行,这个工作主要是由JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎要完成以下操作:
(1) 当用户访问一个JSP页面时,JSP页面将被编译成Servlet文件(Java文件)。
(2) JSP引擎调用Java编译器,编译Servlet文件为可执行的代码文件(.class文件)。
(3) 用Java虚拟机(JVM)解释执行.class文件,并将执行结果返回给服务器。
(4) 服务器将执行结果以HTML格式发送给客户端的浏览器。

JSP程序的注释有3种

1,隐藏注释

隐藏注释也是JSP的标准注释,写在JSP程序中,在发布网页时完全被忽略,不发给客户,当希望隐藏JSP程序的注释时是很有用的。

其语法格式为:<%-- 要注释的部分 --%>

2,HTML注释

发布网页时可以在浏览器源文件窗口中看到HTML注释,在这种注释中也可以使用JSP的表达式。
其语法格式为:<!-- 注释部分 [ <%= expression %> ] -->

3,java语言注释

在JSP程序中,也可以遵循Java语言本身的注释规则对代码进行注释,这样的注释和隐藏注释相似,在发布网页时完全忽略,在浏览器的源文件窗口中看不到。
其语法格式为:<%/*注释*/%>

变量和方法的声明

在JSP页面中可以声明一个或者多个合法的变量和方法,声明后的变量和方法可以在本JSP页面的任何位置使用,并将在JSP页面初始化时被初始化。
JSP声明的语法格式如下:
<%!  declaration; [ declaration; ] ... %>

在声明变量和方法时,需要注意以下几点:
(1)声明以“<%!”开头,以“%>”结尾。
(2)变量声明必须以";"结尾。
(3)变量和方法的命名规则与Java中的变量和方法的命名规则相同。
(4)可以直接使用在<% @ page %>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。
(5)一个声明仅在一个页面中有效。如果想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@ include %>或<jsp:include >元素包含进来。
例如:
<%! int i=0;%><%! int x ,y,z,a,b,c,sum;%><%! String str=“ 中国加油!我爱我的祖国”;%><%! Circle a=new circle(1.0);%><%! Date da=new Date();%>

JSP表达式

JSP中的表达式可以将某个计算结果转换成一个字符串并直接在网页上输出。
表达式的语法格式如下:
<%= expression %>
JSP的表达式中没有分号,只有在加引号的字符串部分才使用分号。

JSP表达式常用在以下几种情况:
1,向页面输出内容。
2,生成动态的链接地址。,
3,动态指定Form表单处理页面。

JSP常用指令

page指令

page 指令用来定义JSP文件中的全局属性,它描述了与页面相关的一些信息,其作用域为它所在的JSP文件页面和其包含的文件。
页面指令一般位于JSP页面的顶端,但是可以放在JSP页面的任何地方,无论把<% @ page %>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。为了JSP程序的可读性以及好的编程习惯,最好把它放在JSP文件的顶部。
在同一个JSP页面中可以有多个page指令。在使用多个page指令时,其中的属性除import属性外只能使用一次。

page 指令的语法格式如下:
<%@ page[ language="java" ][ extends="package.class" ][ import="{package.class | package.*}, ..." ][ session="true | false" ][ buffer="none | 8kb | sizekb" ][ autoFlush="true | false" ][ isThreadSafe="true | false" ][ info="text" ][ errorPage="relativeURL" ][ contentType="mimeType [ ;charset=characterSet ]" ][pageEncoding=" pageEncoding "][ isErrorPage="true | false" ]%>
language属性
【功能说明】language属性用于指定JSP页面中使用的脚本语言,其默认值为Java。根据JSP 2.0规范,目前只可以使用Java语言。 
例如:
<%@ page language="java" %> 
如果language 属性使用了其它的脚本语言,将会产生异常。

 
extends属性
【功能说明】extends属性用于指定JSP编译器父类的完整限定名,此JSP页面产生的Servlet将由该父类扩展而来。 
例如:
<%@ page extends="javax.servlet.http.HttpServlet" %> 
一般建议不要使用extends属性。JSP容器可以提供专用的高性能父类,如果指定父类,可能会限制JSP容器本身具有的能力。


import属性
【功能说明】import属性用于导入JSP页面使用的Java API类库。import属性是所有page属性中唯一可以多次设置的属性,用来指定JSP页面中所用到的类。

session属性
【功能说明】session属性用于指定是否可以使用session对象,若允许页面参与HTTP会话,就设置为true,否则设为false,其默认值为true


 buffer属性
【功能说明】buffer属性用于设定页面的缓冲区大小(字节数),属性值为none,表示禁用缓冲区,其默认值为8KB。 
例如:
设置页面缓冲区大小为64KB:<%@ page buffer="64kb" %> 
禁用缓冲区:<%@ page buffer="none" %>


autoFlush属性
【功能说明】autoFlush属性用于指定JSP页面缓冲区是否自动刷新输出,其默认值为true。如果该属性设置为true,则页面缓冲区满时自动刷新输出;否则,当页面缓冲区满时抛出一个异常。 
例如:
<%@ page autoFlush="false"%>

isThreadSafe属性
【功能说明】isThreadSafe属性用于指定JSP页面是否能够处理一个以上的请求,如果为true,则该页面可能同时收到JSP引擎发出的多个请求;反之,JSP引擎会对收到的请求进行排队,当前页面在同一时刻只能处理一个请求。其默认值为true。 
建议将isThreadSafe 属性设置为true,确保页面所用的所有对象都是线程安全的。 
例如:
<%@ page isThreadSafe="true" %>


info属性
【功能说明】info属性用于指定JSP页面的相关信息文本,无默认值。 
例如:
<%@ page info="Page directive property: info" %>


errorPage属性 
【功能说明】errorPage属性用于指定错误页面,无默认值。当页面出现一个没有被捕获的异常时,错误信息将以throw语句抛出,而被设置为错误信息网页的JSP页面,将利用exception隐含对象,获取错误信息。relativeURL默认设置为空,即没有错误处理页面。


isErrorPage属性
【功能说明】isErrorPage属性指定JSP页面是否为处理异常错误的页面,其默认值为 false。如果将isErrorPage属性设置为true,则固有的exception对象脚本元素可用。 


contentType属性
【功能说明】contentType属性用于指定内容MIME类型和JSP页面的编码方式。对于普通JSP页面,默认的contentType属性值为"text/html;charset=ISO-8859-1"。对于JSP文档,默认的contentType属性值为"text/html;charset=ISO-8859-1 "。
例如:
<%@page contentType= content="text/html; charset=UTF-8"%>


pageEncoding属性
【功能说明】pageEncoding属性用于指定JSP页面的编码方式,默认值为ISO-8859-1,为支持中文可设置为UTF-8。
例如:
<%@page pageEncoding="UTF-8"%>


include指令

include指令用于在JSP编译时,为页面插入一个静态文件,如JSP页面、HTML页面、 文本文件或是一段Java程序。
include指令的语法格式如下:
<%@ include file=“filename” %>


taglib指令

taglib指令用来指定页面中使用的标签库以及其自定义标签的前缀。
taglib语法格式为:
<%@ taglib uri=" tagLibraryURI" prefix=" tagPrefix" %>
uri属性:制定标签库相对路径
【功能说明】uri(Uniform Resource Identifier,统一资源标识符)属性用于指定标记库的存放位置,并告诉JSP引擎在编译JSP程序时如何处理指定标签库中的标签,无默认值。uri属性可以是在TLD (标记库描述符)文件或web.xml文件中定义的标记库的符号名,也可以是TLD文件或JAR文件的相对路径。 
prefix属性:制定标记前缀
【功能说明】prefix属性用于指定标记库中所有动作元素名中使用的前缀,无默认值。
例如:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
就是在页面中导入标签库,"http://java.sun.com/jsp/jstl/core"是JSP标签库所在的路径。