JSP指令
- JSP指令:JSP指令是为JSP引擎设计的。他们并不直接产生可见输出,而只是告诉引擎如何处理JSP页面的其余部分
- 在目前的JSP2.0中定义了page,include和taglib这三种指令
- page指令:
1).page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面的什么地方,他的作用的都是整个JSP页面,为了保持程序的可读性和良好的编程习惯,page指令最好是放在整个JSP页面的起始位置
2).page指令常用的属性:
①.import属性:指定当前JSP页面对应的Servlet需要导入的类
<%@page import="java.sql.Date"%>
②.session属性:取值为true或false,指定当前页面的session隐藏对象是否可用
<%@page session="false" %>
③.errorPage 和 isErrorPage
>errorPage 指定当前页面出现错误的实际响应页面是什么,其中“/”表示当前的WEB应用
<%@page errorPage="/error.jsp" %>
>在响应error.jsp时,JSP引擎使用的是请求转发的方式
>isErrorPage 指定当前页面是否为错误处理页面,可以说明当前也i按是否使用exception隐藏变量,需要注意的是isErrorPage = true的页面,一般不建议之间访问,
>如何使客户不能直接访问一个页面呢?对于Tomcat服务器而言,WEB-INF目录下的文件使不能直接通过浏览器来访问的,但是可以通过请求的转发是可以的。
>还可以在web.xml中配置错误页面
<error-page>
<!-- 指定出错的代码:404没用指定的资源,500内部错误 -->
<error-code>500</error-code>
<!-- 指定响应页面的位置 -->
<location>/WEB-INF/error.jsp</location>
</error-page>
<error-page>
<!-- 指定异常的类型 -->
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/WEB-INF/error.jsp</location>
</error-page>
④.contentType:指定当前JSP页面的响应类型,实际调用的是response.setContentType("text/html; charset=UTF-8");通常情况下,对JSP页面而言其值均为text/html;charset=UTF-8
<%@pagecontentType="text/html; charset=UTF-8"%>
⑤.pageEncoding:指定当前JSP页面的字符编码。通常情况下该值和contentType中的charsrt一致
⑥.isELIgnored:指定当前JSP页面是否可以使用EL表达式,通常取值为false
- include指令:
1).include指令用于通知jsp在翻译当前JSP页面时将其他文件的内容合并进当前JSP页面转换成的Servlet源文件中,这种源文件级别进行的引入方式称之为静态引入,当前JSP页面与静态引入的页面精密结合为一个Servlet
2).file属性的设置的值必须使用相对路径,如果以“/”开头。表示相当于当前WEB应用程序的根目录。否则。表示当前文件
<%@include file = "b.jsp" %>
- jsp:include标签
1).<jsp:include page = “b.jsp”></jsp:include>
2).动态引入:并不是像include指令生成一个servlet源文件,而是生成两个Servlet源文件,然后通过一个方法把整个页面包含进来
- include指令和jsp:include标签
1).<jsp:include>标签时当前jsp页面执行期间插入被引入资源的输出类容,被动态引入的资源必须时一个能独立被WEB容器调用和执行的资源
Include指令只能引入遵循JSP格式的文件,被引入文件与当前JSP文件共同合并被翻译成一个Servlet的源文件
- jsp:forward:
<jsp:forward page="/include/b.jsp"></jsp:forward> 相当于
<%
request.getRequestDispatcher("b.jsp").forward(request, response);
%>
但使用jsp:forward可以使用jsp:param子标签向b.jsp传入一些参数。同样jsp:include也可以使用jsp:param子标签
<jsp:forward page="/include/b.jsp">
<jsp:param value="stupid" name="username"/>
</jsp:forward>
<jsp:include page="/include/b.jsp">
<jsp:param value="stupid" name="username"/>
</jsp:include>
在b.jsp页面中可以通过request.getParameter(“username”);来获取传入的请求参数