Page指令

首先创建了java动态web工程以后,在Webcontent目录下创建了a.jsp,然后运行项目。

会发现在:D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\work\Catalina\localhost\JSPzhiling\org\apache\jsp该目录下生成了a_jsp.java文件

该文件是a.jsp编译后生成的java文件。

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.Date" errorPage="/error.jsp"%>

/表示当前web项目的根目录

errorPage属性是什么意思呢?就是当页面出错的时候,会展示哪个页面。比如:

在Webcontent目录下的a.jsp中有如下代码(把一个<%@ %>分开属性写成两个<%@ %>也是可以的):

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.Date" errorPage="/error.jsp"%>
   <% Date date = new Date(); DateFormat dateFormat = null; HttpServletRequest httpServletRequest = null; int i = 10 / 0; %>

然后在Webcontent目录下有error.jsp页面,那么运行的话就会跳转到error.jsp页面。

另外一种方法就是在web应用下面的web.xml里面配置error-page:

或者

 

然后把a.jsp里面的errorPage="/WEB-INF/error.jsp"去掉,也能同样的效果。

再拓展一下,现在我们想处理404的问题,也就是HTTP 404- 无法找到文件,我们需要这样配置:

 

 

 

接下来,我们把error.jsp设置属性为error页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%>

然后我们就可以使用Excepion对象了:Error Message:<%=exception.getMessage()%>

 

此时我们要注意,地址栏依然显示的是a.jsp的地址,这意味着什么?说明服务器内部是转发的,而不是重定向。

 

另一方面,不建议能够直接访问error.jsp,因为本来就是个错误页面,而且直接访问会报空指针异常。

那么我们如何处理呢?对于tomcat服务器来说,WEB-INF下的文件是不能够通过浏览器直接输入地址来访问,会出现如下情况:

 

 但是通过请求的转发是可以的,比如在a.jsp中的errorPage属性修改为如下:

 

contentType: 指定当前 JSP 页面的响应类型. 实际调用的是 response.setContentType("text/html; charset=UTF-8");

通常情况下, 对于 JSP 页面而言其取值均为 text/html; charset=UTF-8. charset 指定返回的页面的字符编码是什么. 通常取值为 UTF-8

pageEncoding: 指定当前 JSP 页面的字符编码. 通常情况下该值和 contentType 中的 charset 一致.

isELIgnored: 指定当前 JSP 页面是否可以使用 EL 表达式. 通常取值为 false.

 

posted @ 2017-09-03 10:57  虚极静笃  Views(303)  Comments(0Edit  收藏  举报