JSP

之前只是简单了解了一下,现在来详细学习一下

指令

  • 作用:用于配置JSP页面,导入资源文件

  • 格式:

    1
    <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 %>
  • 分类:

    1. page 配置JSP页面

      • contentType

      • import

      • errorPage

      • isErrorPage

    2. include 页面包含的。导入页面的资源文件

    3. taglib 导入资源

      • prefix和uri

page指令

  • contentType:等同于response.setContentType()

    1. 设置响应体的mime类型以及字符集

    2. 设置当前JSP页面的编码(只能是高级IDE才能生效,低级工具,则需要pageEncoding属性设置当前页面的字符集)

  • import:导包

  • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面

  • isErrorPage:标识当前页面是否是错误页面

import

1
2
3
4
5
6
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>

errorPage

1
2
3
<%
int i=3/0;
%>

这样就会在客户端上输出500以及错误信息,但是我们并不希望让用户看到这些,要显示一个友好页面

所以在index中设置

1
2
3
4
5
6
7
8
9
10

<%@page contentType="text/html; utf-8" errorPage="500.jsp" %>
<html>
<body>

<%
int i =3/0;
%>
</body>
</html>

500.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: songf
Date: 2020/8/6
Time: 16:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>

服务器正忙...

</body>
</html>

接下来访问index.jsp,就会访问到500.jsp的页面
avatar

isErrorPage

修改500.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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

<h1>服务器正忙...</h1>

<%
String message = exception.getMessage();
out.print(message);
%>

</body>
</html>

将isErrorPage设置为true,再配合exception就可以输出错误信息了
avatar

include指令

top.jsp

1
2
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
页面logo页面标题

home.jsp
1
2
3
4
5
6
7
8
9
10
11
12
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@include file="top.jsp"%>
<html>
<head>
<title>Title</title>
</head>
<body>

主体信息

</body>
</html>

使用include包含进来,访问home.jsp
avatar

由于一些问题,所以这里我把标签删掉了

taglib指令

1
2
3
4
5
6
7
8
9
10
11
12
<%@page contentType="text/html; utf-8" errorPage="500.jsp" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>

<%
int i =3/0;
%>


</body>
</html>

引入标签库,且命名为c之后,就可以使用c标签了
avatar

这样就会看到各种各样的标签可以使用了

prefix定义的是前缀,自定义;业内约定好了jstl就是c为前缀

uri就是需要导入的标签库

注释

  1. html注释:

    • <!— —>:只能注释html代码片段
  2. jsp注释

    • <%— —%>:可以注释所有
1
2
3
4
5
6
7
8
9
<!--
<h3>主体信息</h3>
-->

<%--
<%
System.out.println("hi~~~");
%>
--%>

html注释之后,浏览器可以查看到注释的源码

所以推荐使用jsp注释

内置对象

  • 在jsp页面中不需要创建,直接使用的对象

  • 一共有9个:

变量名 真实类型 作用
pageContext PageContext 当前页面共享数据
request HttpServletRequest 一次请求访问的多个资源(转发)
session HttpSession 一次会话的多个请求间
application ServletContext 所有用户间共享数据
response HttpServletResponse 响应对象
page Object 当前页面(Servlet)的对象 this
out JspWriter 输出对象,数据输出到页面上
config ServletConfig Servlet的配置对象
exception Throwable 异常对象

pageContext可以获取另外8个内置对象