日期:2014-05-16 浏览次数:20390 次
jsp中的page常用属性:
设置页面的MIME(了解下即可);
??? 什么是MIME?
??????? MIME(Multipurpose Internet Mail Extensions,多功能Internet邮件扩充服务)类型可以设置打开文件的应用程序类型。指某一个文件将以何种应用程序打开;比如在tomcat的conf/web.xml下:
<mime-mapping> <extension>avi</extension> <mime-type>video/x-msvideo</mime-type> </mime-mapping> <mime-mapping> <extension>class</extension> <mime-type>application/java</mime-type> </mime-mapping>
?设置文件编码:
???? 出来可以用contentType指定MIME类型外(使用charset设置编码),还可以使用pageEncoding进行编码的指定,如:
<%@ page language="java" pageEncoding="UTF-8"%>
???? 那么使用context和pageEncoding设置编码有什么区别?
pageEncoding指的是jsp文件本身的编码,而contentType中的charset指的是服务器发送给客户端的内容编码。在jsp中,如果pageEncoding存在,那么jsp的编码由pageEncoding决定,否则由contentType中的charset属性决定;如果两者都不存在,则使用默认的ISO-8859-1;
设置错误页面:
???? 不论是程序跳转错误,还算内部错误,还算jsp页面出现错误;我们都可以进行统一设置;修改 web.xml:
<error-page> <error-code>404</error-code> <location>/notFound.jsp</location> </error-page>
如果出现404的错误时,就会找到notFound.jsp页面;
包含指令 :
???? 当一个工程中,会很重复的使用一个页面,为了避免重写这个页面,我们可以使用包含;包含分为2种:静态包含,动态包含;
语法:
<%@ include file="top.jsp" %>
语法:
<jsp:include page="top.jsp" flush="true"></jsp:include>
?还可以向被包含的页面传递参数:
<jsp:include page="top.jsp" flush="true"> <jsp:param value="10" name="num"/> </jsp:include>
当上面的flush值设置为false时,表示这个网页完全被读进来以后才输出,在每一个JSP的内部都会有一个buffer;如果是true,当buffer满了就输出,一般将此属性设置为true;
使用静态包含?使用动态包含?
?? 使用动态包含更好,静态包含的操作属于先包含后处理,而动态包含如果被包含的页面是动态页,则属于现处理后包含。
?? 测试下:写一个被包含的jsp:
include.jsp:
<% int x = 100; %> <h1>include----<%= x %></h1>
?在index.jsp我们首先静态包含它:
<% int x = 100; %> <h1>include----<%= x %></h1> <%@include file="include.jsp"%>?
则会出现:
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 11 in the jsp file: /include.jsp Duplicate local variable x 8: </head> 9: <body> 10: <% 11: int x = 100; 12: %> 13: <h1>include----<%= x %></h1> 14: </body>
?原因就是重复了变量x,因为静态包含是先将全部内容包含在一起,然后在一起编译, 这样的话,x变量就相当于定义了两次,所以出现以上的错误;
如果换成动态包含:
<% int x = 100; %> <h1>