分享 JSP学习笔记 望各大神指点不足

Jsp   Java Server Pages

ASP : Active Server Pages  --

Asp xml不支持

PHP Hypertext Preprocessor 超文本预处理器

在早期开发网络数据库应用程序主要采用CGI技术公共网关接口技术

 

 

有不少支持JSPWeb引擎,例如JSWDKTOMCATResin

 

 JSP的运行原理:

¡  JSP页面第一次被请求执行时,Tomcat将启动一个线程:该线程将.jsp文件转换成.java文件,再将.java文件转换成.class文件,然后执行.class文件响应客户请求。

¡  当该JSP页面再次被执行时,将直接执行字节码文件。

¡  JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行

¡  只有当客户端第一次请求JSP时,才需要将其转换、编译

 

³ 优点:

² 优良的性能
   优于CGIPHPASP

² 平台无关性
   操作系统无关,Web服务器无关

² 可扩展性
   tag的扩展机制,简化页面开发

 

 

字节码文件的功能:

¡  HTML标记交给客户的浏览器显示。

¡  JSP标记、变量和方法声明、Java程序片由Tomcat服务器执行。

¡  Java表达式由Tomcat计算,然后将结果转化为字符串,交给客户浏览器显示。

 

页面局部变量与成员变量的比较:

¡  变量的共享性:

      成员变量:各个用户共享变量;

      页面局部变量:用户间没有联系。

¡  变量的初始化:

      页面被激活后,成员变量只被初始化一次;

      页面被激活后,每次有用户调用,页面局部变量都被初始化。

 

JSP页面的基本结构

1.     HTML标记

2.     JSP标记(分为指令标记、动作标记)

3.     成员变量与成员方法<%!  %>

4.     Java程序片<%  %>

5.     Java表达式<%=  %>

6.     注释

 

    JSP原始代码中包含了JSP元素和Template(模板) data两类

    Template data指的是JSP容器不处理的部分,即标记<%……%>以外的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器

 

 

jsp页面元素

      1.静态内容:HTML静态文本

2.指令:以“<%@ ” 开始,以“%> ” 结束。比如:<%@ include file = " Filename" %>

3.表达式:<%=Java表达式 %>

4.小脚本:<% Java 代码 %>

5.声明:<%! 方法 %>

6:标准动作:以“动作名”开始,以“动作名>  ” 结束

比如:

7.注释:   <%-- 这也是注释,但客户端不能查看到 --%><% //单行注释 %> <%  /*多行注释 */ %>

------------------------------------------------------------------------------------------------

    jspInit()

    JSP页面初始化时被调用。可以覆盖该方法,以提供任何的初始化工作

    jspDestroy ()

    JSP页面被销毁时调用。可以覆盖该方法,以提供任何的JSP清楚工作

    jspService()

    由容器自动定义,不应当提供该方法的实现

 

 

------------------------------------------------------------------------------------------------

JSP数据作用域有四种范围:Page,Request,Session,Application

Page范围

    所谓Page,指的是单单一页JSP Page的范围.

若要将数据存入Page范围时,可以用pageContext隐式对象的setAttribute(),得到数据用getAttribute()

 

Request范围

    指在一JSP网页发出请求到另一个JSP网页之间,这个属性就失效了.

 要将数据存入Request这个范围,使用request这个隐式对象的,setParameter(),得到这个范围的数据使用getParameter()

 

Session 范围

    Session的作用范围为一段用户持续和服务器所连接的时间,与服务器断线后,这个属性就无效了,只要将数据存入session对象,数据范围就为Session

Application范围

     Application的作用范围在服务器一开始执行服务,到服务器关闭为止.Applicateion的范围最大,停留时间也最长,所以使用要特别的注意,不然可能会造成服务器的负载越来越重,只要将数据存入application对象,数据的Scope就为Application

 

 

------------------------------------------------------------------------------------------------

Jsp 编译指令 Directive

² Page   通过设置内部的多个属性来定义整个页面的属性

Page 指令用来定义JSP文件中的全局属性,它描述了与页面相关的一些信息,其作用域为它所在的JSP文件页面和其包含的文件,但是<% @ page %>指令不能作用于动态的包含文件,例如

无论把<% @ page %>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。

 

1.     language:语言属性

<%@ page language=“java”%> 默认是java语言

2.     import:定义当前页面要使用的类

<%@ page imoprt="java.io.*"%>

<%@ page import="java.unti.*"%>

3.     contentType:定义JSP页面响应MIME类型和字符编码(MIME-文件类型,可在工具--文件夹选项内查看)

 <%@ page contentType="text/html;charset=gb2312"%>

4.session:在此JSP页面是否支持session(此页面是否可以使用session内置对象,值取truefalse)

<%@ page session="true/false"%>

               5.buffer:设置内置对象输出流out的缓冲区大小

                                                  <%@ page buffer="24kb"%>    --默认为8KB

                            6.autoFlush:设置缓冲区满时是否自动刷新,可取值为truefalse,默认为true                      <%@ page autoFlush="true/false"%>如取false,当缓冲区满时会发生异常

                            7.isThreadSafe:设置JSP页面是否支持多线程访问

<%@ page isThreadSafe="true/false"%>   默认为true,false,同一时刻只处理一个请求,其他请求排队

              8. info:设置JSP页面描述信息

                                             <%@ page info=" "%>

                      9.errorpage:设置当前页面发生异常时由哪个页面来处理这个异常

                                             <%@ page errorpage="jsp页面的URL"%>

                      10. isErrorpage:表示当前页面是否是处理其他页面错误的页面

                                             <%@ page isErrorpage="true/false"%>

 

 

 

 

² Include

JSP中用include指令包含一个静态的文件,同时解析这个文件中的JSP语句,使用jspinclude指令有助于实现jsp页面的模块化。其语法格式为:<%@ include file=“filename” %>,其中filename指被包含的文件的名称。

<%@ include %>指令将会在JSP编译时插入一个包含文本或代码的文件,当使用<%@ include %>指令时,这个包含的过程是静态的。静态的包含是指这个被包含的文件将会被插入到JSP文件中去,这个包含的文件可以是JSP文件、HTML文件、文本文件。如果包含的是JSP文件,这个包含的JSP文件中的代码将会被执行

 

注意:

   1.它是一种静态包含,JSP文件和插入的文件内容合并,在编译为.java->.class文件

2.主要用来包含共用性文件,比如设页眉,页脚,实现安全性检查功能的文件

   动态包含是合并结果,不是合并文件后再翻译,编译

 

² Taglib

taglib指令用来定义一个标签库以及其自定义标签的前缀.

其语法格式为:

<%@ taglib uri=" tagLibraryURI" prefix=" tagPrefix" %>

其中,属性uri(Uniform Resource Identifier,统一资源标识符)用来唯一的确定标签库的路径,并告诉JSP引擎在编译JSP程序时如何处理指定标签库中的标签,属性prefix定义了一个指示使用此标签库的前缀。

------------------------------------------------------------------------------------------------

 

JSP动作(Action)语法:

³ 常见的:

² jsp:useBean

± jsp:setProperty

± jsp:getProperty

² jsp:include

² jsp:forward

± jsp:param  用于指定参数和其对应的值

 

² jsp:plugin

± 嵌入applet

 

    动作

   用来把指定文件插入正在生成的页面。其语法如下:

w  <jsp:include page=“relative URL” flush=“true” /

动作允许包含静态文件和动态文件,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到jsp文件中去,这个文件不会被JSP编译器执行;如果这个文件动态的,那么这个被包含文件也会被JSP编译器执行。

 

    动作

     用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,因为它既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。其语法格式为:

{class="package.class" |

type="package.class" |

class="package.class" type="package.class" |

beanName="{package.class | <%= expression %>}" type="package.class“

}

{/> |

> other elements

}

元素的主体通常包含有元素,用于设置Bean的属性值。正如上面所说的,的主体仅仅只有在示例Bean时才会被执行,如果这个Bean已经存在,能够定位它,那么主体中的内容将不会起作用,但你可以在元素外用元素设定 JavaBean 的属性。

 

    动作

获得Bean实例之后,可以利用动作设置、修改Bean中的属性值。其语法格式如下:

name="beanInstanceName"

{property= "*" |

property="propertyName" [ param="parameterName" ] |

property="propertyName" value="{string | <%= expression %>}"

}

/>

元素使用Bean给定的setter方法,在Bean中设置一个或多个属性值。在使用这个元素之前必须使用声明此Bean,因为是联系在一起的,同时它们使用的Bean实例的名字也应当相匹配。

 

    动作

用来提取指定Bean属性的值,转换成字符串,然后输出。其语法格式为:

元素可以获取Bean的属性值,并可以将其使用或显示在JSP页面中。在使用之前,必须用创建它。

 

    动作

用于引导客户端的请求到另一个页面或者是另一个Servlet去。其语法格式为:

"} />

动作可以包含一个或几个子动作,用于向要引导进入的页面传递参数。需要注意,当动作发生的时候,如果已经有文本被写入输出流而且页面没有设置缓冲,那么将抛出一个IllegalStateException的异常。

 

   

                 JSP处理这个动作的时候,将根据客户端浏览器的不同,JSP在执行以后将分别输出为OBJECTEMBED这两个不同的HTML元素。其语法格式为:

type="bean | applet"

code="classFileName"

codebase="classFileDirectoryName"

[ name="instanceName" ]

[ archive="URIToArchive, ..." ]

[ align="bottom | top | middle | left | right" ]

[ height="displayPixels" ]

[ width="displayPixels" ]

[ hspace="leftRightPixels" ]

[ vspace="topBottomPixels" ]

[ jreversion="JREVersionNumber | 1.1" ]

[ nspluginurl="URLToPlugin" ]

[ iepluginurl="URLToPlugin" ] >

[

[ ] ]

[ text message for user ]

 

      jsp:param

格式

  作用includeforward指令一起使用,以名称--值的形式为这些指令提供参数信息,与它们合作时可以多次使用

 

       A.jsp

       <%

           String param1=request.getParameter("flag1");

           Srting param2=request.getParameter("flag2");

           if(param1.equals("0"))

           { out.print("Hello!");  }

           else

           { out.print("Hello world!"); }

       %>

 

 

---------------------------------------------------------------------------------------------------

JSP脚本

  JSP脚本即Scriptlet,也就是JSP中的代码部分,是java程序的一段代码,几乎可以使用任何java语法,它是在请求时期执行的,它可以使用jsp页面所定义的变量、方法、表达式或JavaBeans。脚本的语法格式为:

<% scriptlet %>

如果要在Scriptlet内部使用字符“%>”,必须写成“%>”

 

 

response.sendRedirect的区别

³

² 使用同一个request

² forward后的语句不会继续发送给客户端

² 速度快

² 服务器内部转换,

² 可以传参数

³ response.sendRedirect

² 是不同的request

² send后的语句会继续执行,除非return

² 速度慢

² 需要到客户端的往返,可以转到任何页面

² 可以传参数,直接写在url后面

 

JSP 的内置对象:

------------------------------------------------------------------------------------------------

request:

 request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie,header,和session 数据的有用的方法。(参数、属性、cookies、URL)

response

response 表示HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies 头信息等)。

      out

out 对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

pageContext

pageContext 表示一个javax.servlet.jsp.PageContext 对象。它是用于方便存取

各种范围的名字空间、servlet 相关的对象的API,并且包装了通用的servlet相关功能的方法。(JSP 的核心对象) 

pageContext.get(其余的八大隐藏对象) 用于自定义标签;

 

session:

session 表示一个请求的javax.servlet.http.HttpSession 对象,Session 可以存贮用户的状态信息。(request.getSession()、属性、invalidate()、跟踪机制)

1.【response.sendRedirect(response.encodeRedirectURL("应用路径+资源路径"))】

2.【response.encodeURL("url"))】

 

application:applicaton 表示一个javax.servlet.ServletContext 对象。这有助于查找有关servlet引擎和servlet 环境的信息。( 获取、属性、控制转发

(application.getRequestDispatcher("路径")))

 

config:

config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始化参数。

 

page:page 表示从该页面产生的一个servlet 实例。

 

exception:exception 针对错误网页,未捕捉的异常。

synchronized

¡  为了防止多个用户同时操作一个成员变量,可以对操作该变量的方法加锁。

¡  加锁的办法是用synchronized关键字修饰该方法,当一个线程执行该方法时,其它线程只能等待。

 

 

你可能感兴趣的:(JSP,Java,笔记)