主要内容
Jsp编译指令
1、Page指令
2、include指令
3、taglib指令
Jsp动作指令
1、 forward指令
2、 include指令
3、 静态包含和动态包含的区别
Jsp编译指令
一Page指令
作用:针对当前页面的指令
语法:<%@ page 属性1="属性值" 属性2="属性值1,属性值2"… 属性n="属性值n"%>
eg:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
Page常用属性
属性 描述 默认值
language 指定JSP页面使用的脚本语言 java
import 通过该属性来引用脚本语言中使用到的类文件 无
contentType 用来指定生成网页的编码字符集和文件格式 text/html,ISO-8859-1
pageEncoding 指定JSP页面使用的编码方式 无
errorPage 指定错误处理页面。如果jsp页面发生异常, 无
会自动执向errorPage指向的页面处理
isErrorPage 指定本页面是否是jsp错误处理页面。 无
如果是,就无需指定errorPage
errorPage属性
eg:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="error.jsp"%>
效果:当访问的页面抛出异常时该页面跳转到error.jsp页面,且浏览器中url地址不发生改变
错误处理页面第二种方法 配置web.xml(针对所有页面)
eg:
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
二include指令
作用:将一个外部jsp文件嵌入到当前jsp文件中
语法:<%@ include file=“被包含文件”%>
eg: <%@ include file=“a.jsp”%>
注:由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面指令不能冲突(除了pageEncoding和导入的包),
并且多个JSP页面中声明的变量不能重复。
三taglib指令
作用:用于定义和访问自定义标签
<%@ taglib prefix="tagPrefix" uri="tagURI" %>
eg:引入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Jsp动作指令
一<jsp:inlucde>标签
指令该动作指令告诉JSP 页面动态包含一个文件,即JSP 页面运行时才将文件加入。动作指令是在执行时才对包含的文件进行处理。它仅仅将被包含页面的body内容插入本页。
语法:
<jsp:include page=“被包含的文件”/>
或
<jsp:include page=“被包含的文件”>
<jsp:param name=“参数名” value=“参数值” />
</jsp:forward>
二<jsp:forward>标签
从该指令处停止当前页面的继续执行,而转向其它的一个JSP 页面。(通过forward方式跳转,页面参数不会丢失)
语法:
<jsp:forward page=“转发地址”/>
或
<jsp:forward page=“转发地址”>
<jsp:param name=“参数名” value=“参数值” />
</jsp:forward>
增加的请求参数可以通过request.getParameter(“参数名”)获得。
三<jsp:param>标签
这个标签与jsp:include、jsp:forward、jsp:plugin标签一起使用。当该标签与jsp:include 标签一起使用时,可以将param 标签中的值传递到include指令要加载的文件中去
Include动态指令和静态指令的区别
静态导入是将被导入页面的代码完全融入,两个页面合成一个整体。而动态导入则只是将被导入页面的body内容导入。
静态导入时,被导入页面的编译指令会起作用。而动态导入时被导入页面的编译指令会失效。
动态导入可以增加额外的参数。(动态导入不同页面可以声明相同的变量名,静态导入不行)
动态导入涉及到的2个jsp会被翻译成2个servlet 而静态导入涉及到的2个jsp会翻译成一个servlet
静态导入是先包含后处理