Java Web读书笔记(1)JSP基本语法

JSP基本结构

JSP页面就是带有JSP元素的常规Web页面,由模板文本和JSP元素组成。在一个JSP页面中,所有非JSP元素的内容称为模板文本。模板文本可以是任何文本,如HTML、XML,甚至可以是纯文字。JSP并不依赖于HTML,它可以采用任何一种标记语言。模本文本直接传给浏览器。在处理一个JSP页面请求时,模板文本和JSP元素所生成的内容会合并,合并后的结果将作为响应内容发送给浏览器。

JSP有三种类型的元素:脚本元素(scripting element)、指令元素(directive element)、动作元素(action element)。

 

脚本元素

JSP脚本

脚本代码(scriptlet),就是JSP中的代码部分,在这个部分中几乎可以使用任何Java语法。

<% JSP 脚本 %>

<% if (Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM) { %>
上午好!   
<%  } else { %>
下午好!
<% > %>

在使用脚本元素时需要注意:如果加入了过多的Java代码,将会遇到与将HTML嵌入Servlet中同样的问题,不容易维护。

JSP表达式

JSP中的表达式可以被看作一种简单的输出形式,需要注意的是,表达式一定要有一个可以输出的值。

<% = 表达式 %>

<% = (new java.util.Date()).toLocaleString()) %> //这个函数貌似已经过期

JSP声明

JSP中的声明用于声明一个或多个变量和方法,并不输出任何的文本到输出流。在声明元素中的变量和方法将在JSP页面初始化时进行初始化。

放在<%! %>中的变量在编译时将作为类的属性而存在,而放在脚本中的变量将在类的方法内部被声明。

在Servlet的多个请求线程共享一个Servlet对象的机制下,Servlet的成员变量必须注意同步问题。

<%! JSP声明 %>

<%! int i = 0; %>
<%! public String f(int i) {
    if (i < 1) {
        return "...";
    else 
        return "......";
    }
%> 

JSP注释

<%-- JSP注释 --%>

 

指令元素

JSP指令用来向JSP容器提供编译信息。指令并不向客户端产生任何输出,所有的指令都只在当前页面生效。

page指令

page指令描述了页面相关的信息,一般位于JSP页面的开头部分。在一个JSP页面中,page指令可以出现多次,但是在每个page指令中,每一种属性却只能出现一次,重复的属性设置将覆盖先前设置。

<% page 属性列表 %>
属性名说明
language设定JSP页面使用的脚本语言,默认且目前只能使用Java
import指定导入的Java包或类名列表,中间用逗号隔开
isThreadSafe指定JSP容器执行JSP程序的模式。默认值true,代表JSP容器会以多线程方式运行JSP页面;另一种false,JSP容器会以单线程方式运行页面

contentType

指定MIME类型和JSP页面响应时的编码方式
pageEncoding指定JSP文件本身的编码方式
session指定JSP页面是否使用session对象,默认为true
errorPage设定JSP页面发生异常时重新指向的页面URL,指向的页面文件要把isErrorPage设成true
isErrorPage指定此页面是否为处理异常错误的网页,默认为false
isELIgnored指定JSP页面是否忽略EL表达式,默认为false
buffer指定输出流是否需要缓存,默认值是buffer="8kb",与autoFlush一起使用,确定是否自动刷新输出缓冲,如果设成true,则当输出缓冲区满的时候,刷新缓冲区而不是抛出异常
autoFlush如果页面缓冲区满时要自动刷新输出,设置为true,否则抛出异常

 

 

 

 

 

 

 

 

 

 

 

 

 

import属性

如同Java代码里的功能一样,可以简化代码

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

contentType属性

指定JSP输出内容的MIME类型和字符编码方式,默认值为:contentType=“text/html; charset=ISO-8859-1”(不支持中文)。改变MIME类型,可以实现一些特殊功能。例如,可以将输出内容指定为Word、Excel类型的文件,将二进制流生成图像。

<% @page contentType = "application/vnd.ms-excel; charset=utf-8" %>

include指令

include指令是在页面翻译期间引入另一个文件,被包含的文件可以是JSP、HTML或文本文件。可以多次使用。

此过程发生在将JSP翻译成Servlet时,当前JSP和被包含的文件会融合到一起形成一个Servlet,然后进行编译运行。此过程也成为“静态包含”。

<% @include file="header.jsp" %> 

taglib指令

taglib用于指定JSP页面所使用的标签库,通过该指令可以在JSP页面中使用标签库的标签。之后细讲

<% @taglib uri = "标签库URI" prefix = "标签前缀" %>

 

动作元素

JSP中可以使用XML语法格式的一些特殊标记来控制行为,称为JSP标准动作。

<jsp:include>

在页面运行时引入一个静态或动态的页面,也称为动态包含。当容器把JSP页面翻译成Java文件时,并不会把JSP页面中动作指令include指定的文件与原JSP合并成新界面,而是告诉Java解释器,这个文件在运行时才被处理。如果是普通文本文件,就将文件的内容发送到客户端,由客户端负责显示,如果包含的文件是JSP文件,JSP容器就执行这个文件,将结果发送到客户端。(有点像发了个request请求)

<jsp:include page = "show.jsp" flush = "true">
    <jsp:param name = "username" value = "123" />
    <jsp:param name = "password" value = "123" />
</jsp:include>

flush表示设定是否自动刷新缓冲区,默认为false,可省略;在页面包含大量数据时,为缩短客户端延迟,可将一部分内容先行输出。

include指令和include动作做如下对比:

共同点:指令和动作的作用都是实现包含文件代码的复用

区别:对包含文件的处理方式和处理时间不同

include指令元素是在翻译阶段引入所包含的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,其优点是页面的执行速度快。

include动作元素是在JSP页面运行时才引入包含文件所产生的应答文本,被包含的文件在逻辑和语法上独立于当前JSP页面,优点是可以使用param子元素更加灵活地处理所需要的文件,缺点是执行速度要慢一些。

<jsp:forward>

用于引导客户端的请求到另一个页面或者另一个Servlet。可以包含一个或几个<jsp:param>子动作,用于向所转向的目标资源传递参数。<jsp:forward>功能和Servlet的RequestDispatcher对象的forward方法者和被调用者共享同一个request对象。

<jsp:forward page = "relativeURL"/>
或
<jsp:forward page = "relativeURL">
    <jsp:param name = "username" value = "123"/>
    ...
</jsp:forward>

<jsp:useBean>

使用这个动作,JSP可以动态使用JavaBean组件来扩充JSP的功能,由于JavaBean在使用上简单明了,使得JSP开发动态网页有质的飞跃。

<jsp:useBean id="name" class="className" scope="page|request|session|application"/>
或
<jsp:useBean id="name" type="typeName" scope="page|request|session|application"/>

id指定该JavaBean实例的变量名,通过id可以访问这个实例

class指定JavaBean的类名,容器根据class指定的类调用其构造方法来创建这个类的实例

scope指定JavaBean的作用范围,可以使用上述参数,默认值为page

type指定JavaBean对象的类型,通常在查找已存在的JavaBean时使用,这时使用typeName将不会产生新的对象

<jsp:setProperty>

向JavaBean的属性赋值

<jsp:setProperty name="beanName" property="propertyName" value="propertyvalue"/>
或
<jsp:setProperty name="beanName" property="propertyName" param="propertyvalue"/>

name指定JavaBean对象名,与useBean动作中的id对应

property指定JavaBean中需要赋值的属性名

value指定要为属性设置的值

param指定请求中的参数名(如表单传值或URL传值),并将该参数的值赋给property所指定的属性

<jsp:getProperty>

从一个JavaBean中得到某个属性的值,不管原先这个属性是什么类型的,都将被转换成一个String类型的值

<jsp:getProperty name="beanName" property="propertyName"/>

 

第一次博客记笔记,有点紧张

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值