zoukankan      html  css  js  c++  java
  • J2EE技术(六)——JSP

     一、   JSP基本思想

    JSP(Java Server Pages)JSP技术规范是JavaServlet技术的发展和自然扩展,将转化成Servlet。根据客户端请求创建动态Web页面的文本文件,是J2EE中的“视图”组件。

    JSP与Servlet相比的优势:JSP可以分离动态和静态内容。

    在Servlet中,静态内容与动态内容是一起产生的,所以关于页面的任意一点修改都需要重新编译Servlet。而JSP不同,JSP可以通过使用标签或是JavaBean技术把展现与内容相分离。JSP使用JavaBean产生动态内容,在JSP页面使用标签或脚本利用这些JavaBean。当页面设计人员修改静态内容后,JSP引擎会自动编译JSP页面。此外,JSP页面可以不经修改运行在不同的平台和Web服务器上。

    二、   JSP语法基础

    1、       指令

    指令(Directive):该元素的作用是在将JSP源文件解析成Java文件时指示JSP引擎做出相应的操作,从而达到预期的目的 。JSP指令在整个页面范围内有效,且不在客户端产生任何输出。

    基本格式为<%@directive attribute1=“”... attribute2=“”%>

    常见的指令有:page、include、taglib

    (1)、page指令

    用来设定JSP页面的全局属性和相关功能。

    作用于整个JSP文件,可以放到JSP页面的任何位置,但为了便于阅读和格式规范,通常放到JSP页面开始的位置。

    一个JSP文件可以包含多个page指令,指令之间是独立的。

    除了import和pageEncoding属性以外,每个属性只能定义一次。

    Page指令的属性:

    1)     language属性:

    指定JSP使用的脚本语言,默认值是java语言,目前JSP中只能使用java。可以不写,如果写必须写在声明、脚本片段和表达式的前面,例如:<%@ page language=“java” %>

    2)     info属性

    通常用于定义JSP页面的描述信息。属性值使用getServletInfo()方法得到,此方法通常用于获得描述JSP文件的信息。

    <%@ page info="你好jsp" contentType="text/html;charset=gb2312"%>

    <% out.println(getServletInfo()); %>

    3)     import属性

    import=”import_list”,import属性用来说明在后面代码中会用到的类和接口,这些类和接口可能是Sun JDK中的类,也可能是自己定义的类。在Java中,如要载入多个包,需用import分别指明,在JSP里,可用import指明多个包,之间用逗号隔开。<%@ page import=" java.text.*,java.util.*" %>,或者分多行写:

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

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

    有些类默认被载入JSP当前页面,不需要进行声明,这些类是:

    java.lang.*

    javax.servlet.* 

    javax.servlet.jsp.*  

    javax.servlet.http.*

    4)     session属性

    session=”true|false”

    session属性用来指定在当前页中是否允许session操作。默认值为true。

    举例:session1.jsp

    <%@ page session="false" %>

    <%session.setAttribute("aa","bb"); //错误,不认识session对象,将false换成true即可 %>

    5)     contentType属性

    用于设置返回浏览器网页的内容类型和字符编码格式。默认值是“text/html; charset=ISO-8859-1”。

    如果需要在返回浏览器的HTML页面中显示中文,我们经常会用到字符集GBK,gbk,gb2312 。

    <%@page contentType=“text/html;charset=GBK” %>

    通常将该语句写到文件的最上面。

    GB2312/GBK是汉字的国标码,专门用来表示汉字,是双字节编码,其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。

    6)     pageEncoding属性

    指定JSP页面的字符编码,默认为ISO-8859-1。

    在JSP标准的语法中,如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,否则就由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。

    例如: <%@ page pageEncoding=“GBK”%>

    7)     errorPage属性

    errorPage属性用来指定页面的URL。在JSP执行过程中有异常发生时,异常一般并不由此JSP页面处理,而由errorPage属性指定的页面处理。

    例如,指定当前页面出错时,调用handleError.jsp页面处理错误的格式如下: <%@ page errorPage=“handleError.jsp”%>

    8)     isErrorPage属性

    isErrorPage属性说明当前页面是否为异常处理页面。

    isErrorPage属性指明该页面是否为另一页面的异常处理页面,默认值是“false”。若设定为“true”,则JSP容器会在当前的页面生成一个对象exception。

    <%@ page isErrorPage=“true” %>

    9)     buffer属性

    指定处理页面输出内容时的缓冲区大小,默认值是8kb。

    如果buffer的取值为“none”,输出将不使用缓冲,所有输出都直接写到客户端。

    置缓冲区的大小只能是kb的整数倍,页面的输出首先被写入指定大小的缓冲区内。当缓冲区变满时如何处理取决于autoFlush属性的值。

    buffer指定的值只是缓冲区的最小值,JSP容器选择的缓冲区可能比指定的大。

    例如:<%@ page buffer=“16kb”%>

    10) autoFlush属性

    autoFlush属性控制的是当页面输出进入缓冲区并且缓冲区变满的情况。

    如果autoFlush属性取值“true”,那么缓冲区变满之后需要强制输出。

    如果autoFlush属性取值“false”,那么缓冲区变满之后将引发一个异常。

    autoFlush属性的默认值是“true”。

    11) isELIgnored属性

    JSP2.0中引入了表达式语言(Expression Language,EL),利用EL可以在不使用脚本的情况下构造动态网页。

    isELIgnored属性值为”true”时,会禁止EL表达式的计算。

    (2)taglib指令

    标记库:开发人员可以使用标记库来定义自己的JSP标记,页面设计人员可以直接使用标记库中的自定义标记,而同时隐藏底层的实现细节。

    taglib指令用于引入JSP页面中需要使用的标记库的定义。

    语法:<%@ taglib  prefix=“前缀名“   uri=“标记库的uri地址“ %>

    举例:<%@ taglib uri=”http://myjsp.com.cn/exampleTags” prefix=”myTags” %>

    <myTags:doSomething></myTags:doSomething>

    (3) include指令

    作用:用来向当前页面插入一个静态文件,这个静态文件可以是html文件、jsp文件或其他文本文件或者只是一段java代码。JSP编译器在碰到include指令时,就会读入包含的文件。

    常见功能:通常当应用程序中所有的页面的某些部分(例如标题、页脚、导航栏或信息栏)都相同的时候,我们就可以考虑用include。

    被包含文件中使用<html>、</html>和<body>、</body>等标签时,要防止与包含文件中的相应标签冲突而造成错误。

    语法格式如下:<%@ include file=”URL” %> URL是要插入文件的URL

    2、       脚本元素

    脚本元素,用Java写的脚本代码,以<%开始,以%>结束,可以分为如下三类: 声明、脚本段、表达式 。

    1)     声明

    用来定义程序中使用的实体,可以声明变量、方法和类,以<%!开始,以%>结束。

    语法:<%! 变量声明;方法声明; %>

    变量声明<%!  int a,b,c; String d;%>

    方法声明<%!  public int add(int a,int b){return a+b;} %>

    在声明中定义的变量是页面内的全局变量;

    注意:每个声明仅在一个JSP页面中有效,若想在多个JSP页面中有效,可以将声明写在一个JSP页面中,然后使用Include指令将其包含在每个JSP页面中。

    2)     脚本段

    以<%开始,以%>结束,中间包括一段合法的java代码(多个语句、方法、变量、表达式)。

    格式: <% 合法的java代码; %>

    一个jsp页面可以用任意数量的脚本片段,这些片段在请求处理时在服务器端按顺序执行

    脚本段能够完成的功能:

    声明将要用到的变量

    显示输出信息

    使用任何隐含对象和使用<jsp:useBean>声明过的对象。

    当JSP页面受到客户端请求时,脚本段就会自动执行。

    3)     表达式

    以<%=开始,以%>结束,中间为一个合法的Java表达式,用来将中间表达式的内容输出到页面。

    语法:<%=expression%>

    表达式的执行结果会被自动转换为字符串,显示在JSP页面中;

    表达式左边有“<%=”,右边有“%>”;

    由于表达是不是完整的java语句,所以在表达式的后面不能放置“;”;

    例如:输出计算结果

    <%=1+2+3%>

    <%=getDate()%>

    3、       标准动作(JSP标记)

    动作:主要在请求处理阶段起作用,能够影响输出流和对象的创建、使用修改等,它按照XML语法进行书写。

    格式:

    <prefix:tagName [attribute1=value1]…[attributen=valuen]/ >

    或 <prefix:tagName [attribute1=value1]…[attributen=valuen] >

             tagbody </prefix:tagName>

    JSP使用“<jsp:     >”表示动作,用来控制JSP引擎的动作。

    注意:JSP行为元素遵循XML元素的语法格式。

    语法三种形式:

    <tag attr1=””……” ……>body</tag>

    <tag attr1=””……” ……> </tag>

    <tag attr1=””……” ……/>

    1)     include动作

    作用:在当前的JSP页面中加入(包含)静态和动态的资源。

    a)     静态网页:直接将内容加入到JSP网页中。

    b)     动态网页:编译运行该文件加入到JSP网页中。

    语法格式:

    <jsp:include page=”URL或<%=expression%>” flush=”true”/>

    或者

    <jsp:include page=”URL或<%=expression%>”  flush=”true”>

    {<jsp:param name=”parameterName” alue=”parameterValue”/>}*

    </jsp:include>

    2)     forward动作

    作用:把当前的JSP页面重新定向到另一个页面上。

    语法格式:

    <jsp:forward page=”重定向的页面”>

    {<jsp:param name=”name” value=”value”/>}*

    </jsp:forward>

    注意:<jsp:forward>标记后面的代码不会被执行。用户看到的地址是当前页面的地址,而内容则是另一个页面的。

    3)     plugin动作

    必选属性:

    a)     type:bean,applet 

    b)     code:待执行对象的类名,必须放到codebase指定的目录下 

    c)     codebase:指定被包含对象的java类所在目录

    4)     param动作

    jsp:param:用来提供key/value的信息,可以与<jsp:include><jsp:forward><jsp:plugin>一起搭配使用。

    例如:

    <jsp:forward page=”URL">

    <jsp:param name=”parameterName1”  alue=”parameterValue1”/>

    <jsp:param name=”parameterName2” value=”parameterValue2”/>

    </jsp:forward>

     

  • 相关阅读:
    VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布 Inchroy's Blog 博客频道 CSDN.NET
    编写可丢弃的代码
    c++ using namespace std; 海明威 博客园
    解决MySQL server has gone away
    nginx upstream 调度策略
    (2006, 'MySQL server has gone away') 错误解决 dba007的空间 51CTO技术博客
    Linux IO模型漫谈(2) 轩脉刃 博客园
    redis源码笔记 initServer 刘浩de技术博客 博客园
    MySQLdb批量插入数据
    词库的扩充百度百科的抓取你知道这些热词吗? rabbit9898 ITeye技术网站
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663965.html
Copyright © 2011-2022 走看看