JSP常用指令

一. 指令元素  
JSP指令包括pageincludetaglib  
page指令是针对当前页面的指令,  
include指令用来指定如何包含另外一个文件,  
taglib指令用来定义和访问自定义标记库。  
1. page指令  
page指令的设置语法格式是:<%@ page language="java" attribute="value"…%>  
下面介绍指令中包括的几个常用属性,并作简要说明。  
language
用以指定页面中写的是java代码
extends
用以指定JSP翻译成的Servlet类要继承哪个类,一般不要指定
import
 
它用来指定jsp网页中所需要使用到的一些类。JSP引擎自动导入java.lang.*,javax.servlet.开关的相关包
多个包之间用逗号连接例如:
  <%@ page import=”java.io.*,java.util.Date”%>  
session  
定义当前页面是否引入session对象。当设置为true时,可以获得隐含名为session的对象,为false时,则不能。默认设置为true。  
contentType  
设置jsp网页输出时数据时,所使用的字符压缩方式,以及所使用的字符集,当编写中文网页时,设置如下:  
<%@page contentType=”text/html;charset=Gb2312”%>  
此属性的默认值为”text/html;charset=ISO-8859-1”。  
buffer  
设置jsp网页的缓冲区大小,默认为”8k”,如果设置为”none”,则表示不使用缓冲,所有的响应输出都将被PrintWriter直接写到ServletResponse中。  
autoFlush
缓存区满时自动刷新,true或false,默认为true
isTreadSafe
 
定义当前页面是否支持线程安全。如果为true,则该页面可能同时收到jsp引擎发出的多个请求,反之,jsp引擎会对收到的请求进行排队,当前页面在同一时刻只能处理一个请求。默认为true。false时servlet会实现SingleThreadMode接口,以单线程模式处理请求,详细可看   Servlet线程安全  
info  
设置页面的文本信息,可以通过Servlet.getServletInfo()的方法获得该字符串。  
errorPage  
定义指向另一个jsp页面的URL。当页面出现一个没有被捕获的异常时,错误信息将以throw语句抛出,而被设置为错误信息网页的jsp页面,将利用exception隐含对象,取得错误信息。   默认没有错误处理页面。
一般在web.xml中配置错误页面
?
1
2
3
4
5
6
7
8
< error-page >
     <!-- 异常类型 -->
     < exception-type >java.lang.ArithmeticException</ exception-type >
     <!-- 异常代码    异常类型与代码指定一个即可 -->
     < error-code >404</ error-code >
     <!-- 错误页面路径,/代表当前web应用 -->
     < location >/errors/error.jsp</ location >
</ error-page >< span style = "font-size:16px;" > </ span >
isErrorPage  
设置此jsp网页是否为错误处理页面。默认值为false。当设置为true时,jsp页面将可存取隐含的exception对象,并通过该对象取得从发生错误之网页所传出的错误信息。取得错误信息的语法如下:  
<% =exception.getMessage()%>
pageEncoding  
页面编码格式
isELIgnored  

是否忽略EL表达式,默认false

2. include指令
将相应的内容直接包含进去,即将当前JSP页面和所包含的JSP页面组合在一起,只生成一个servlet。

include指令与<jsp:include>动作的区别
include指令的使用方法:(静态包含,编译时包含)
<%@ include file="include.jsp"%> 
<jsp:include>动作的使用方法:(动态包含,运行时包含)
<jsp:include page="/include.jsp" />
等价于:
contextPage.include("/include.jsp"); 
等价于:
request.getRequestDispacher("/include.jsp").include(request,response);
本质区别在方法的实现上:
include指令是将相应的内容直接包含进去,即将当前JSP页面和所包含的JSP页面组合在一起,只生成一个servlet。
<jsp:include>动作是通过调用
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "include.jsp", out, false);来实现。它是将当前JSP页面和所包含的JSP页面分别生成相应的servlet,在访问页面的时候再进行包含。
开发过程中,最好使用静态包含
3. taglib指令

<c:foreach varStatus="statu" > 这样会生成一个statu对象,并有一个count属性,代表当前迭代的次数,${ statu.count }

<c:url var="newurl" value="/webappName/1.html" >将url重写,在用户禁用cookie时在url后面缀上JSESSIONID参数,${newurl}
不指定var时,直接将重写后的url输出(重写时url前会加上/webappName)
标签体之间可通过<c:param>给url添加参数,值为中文时自动进行编码

二,脚本元素

  • 声明<%! %> 对应的代码被原样放到Servlet类的service方法外部,所以可以写Servlet类对应的静态代码块,成员变量,方法
  • 脚本片断<% %> 对应的代码被原样放到Servlet类的service方法内部,可以使用九大隐式对象
  • 脚本表达式<%= %> 对应的变更被通过out.write()代码输出到service方法内部 
  • 注释<%-- --%>  JSP注释,里面的内容会被忽略,不作任何处理

三. 动作元素

1.<jsp:param>
2.<jsp:include>
3.<jsp:forward>
4.<jsp:plugin>
5.<jsp:useBean>
6.<jsp:setProperty>
7.<jsp:getProperty>

1. <jsp:param>
<jsp:param>动作用于传递参数,必须配合<jsp:include>、<jsp:forward>、<jsp:plugin>动作一起使用。
语法格式:
<jsp:param name="name1" value="value1"/>
2. <jsp:include>
<jsp:include>动作用于动态加载HTML页面或者JSP页面。
语法格式:
<jsp:include page="网页路径">
<jsp:param name="name1" value="value1"/>
<jsp:param name="name2" value="value2"/>
<jsp:include/>
在jsp页面中,可以利用下面的语法取得返回的参数:
request.getParameter("name1");
若不传递参数时,则语法格式如下:
<jsp:include page="网页路径"/>
举例:
a.jsp页面代码如下:
<jsp:include page = "b.jsp"> 
<jsp:param name="name1" value="value1"/> 
<jsp:param name="name2" value="value2"/> 
</jsp:include>
b.jsp页面代码如下:
名字1:<%=request.getParameter("name1")%>
名字2:<%=request.getParameter("name2")%>
“include标准动作”和“include指令”的差别在于:
“include标准动作”包含的页面在运行时被加入,一般叫静态包含
“include指令”在编译时就被加入了,一般叫动态包含
3. <jsp:forward>
<jsp:forward>动作用于将浏览器显示的页面导向到另一个HTML页面或者jsp页面。
语法格式:
<jsp:forward page="网页路径"/>
当然,<jsp:forward>动作中也可以加入<jsp:param>参数,其设置和获得参数的方法与<jsp:include>类似。
4. <jsp:plugin>
<jsp:plugin>动作用于加载applet,用途与HTML语法中的<Applet>及<Object>标记相同。该动作是在客户端执行的
5.<jsp:useBean>
<jsp:useBean id="beanName" scope="有效范围" class="Bean类位置" />
此标签在解析时,会先从4个作用域中查找beanName属性,看是否存在,有就直接用,没有就实例化一个新的class
<jsp:useBean>aaaaa</jsp:useBean>标签体中的aaaaa,只有在实例化class时才会执行被打印出来,如果bean已经实例化成功,是从4个作用域中查找得到的,标签体中的内容就不会再被执行
6.<jsp:serProperty>
<jsp:setProperty name="名称" property="属性" value="值" /> 
<jsp:setProperty name="名称" property="属性" param="paramName" />把参数paramName的值来设置指定的属性,只支持8种基本类型数据
<jsp:setProperty name="名称" property="*" /> 当property指定为*时,代表使用请求参数为bean对象的所有参数自动赋值
7.<jsp:getProperty>
<jsp:getProperty name="名称" property="属性" />
如果bean属性为null,通过getProperty得到将是字符串null,而不是空

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值