JSP三大指令
一个jsp页面中,可以有0~N个指令的定义
1、page --> 最复杂:<%@page language=”java” info=”xxx” ...%>
- pageEncoding和contentType:
pageEncoding它指定当前jsp页面的编码,只要和项目编码相同,就不会有乱码。在服务器要把jsp编译成.java文件时需要使用pageEncoding
contentTyoe:它表示添加一个响应头:Content-Type。
等同于response.setContentType(“text/html;charset=utf-8”);
如果两个属性只提供一个,那么另一个的默认值为设置的那一个。
如果两个都没有设置,那么默认值为ISO。
- import:导包,可以出现多次
- errorPage和isErrorPage
errorPage:当前页面如果抛出异常,那么转发到哪一个页面,由errorPage来指定
isErrorPage:它指定当前页面是否为处理错误的页面,当该属性为true时,这个页面会设置状态码为500,而且这个页面可以使用9大内置对象中的 exception
<error-page>
<error-code>404</error-code>
<location>/errorPage/errorPage.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/errorPage/errorPage.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.RuntimeException</exception-type>
<location>/errorPage/errorPage.jsp</location>
</error-page>
- autoFlush和buffer
autoFlush:指定jsp的输出流缓冲区满时,是否自动刷新!默认时true,如果为false,那么在缓冲区满时就会抛出异常
buffer:指定缓冲区大小,默认为8kb,通常不需要修改
- isELIgnored:是否忽略el表达式,默认为false,不忽略,即支持
- 基本没有:
language:指定当前jsp编译后的语言类型,默认是java。
info:信息
isTHreadSafe:当前的jsp是否支持并发访问,默认是false。
session:当前页面是否支持session,如果为false,那么当前页面就没有session这个内置对象
extends:让jsp生成的servlet去继承该属性的指定的类
2、include --> 静态包含
- 与RequestDispatcher的include()方法的功能相似
- <%@include%> 它是在Java编译成java文件时完成的,它们共同生成一个java文件,让后在共同生成一个class文件
- RequestDispatcher的include()是一个方法,包含和被包含的是两个Servlet,即两个.class,它们只是把响应的内容给合并了
- 作用:把页面分解了,使用包含的方式组合在一起,这样一个页面中不变的部分,就是一个独立的jsp,而我们只需要处理变化的页面。
3、taglib --> 导入标签库 - 两个属性:
prefix:指定标签库在本页面的前缀,由自己来起名称
uri:指定标签库的位置
<%@taglib prefix=”s” uri=”/ddddd”%> <s:text>
JSP的动作标签
这些jsp的动作标签,与html提供的标签有本质的区别
- 动作标签是由tomcat(服务器)来解释执行,它与java代码一样,都是在服务器端执行的
- html由浏览器来执行
- <jsp:forward>:转发!它与RequestDispatcher的forward方法是一样的,一个是在Servlet中使用,一个是在jsp中使用
- <jsp:include>:包含!它与RequestDispatcher的include方法是一样的,一个是在Servlet中使用,一个是在jsp中使用
<%@include%>和<jsp:include>有什么不同?——前者是真正的合并,而后者相当于调用。
- <jsp:param>:它用来作为forward和include的子标签,用来给转发或包含的页面传递参数
Jsp中的配置
在\cong\context.xml中,添加reloadable=”true” 自动加载tomcat(适合在开发阶段使用)