JSP入门_ONE

来源:互联网 发布:镕基软件股票 编辑:程序博客网 时间:2024/06/13 17:35

引言

JSP(Java Server Page)和Serclet是Java EE规范的两个基本成员,他们是Java Web开发的重点知识,也是Java EE开发的基本知识。JSP和Servlet的本质是一样的,因为JSP最终必须编译成Servlet才能运行,或者说JSP知识生成Servlet的“草稿”文件。

1.简介

1.1:

JSP比较简单,它的特点就是在HTML中嵌入Java代码片段,或使用各种JSP标签,包括使用用户自定义标签,从而可以动态地提供页面内容。JSP本质是Servlet,当用户指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,包括每一个静态的HTML标签和所有在HTML页面中出现的内容。

1.2

JSP页面的内容包括以下两部分:①静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同。②动态部分:受Java程序控制的内容,这些内容由Java脚本动态生成。JSP工作原理:

这里写图片描述

根据上面的JSP页面的工作原理图,得到如下四个结论:☆JSP文件必须在JSP服务器内运行。☆JSP文件必须生成Servlet才能执行。☆每个JSP页面的第一个访问者速度很慢,因为必须等待JSP编译成Servlet。☆JSP页面的访问者无需安装任何客户端,甚至不需要可以运行Java的运行环境,因为jsp页面输送到客户端的是标准的HTML页面。

2.JSP的四种基本语法

2.1.1

可以按以下步骤来开发jsp页面:①编写一个静态的HTML页面。②用合适的语法向静态HTML页面镶嵌四种基本语法的一种或多种,这样既可为静态html页面增加动态内容。四种语法分为:

2.2.1JSP注释

①JSP注释,格式如下:
<%--注释内容--%>
与JSP注释形成对比的是HTML注释,HTML注释的格式是:
<!--HTML注释--!>
两者区别:HTML的注释可以通过源代码查看到,但JSP的注释是无法通过源代码查看到的。这表明jsp注释不会被发送到客户端。

2.2.2JSP声明

JSP声明用于声明变量和方法。在JSP声明中声明方法看起来很特别,似乎不需要定义类就可直接定义方法,方法似乎可以脱离类独立存在。实际上,JSP声明将会转换成对应Servlet的成员变量或者成员方法,因此JSP声明依然符合Java规范。JSP声明的语法:
<%!声明部分%>

2.2.3输出JSP表达式

JSP提供一种输出表达式值得简单方法,语法格式如下:
<%=表达式%>
注意:输出表达式后不能有分号。

2.2.4JSP脚本

以前JSP脚本的应用非常广泛,因此JSP脚本里可以包含任何可执行的Java代码。通常来说,所有可执行Java代码都可通过JSP脚本嵌入HTML页面。
<%jsp脚本%>
JSP脚本也可声明变量,但在JSP脚本部分声明的变量是局部变量。

3.JSP的三个编译指令

JSP编译指令是通知引擎的消息,它不直接生成输出。①page:该指令是针对当前页面的指令。②include:用于指定包含另一个页面。可以将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句(如果有的话)。③taglib:用于定义和访问自定义标签。使用编译指令的语法格式:
    <%@ 便编译指令名 属性名="属性值"···%>

4.JSP的七个动作指令

动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作。编译指令在将JSP编译成Servlet时起作用;而处理指令通常可替换成JSP脚本,它只是JSP脚本的标准化写法。JSP动作指令主要有如下七个:①jsp:forward 执行页面转向,将请求的处理转发到下一个页面。②jsp:param 用于传递参数,必须与其他支持参数的标签一起使用。③jsp:include 用于动态引入一个JSP页面。④jsp:plugin 用于下载JavaBean或Applet到客户端执行。⑤jsp:useBean 创建一个JavaBean的实例⑥jsp:setProperty 设置JavaBean实例的属性值⑦jsp:getProperty 输出JavaBean实例的属性值   forward与动态include:执行forward时,被forward的页面将完全代替原有的页面;而执行include时,被include的页面只是插入原有页面。简而言之,forward拿目标页面代替原有页面,而include则拿目标页面插入原有页面。

5.JSP脚本中的9个内置对象

1、request对象

   request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。

2、response对象

   response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。

3、session对象

   session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

4、application对象

   application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

5、out 对象

   out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

6、pageContext 对象

   pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

7、config 对象

   config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

8、page 对象

   page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

9、exception 对象

   exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

补充说明:

   request和response两个对象是_jspService()方法的形参,当Tomcat调用该方法时会初始化这两个对象。而page、pageContext、application、config、session、out都是 _jspService()方法的局部变量,由该方法完成初始化。    由于jsp内置对象都是在_jspService()方法中完成初始化的,因此只能在JSP脚本、JSP输出表达式中使用这些内置对象。千万不要在JSP声明中使用它们!当编写JSP页面时,一定不要仅停留在JSP页面本身来看问题,这样可能导致许多误解,导致无法理解JSP的运行方式。
0 0