JSP技术(一)

来源:互联网 发布:php 获取网页内容 编辑:程序博客网 时间:2024/04/28 05:15

Java Server Pages (JSP)

它和Servlet技术一样,都是Sun公司定义的一种用于开发动态Web页面的技术。特点:
* 书写像是在写Html页面
* 允许在页面中写java代码
* 在其中可以获得request,response等常用Web开发对象,从而可以实现与浏览器交互。

应用:在MVC设计模式下,JSP主要用来做数据输出(显示)。

实现原理

当我们访问JSP时,实际上是访问Servlet,在这个被访问的Servlet的service方法中,会将JSP页面打给浏览器,并执行Java代码,并且service方法中准备了各种Web对象,即JSP九大对象:
PageContext, Response, Request, ServletContext, HttpSession, ServletConfig, JspWriter(out), Exception,
Object(page) 。

不过这九大对象在JSP页面中都可以通过PageContext对象获得。example:${PageContext.request}

JSP语法

JSP模板元素

JSP页面中的HTML内容称之为JSP模板元素。它定义了网页的基本骨架,即定义的页面的结构和外观。

JSP脚本表达式

JSP脚本元素用来插入Java代码,这些Java代码将出现在由当前JSP页面生成的Servlet中。脚本元素有三种格式:
* JSP声明: 格式<%! declaration; %>,其作用是把声明加入到Servlet类(在任何方法之外)
* JSP脚本表达式:格式<%= expression %>,作用是计算表达式并输出其结果
* JSP脚本片段: 格式<% code %>,作用是把代码插入到Servlet的service方法

NT:
1. JSP脚本片段中的代码应遵守java规范。(废话), 并且每个片段中的内容都是可以相互访问的(即可以组合),因为他们都是_jspService方法(Servletservice方法)中的代码。
2. JSP声明可以用于鼎业JSP页面转换成Servlet程序的静态代码块、成员变量和方法。

JSP注释

语法:<%– xxxx –%>
NT:html的注释会直接打给浏览器,而JSP的注释不会打给浏览器,即在浏览器客户端查看网页源代码是不会看到JSP注释

JSP指令

它是为JSP引擎而设计,他们并不直接产生任何可见的输出,而只是告诉引擎如何处理JSP页面中的其余部分,在JSP2.0规范中共定义了3个JSP指令。(page, include, tablib)。
基本语法: <%@指令 属性名=“值” %>

page指令

example : <%@ page language=”java” pageEncoding=”UTF-8”%>
该指令用于定义JSP页面的各种属性,它的作用范围是整个JSP页面,该指令最好放在第一行。它的属性:

  1. language属性: 指明JSP文件中使用的脚本语言,目前只能使用Java。
  2. contentType属性: 定义了JSP页面字符编码和页面响应的MIME类型。默认的MIME类型是text/html,默认的字符集是ISO-8859-1.
  3. import属性 该属性用于JSP引入Java包中的类,如果你要包含多个包的话,将这些包的名称用逗号隔开放在一个import中,或者使用多个import分别声明。它是唯一可以多次指定的属性。
    默认引入的java包: java.lang.* , javax.servlet., javax.servlet.jsp., javax.servlet.http.*
  4. extends属性 :定义此JSP页面产生的Servlet是继承自哪个父类。请特别谨慎使用这一功能,因为,服务器也许已经定义了一个。JSP规范对不完全理解其隐意的情况下使用此属性提出警告。
  5. isErrorPage属性: 默认值为“true”,设置是否显示错误信息。如果为true,可以看到出错信息,如果为false,就看不到了。
  6. errorPage属性: 设置处理异常事件的JSP文件的位置。表示如果发生异常错误,网页会被重新指向一个URL页面。错误页面必须在其page指令元素中指定isErrorPage=”true”。
  7. session属性:默认值为“true”,定义是否在JSP页面使用HTTP的session。如果值为true,则可以使用session对象;如果值为false,那么JSP页面就不被加入到session中,session内置 对象则不能使用,而同时会造成Bean的scope属性值只能是“page”
  8. Buffer属性: buffer=”none|8kb|sizekb” 。为内置对象out指定发送信息到客户端浏览器的信息缓存大小。以kb为单位。默认值是8kb.你也可以自行指定缓存的大小。也可以设置 为“none”,那么就没有缓冲区,所有的输出都不经缓存而直接输出。
  9. autoFlush属性: 指定是否当缓存填满时自动刷新,输出缓存中的内容。如果为true,则自动刷新。否则,当缓存填满后,可能会出现严重的错误。当你把buffer设置为none时,就不能将 autoFlush设置为false。
  10. isThreadSafe属性:指定JSP页面是否支持多线程访问。默认值是ture,表示可以同时处理多个客户请求,但是你应该在JSP页面中添加处理多线程的同步控制代码。如果设置为false,JSP页 面在一个时刻就只能响应一个请求。
  11. info属性: info=”text” 指定任何一段字符串,该字符串被直接加入到翻译好的页面中。可以通过Servlet.getServletInfo()方法得到。

NT:对于errorPage, 其实我们也可以在web.xml中使用元素为整个WEB应用程序设置处理界面,其中的元素制定异常类的完全限定名,指定错误处理页面路径。(但是,JSP页面中的errorPage优先级更高)
对于:isErrorPage 若指定true, 则服务器会将这个JSP页面的异常对象,传递到Servlet,(即在Servlet的service方法中增加这个对象,所以平常是8大对象)

include指令

Include指令的功能是在JSP编译时插入包含的文件。包含的过程是静态的。它可以把内容分成更多可管理的元素,如包括普通页面的页眉或页脚的元素。包含的文件可以是JSP、HTML、文本或是Java程序。 (它所包含的JSP页面会被翻译成Servlet)
include指令的语法:
<%@ include file=”relativeURL” %> 其中只有一个file属性,这个属性指定了被包含文件的路径。
NT: 动态包含(运行时包含): request.getRequestDispather(“/index.jsp”).inclue(request, response); 静态包含性能较好

taglib指令

taglib指令的功能是使用标签库定义新的自定义标签,在JSP页面中启用定制行为。
taglib指令的语法: <%@ taglib uri=”URIToTagLibrary” prefix=”tagPrefix” %>

这里自定义的标签有标签和元素之分。因为JSP文件能够转化为XML,所以了解标签和元素之间的联系很重要。标签只不过是一个在意义上被抬高了点的标记,是JSP元素的一部分。JSP元素是JSP语法的一部分,和HTML一样有开始标记和结束标记。元素可以包含其它的文本,标记,元素。使用自定义标签之前必须使用<% @ taglib %>指令,而且可以在一个页面中多次使用,但是同一前缀只能引用一次。
URI根据标签的前缀对自定义的标签进行唯一的命名prefix=”tagPrefix”,在自定义标签前的前缀,比如,在中的public,如果不写public,就是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw作为前缀。

0 0
原创粉丝点击