Page指令
Posted 虚极静笃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.
以上是关于Page指令的主要内容,如果未能解决你的问题,请参考以下文章