# JSP入门知识点系列之一

来源:互联网 发布:it之家官网 编辑:程序博客网 时间:2024/05/24 06:49

JSP入门知识点之 JSP基本语法

JSP基本语法
JSP的隐含对象
EL表达式 和 标签

JSP页面的基本组成

JSP页面4中元素的组成: HTML标记、JSP标记、JSP脚本代码、注释

HTML标记

作为JSP页面中静态的内容,由浏览器 识别并运行,主要负责页面的布局美观效果的设计。作为一个页面的框架。

JSP标记

用于高速jSP容器如何处理JSP网页或者控制JSP引擎完成某种功能。分为动作标记、指令标记。

指令标记

主要分为3中指令标记: page、include、taglib

通用格式    <%@指令名称 属性1=“属性值” 属性2=“属性值”……%>    JSP:XML语法:    <JSP:directive.指令名称 属性1="属性名称"属性2=“属性值”……/>
page

1- 作用于整个页面—定义了页面相关的属性,这些属性将用于与JSP服务器进行通信。

由上通用格式 可以推断:
<%@page 属性1=“属性值” 属性2=“属性值”……%>
JSP:XML语法:
<JSP:directive.page 属性1="属性名称"属性2=“属性值”……/>

有13个属性,具体说明如下:

  1. language=”scriptingLanguage”
    ———-JSP 2.0中只可以JAVA,之后可能可以其他语言。
  2. extends=”calssName”
    ———-指定JSP页面转换后继承的父类,通常不需要使用,JSP会提供转换后的Servlet类的父类。
  3. import=”importList”
    ———-example:<%@ page import=”java.util.*” %>
    ———-唯一可重复。一般JSP 会默认添加 4个包:java.lang.; javax.servlet.; javax.servlet.jsp.; javax.servlet.http.
  4. sessin=”true|false”
    ———-是否可以使用session对象
  5. buffer=”none|sizeKB”
    ———-指定out对象指定缓冲区的大小。KB为默认单位,默认值是8KB。如果为none,则不适用缓冲区
  6. autoFlush=”true|false”
    ———-当缓冲区满,缓存输出是否自动刷新。如果设置为false,当溢出的时候,一个异常将抛出。默认值为 true。
  7. isThreadSafe=”true|false”
    ———-指定是否对页面的访问是安全的线程。若true,则可以多个客户端同时访问,若false,则JSP容器将对转换后的Servlet 类实现singleThreadModel接口。默认值是 true。
  8. info=”info_text”
    ———-页面相关信息,可以通过getServletInfo()方法得到。
  9. errorPage=”error_URL”
    ———-JSP页面发生异常错误的时候,转向那个页面。在这里定义的了错误页面,那么 web.xml中指定的任何错误页面 都不会被使用。
  10. isErrorPage=”true|false”
    ———-当前页面 是否是另一个页面的error处理页面,默认值false
  11. contentType=”type”
    ———-页面的MIME类型和编码,也是中文页面必须要设置的属性。
    ———-<% @ page contentType=”text/html; charactersetgb2312” %>
  12. pageEncoding=”peinfo”
    ———-若设置了该属性,则使用该字符集,若没有,则使用contentType中设置的字符集。若 都没有,则使用“ISO-8859-1”
  13. isELIgnored=”true|false”
    ———-是否执行或者忽略EL表达式,若果设置 为true。
    ““
    Tips: page 无论在哪里都是对全文有效。
include指令


语法:<% @include file="relativeURL" %>
<jsp:directive.include file="realtiveURL" />


example01.jsp
<%@ page contentType = text/html;character="gb2312"%>
`<html>`
`<head><tittle>welcom</tittle></head>`
`<body>`
现在时间是:
<% include file="date.jsp" %>
`</body>`
`</html>`


date.jsp
<%out.println(new java.util.Date().toLocaleString()); %>

如果访问 example01.jsp,显示 是 现在时间是:xxxx-x-x xx:xx:xx

注意:**包含文件中最好不要使用HTML的标记,……等,这可能和原文件相冲突。
另外,格外避免原文件和被包含的文件中不可以定义相同的变量和方法。易导致转换出错。**
““

taglib指令

允许用户使用自定义标记。


语法如下:
<%@ taglib (uri="tagLibraryURI"
| tagdir="tagDir" ) prefix="tagPrefix" %>
XML:
`<jsp: directive.taglib (uri="tagLibraryURI" `
` | tagdir="tagDir" ) ` `predix="tagPrefix"/>`

三个属性:
(1) uri
该属性唯一标识和前缀(prefix)相关的标签库描述符,可以绝对或者相对的URI。用于定位标记库的描述符的位置。
(2)tagdir
指示前缀(prefix)被用于标识安装在/WEB-INF/tags/目录或者其子目录下的标签文件中。一个隐含的标签库描述符被使用。

下面三种情况将发生转换错误
1、 属性的值不是以 /WEB-INF/tags/ 开始的
2、 属性值没有指向一个已经存在的目录。
3、 属性和uri一起使用。

(3)prefix
定一个 prefix:tagname 的形式的字符串前缀,用于区分多个自定义标签。以jsp:、jspx:、java:、javax:、servlet:、sun:、sunw: 开始的前缀会被保留。前缀的命名必须遵循名称空间的命名约定。。 JSP2.0中,空前缀 是非法的。

动作标记

利用XML语法格式控制JSP服务器实现某种功能,其遵循XML元素的语法格式,有起始标记、结束标记、空标记。
有一些标准的动作由标记实现,由JSP服务器实现,影响JSP运行时的行为和客户端的请求的响应。页面转换成servlet时,使用对应的JAVA代码标记。


`<jsp:include>:在页面请求的时,动态引入一个文件。`
`<jsp:forward>: 把请求转换到一个新的页面`
`<jsp:plugin>: 用于产生与客户端浏览器相关的HTML标记``(<OBJECT>或者<EMBED>)`
`<jsp:useBean>: 实例化一个JavaBean`
`<jsp:setPro[erty>: 设置一个JavaBean`
`<jsp:get Pro[erty>: 获得一个JavaBean`

(1). <jsp:param>
被用来以“名–值对”的形式为其他标记提供标记信息:如传递参数。
<jsp:include>、<jsp:forward>、<jsp:plugin>
语法格式:
<jsp:param name="name" value="value" />
```
name: 给出名字的参数
value: 给出参数的值,也可以是一个表达式
(2).
`
可以包含动态文件、静态文件。静态= ==直接输出到客户端由浏览器显示==;如果动态===由jsp服务器负责执行,将结果返回给客户端==。
语法如下:

<jsp:include page="url"flush="true|false"/>or 带传递参数:<jsp:include page="url"flush="true|false"/>{<jsp: param... />}*</jsp:include>

<jsp:include>动作由两个属性:
(1) page
指定被包含文件的相对路径,该路径是相对于当前JSP页面的URL
(2) flush
可选true:在包含工作之前,要先刷新缓冲区。
false:不会刷新

<jsp: include> 和 include指令的区别

include 指令:将jsp面作为静态对象,在页面转换阶段,将页面的内容(文本或者代码)在include指令位置包含进来。----每次修改需要重新编译。
<jsp:include>动作将JSP页面作为动态对象,在请求处理阶段,将请求发送给该对象。在当前页面请求相应中,包含该对象对请求处理的结果。-----一个文件的修改不影响另一个文件。

(3) <jsp:forward>
==允许在运行的时候,将当前的请求转发给另一个JSP页面或者SERVLET,请求被转向到的页面必须位于同JSP发送请求相同的上下文环境中==。
这个动作会终止当前页面的执行,==如果使用了缓冲,在转发请求之前,缓冲区将会被清除。如果在转发请求之前,缓冲区已经刷新,将抛出IllegalStateException异常==。
如果页面输出没有使用缓冲,而某些输出已经发送,那么试图调用<jsp:forword>动作,将导致抛出IllegaStateException。
这个动作的作用和RequestDispatcher接口的forward()方法作用一样。

语法如下:

`<jsp: forward page="url"/>`    带参数<jsp: forward page="url">{<jsp : param…… />}</jsp:forward>

动作只有一个page属性。page属性指定请求被转向的页面相对路径,该路径是相对于当前JSP页面的URL,也可以是经过表达式计算得到的相对的URL

使用<jsp:forword>的动作的一段代码段:

<%String command = request.getParameter("command");    if(command.equals("reg")){%>    <jsp:forword page="logout.jsp"/>    <%}    else if(command.equals("logout")){%><jsp:forword page="logout.jsp"/><%}else {%> <jsp:forwrod page="login.jsp"/><%}%>

(4)

`<jsp:plugin>,<jsp:params> ,<jsp:fallback><jsp:plugin> 主要负责载入插件<jsp:params><jsp:plugin>  动作的一部分,只能在<jsp:plugin> 动作中使用。<jsp:params>包含一个或以上的<jsp:param>动作,用于向 Applet、JavaBean提供参数.<jsp:fallback><jsp:plugin> 的一部分只能在<jsp:plugin>动作中使用 ,主要用户 指定插件不能启动的时候,给用户显示一段文件。 如果插件能够启动,但是Applet、JavaBean没有发现或者不能启动,那么浏览器就会提示一段错误信息提示。
`<jsp:plugin>动作语法如下{align="alignment"}{archive="archiveList"}{height="height"}{hspace="hspace"}{jreversion="jreversion"}{name="compomentName"}{vspace="vspace"}{width="width"}{nspluginurl="url"}{iepluginurl="url"}>{<jsp:params><jsp:param name="paramName" value="paramValue" />}+</jsp:params>}{<jsp:fallback>arbitrary_text </jsp:fallback>}</jsp:plugin>
属性名 属性值 说明 type bean|applet 声明组件的类型,是JavaBean还是Applet code 组件类名 要执行组件的完整类名,以.class 结尾 codebase 类路径 指定要执行的java类所在的目录 align left| right| bottom| top| texttop| middle| absmiddle| baseline| absbottom 指定组件的对齐方式 archive 文件列表 声明待归档的JAVA文件列表 height 高度值 声明组件的高度(像素) width 宽度 声明组件的宽度(像素) hspace 左右空间空白值 左右空间空白值(像素) vspace 上下空间空白值 上下空间空白值(像素) jreversion 版本号 组件运行时需要的jre版本 name 组件名称 声明组件的名字 nspluginurl URL地址 声明对于网景,可以下载JRE插件的URL iepluginurl URL地址 声明对于IE浏览器,可以下载JRE插件的URL

<jsp:plugin>动作的应用示例

JSP脚本代码

嵌入到JSP页面中的JAVA代码。浏览器中不可见,用于服务器执行,然后由服务器将执行结果与HTML标记一起发送给客户端显示。通过执行脚本,在页面生成动态的内容。
声明格式:
<! 变量声明|方法声明|类声明 %>
JSP表达式:
<%=表达式%>
XML 格式: <jsp: expression> 表达式 </expression>
<% Java 代码 %>

JSP注释

解释源代码。
1、HTML注释
<!--注释内容-->
2、隐藏注释
<%--注释内容--%>
3、脚本注释
单行注释: //
多行注释:/**/

原创粉丝点击