javaweb-------jsp
jsp指令标识
- 语法格式<%@ 指令名 属性1=“属性值1” 属性2=“属性值2”…%>
指令名:用于指定指令名称,在jsp中包含page,include和taglib3条指令.
属性:用于指定属性名称,不同的指令包含不同的属性.在一个指令中可以设置多个属性,各属性之间用逗号或空格分隔.
属性值:用于指定属性值
注意:指令标识<%>和%>是完整的标记,不能添加空格,但是标签中定义的属性和指令之间是有空格的。
page指令
- page是jsp页面中最常用的指令,用于定义整个jsp页面的相关属性,这些属性在jsp中被服务器解析成servlet时会转换成相应的java程序代码。
- 语法格式—<%@ page attr1 = “value1” attr2 = “value2” …%>
- page包含了的属性有15个
- language属性。该属性用于设置jsp页面使用的语言,目前只支持java语言 <%@ page language = “java” %>
2.extends属性,该属性用于设置jsp页面继承的java类,所有jsp页面在执行之前会被服务器解析成servlet,而servlet是由java类定义的,所以jsp和servlet都可以继承指定的父类,该属性并不常用,而且有可能影响服务器的性能优化。
3.import属性,该属性用于设置jsp导入的类包.jsp页面可以嵌入java代码片段,这些java代码在调用api时需要导入相应的类包。
<%@ page import=“java.util.*” %>
4.pageEncoding属性,该属性用于定义jsp页面的编码格式,也就是指定文件编码,jsp页面中所有的代码都使用该属性指定的字符集.
<%@ page = pageEncoding = “UTF-8” %>
5.contentType属性,该属性用于设置jsp页面的mime类型和字符编码,浏览器会根据此显示网页内容.
<%@ page contentType=“text/html;charset=UTF-8” %>
6.session属性,该属性指定jsp页面是否使用http的session会话对象.其属性值是boolean类型。默认true,如果为false,则当前jsp页面将无法使用session会话对象.
<%@ page = session = “false” %>
7.buffer属性,该属性用于设置jsp的out输出对象使用的缓冲区大小,默认大小为8kb,且单位只能用kb,建议使用8的倍数,作为该属性的属性值.
<%@ page buffer = “128kb” %>
8.autoFlush属性,该属性用于设置jsp页面缓存满时,是否自动刷新缓存。默认值为true,如果设置false,则缓存时被填满时将抛出异常.
<%@ page = autoFlush = “false” %>
上述代码取消了页面缓存的自动刷新
9.isErrorPage属性,通过该属性可以将当前jsp页面设置成错误处理页面,以处理另一个jsp页面的错误,也就是异常处理,这也意味着当前jsp页面业务的改变.
<%@ page=isErrorPage = “true” %>
10.errorPage属性
该属性用于指定处理当前jsp页面异常错误的另一个jsp页面,指定的jsp错误处理页面必须设置isErrorPage属性为true。errorPage属性的属性值是一个URL。
<%@ page errorPage = “error/loginErrorPage.jsp” %>
如果设置该属性,那么在web.xml文件中定义的任何错误页面都将被忽略,而优先使用该属性定义的错误处理页面
11.isThreadSafe,指定JSP是否支持多线程。可以设置为true或false,若为true,则表示该页面可以处理多个用户的请求;如果为false,则此JSP一次只能处理一个页面的用户请求。
<%@ page = isThreadSafe = “true”>
12.info, 设置JSP页面的相关信息。可以使用servlet.getServletInfo()方法获取到JSP页面中的文本信息。
13.isELIgnored, 指定JSP文件是否支持EL表达式。
对于以上属性,只有import属性可以多次出现,其他属性均只能出现一次。
include指令
- 可以通过该指令在一个jsp页面中包含另一个jsp页面。不过该指令是静态包含,也就是说被包含文件中所有内容都会被原样包含到该jsp页面中,即使被包含文件中有jsp代码,在包含时也不会编译执行,使用include指令,最终将生成一个文件,所以在被包含和包含的文件中,不能有相同名称的变量。
<%@ include file = “path” %>,该指令只有一个file属性,用于指定要包含文件的路径.该路径可以是相对路径,可以是绝对路径,但不可以通过<%=%>表达式所代表的文件
taglib指令
- 在jsp文件中,可以通过taglib指令标识声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀.在页面中引用标签库后,就可以通过前缀来引用标签库中的标签.
<%@ taglib = “tagPrefix” uri = “tagURI” %>
参数说明:
prefix用于指定标签的前缀,该前缀不能命名为jsp,jspx,java,javax,sun,servlet,sunw.
uri用于指定标签库文件的存放位置
脚本标识
jsp表达式
- jsp表达式用于向页面中输出信息
<%= 表达式%>
表达式:可以是任何java语言的完整表达式,该表达式的最终运算结果将被转换为字符串.
<% 和=之间不能有空格, 但是=与其后的表达式之间可以有空格
jsp表达式不仅可以插入到网页的文本中,用于输出文本内容,也可以插入到html标记中,用于动态设置属性值
声明标识
- 声明标识用于在jsp页面中定义全局的变量或方法.通过声明标识定义的变量和方法可以被整个jsp页面访问,所以通常使用该标识定义整个jsp页面需要引用的变量或方法.
- 服务器执行时,会将声明标识定义的变量和方法转换为类的成员变量和方法
<%! 声明变量或声明方法的代码 %>
代码片段
- 所谓代码片段,就是在jsp页面中嵌入的java代码或是脚本代码. 代码片段将在页面请求的处理期间被执行,通过java代码可以定义变量或是流程控制语句等; 而通过脚本代码可以应用jsp的内置对象在页面输出内容,处理请求和响应,访问session会话等。
<% java代码或是脚本代码 %>
代码片段的使用比较灵活,它所实现的功能是jsp表达式无法实现的
代码片段的声明周期是在当前页面有效
jsp注释
隐藏注释
<%-- 注释内容 --%>
动态注释
其他注释和java,html的类似
动作标识
包含文件标识jsp:include
- jsp的动作标识jsp:include用于向当前页面中包含其他的文件. 被包含的文件可以是动态文件,也可以是静态文件.jsp:include动作标识包含文件的过程如图
<jsp:include page=“url” flush=“false|true” />
或 <jsp:include page=“url” flush=“false|true”>子动作标识jsp:param</jsp:include>
参数说明
page:用于指定被包含文件的相对路径。
flush:可选属性。用于设置是否刷新缓冲区
jsp:param:子动作标识,用于向被包含的动态页面中传递参数
请求转发标识jsp:forward
- 通过jsp:forward动作标识可以将请求转发到其他的web资源。请求转发执行后,当前页面将不会再执行。
<jsp:forward page=“url”/>
或<jsp:forward page=“url”>子动作标识jsp:param</jsp:forward>
传递参数标识jsp:param
<jsp:param name=“参数名” value =“参数值”>