JSP指令介绍

JSP指令包括下面几种:

 

1.include指令,包含指定的文件内容到当前页面中

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

 

2.page指令,该指令包含的属性较多,着重介绍常用的

 

2.1 import属性,导入指定的包,和java的import功能类似

<%@ page import="mypackage.test.*,java.util.Date"%>

下面的包会自动导入,所以在JSP页面中不需要明确导入

java.lang.*

javax.servlet.*

javax.servlet.jsp.*

javax.servlet.http.*

 

 2.2 session属性,指定JSP页面中是否可以使用session,缺省是true,如果指定为false,那么在该页面中无法使用session,使用的话会提示500错误。

 

<%@ page session="true"%>

此时,在生成的java代码中会看到下面的内容:

Java代码   收藏代码
  1. javax.servlet.http.HttpSession session = null;  
  2. session = pageContext.getSession();  

 

2.3 buffer属性和autoFlush属性
buffer属性用来设置输出流缓冲区,缓冲区的作用就是为了提高IO性能,也就是说减少write的次数。
 
autoFlush属性用来指定当输出流缓冲区满了的时候,是否自动刷新缓冲区,true的话,自动把缓冲区的内容输出到底层输出流,false的话,缓冲区满的话,会抛出IO异常。
2.3.1
<%@ page buffer="none" autoFlush="true"%> 没有输出流缓冲区
生成的java代码如下,如果autoFlush设置为false,那么会提示500错误:
Java代码   收藏代码
  1. pageContext = _jspxFactory.getPageContext(this, request, response,  
  2.          "error.jsp"true0true);  
 
2.3.2
<%@ page buffer="50kb" autoFlush="false"%> 设置输出流缓冲区为50kb,不指定的话缺省为8kb
生成的java代码如下:
Java代码   收藏代码
  1. pageContext = _jspxFactory.getPageContext(this, request, response,  
  2.          "error.jsp"true51200false);  

 

 

 此时,如果输出流缓冲区的内容>=50kb的话,会出现500错误,提示buffer overflow

所以,自己控制缓冲区刷新的话,需要在合适的时间点手动调用out.flush()方法来刷新缓冲区,以免出现buffer overflow


2.4 errorPage属性和isErrorPage属性

<%@ page errorPage="/WEB-INF/error.jsp" isErrorPage="false"%>  当前页面发生异常,并且没有对异常进行捕获的时候,跳转到error.jsp页面,不指定errorPage的话,画面上直接显示异常的相关信息,这样对使用的用户不是很友好

 

因为相当于forward到error.jsp页面,所以在error.jsp页面里面可以访问前一个画面传递过来的request中的属性和参数。比如request.getAttribute()方法以及request.getParameter()方法

 

error.jsp

<%@ page isErrorPage="true"%> 

一般不建议可以直接访问此页面。可以将此页面置于WEB-INF下,通过请求转发进行访问。

---如何使客户不能直接访问某页面呢?对于Tomcat服务器而言,WEB-INF下的文件是不能通过在浏览器中输入地址的方式进行访问的。但通过请求转发是可以的!
还可以在Web.xml中对错误页进行配置,如下:
 <error-page>
      <error-code>404</error-code>
      <location>/error.jsp</location>
  </error-page>
  <error-page>
  <exception-type>java.lang.ArithmeticException</exception-type>
  <location>/error.jsp</location>
  </error-page>

 2.5 contentType属性和pageEncoding属性

contentType属性指定JSP页面的MIME和编码格式

<%@ page contentType="text/html;charset=UTF-8"%>

 

生成的java代码如下:

Java代码   收藏代码
  1. response.setContentType("text/html;charset=UTF-8");  

 

pageEncoding属性用来指定JSP文件的编码格式(JSP文件保存时选择的编码格式)

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

 

1)pageEncoding指定的编码一定要和JSP文件保存时选择的编码一致,否则会发生乱码。

比如JSP文件中有hard coding的中文字符,此时如果文件保存时的编码和pageEncoding指定的编码不一致,中文信息在画面上显示的时候就会乱码。

 

2)如果没有指定contentType,只指定了pageEncoding属性,那么charset的值和pageEncoding一致

比如:

<%@ page pageEncoding="UTF-8"%>和

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

是等价的。

 

3)都不指定的话,默认的charset和pageEncoding都是ISO-8859-1

生成的java代码如下:

Java代码   收藏代码
  1. response.setContentType("text/html");  

 

2.6 isELIgnored属性

用来标示是否支持EL表达式

 

<%@ page isELIgnored="true"%>  不支持EL表达式,EL表达式会被当做普通的html文本

<%@ page isELIgnored="false"%> 支持EL表达式

 

3. taglib指令

声明JSP文件使用了标签库(JSP标准标签库,第三方标签库,自定义标签库)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  声明使用JSTL的核心标签库

 

使用JSTL核心标签库中的c:out标签在页面上输出hello world

<c:out value="hello world" />

 

使用JSTL之前,需要下载下面两个jar文件,然后放到web应用的WEB-INF/lib目录。

jstl.jar

standard.jar

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值