一、JSP
1、jsp简介
Java 服务器页面 (Java Server Page ,JSP) 以扩展名 .jsp 保存
jsp可以有效地控制动态内容生成可以在JSP里面使用 Java 编程语言和类库
JSP中的HTML 代码用于表示页面,而 J其中的ava 代码用于访问动态内容
2、jsp指令
jsp中有三大指令:page、include、taglib最为常用
①page指令
a、page指令的pageEncoding
pageEncoding指定当前JSP页面的编码。
b、page指令的contentType
contentType属性与response.setContentType()方法的作用相同。它会完成两项工作,一是设置响应字符流的编码,二是设置content-type响应头。
当设置了pageEncoding,而没设置contentType时,contentType的默认值为pageEncoding
当设置了contentType,而没设置pageEncoding时, pageEncoding的默认值与contentType
也就是说,当pageEncoding和contentType只出现一个时,那么另一个的值与出现的值相同。如果两个都不出现,那么两个属性的值都是ISO-8859-1。所以通过我们至少设置它们两个其中一个
c、page的import属性
使用page指令的import属性可以导包到JSP内,比如
<%@ page import=”java.util.*”%>
d、page指令的errorPage和isErrorPage
使用page指令的errorPage来指定自己的错误页。也就是自定义错误页面,例如:<%@page errorPage=”xxx.jsp”%>。这时,在当前JSP页面出现错误时,会请求转发到xxx.jsp页面。
a.jsp
<%@ page import="java.util.*" pageEncoding="UTF-8"%>
<%@ page errorPage="b.jsp" %>
b.jsp
<%@ page pageEncoding="UTF-8"%>
<html>
<body>
<h1>出错啦!</h1>
</body>
</html>
在上面代码中,如果a.jsp抛出异常,会请求转发到b.jsp。
当客户端浏览器收到的响应码为200,表示请求成功。如果希望客户端得到500,那么需要指定b.jsp为错误页面
b.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page isErrorPage="true"[设置b.jsp页面为错误页,在错误页中就可以使用exception隐藏对象了。
注意:一旦转发到错误页,那么Tomcat会把状态码设置为500,而不在是200了。] %>
<html>
<body>
<h1>出错啦!</h1>
<%=exception.getMessage() %>
</body>
</html>
当isErrorPage为true时,说明当前jsp为错误页面,即专门处理错误的页面。那么在这个页面中就可以使用内置对象execption。其他页面是不能使用这个内置对象的。
②include指令
include指令表示静态包含。目的是把多个jsp合并成一个jsp文件
include指令只有一个熟悉:file,指定要包含的页面。比如 <%@include file=”b.jsp”%>
也就是说经过编译,最终只会生成一个.class文件
③taglib指令
在JSP页面中使用第三方的标签库时,需要使用taglib指令来“导包”。例如:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
其中prefix表示标签的前缀,这个名称可以随便起。uri是由第三方标签库定义的,所以你需要知道第三方定义的uri。
3、jsp内置对象
在JSP中无需创建就可以使用的9个对象,它们是:
out:等同与response.getWriter(),用来向客户端发送文本数据;
config:对应“真身”中的ServletConfig;
page:当前JSP页面的“this”,即当前对象;
pageContext:页面上下文对象。
exception:只有在错误页面中可以使用这个对象;
request:HttpServletRequest类的对象;
response:HttpServletResponse类的对象;
application:ServletContext类的对象;
session:HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。
4、jsp动作标签JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用。
a、<jsp:include>
动态包含,每个jsp会编译为各自的.class文件,而不是一个
b、<jsp:forward>
forward标签的作用是请求转发!forward标签的作用与RequestDispatcher.forward()方法相同
二、EL
1、EL的格式
EL的格式:${}
比如${1+2}
2、关闭EL
如果希望整个JSP忽略EL表达式,需要将page指令中指定isELIgnored=true
如果希望忽略某个EL表达式,可以在EL表达式之前添加\,比如\${1+2}
3、EL不显示null
当EL表达式的值为null时,会在页面上显示空白,即什么都不显示。