Java Server Pages:Java服务器端页面,在该页面中既可以定义Java代码,也可以定义html标签,主要用于简化书写
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试用例</title>
</head>
<body>
<%System.out.println("hello JSP!");%>
<p>hi JSP!</p>
</body>
</html>
JSP本质上还是Java中的Servlet,因为只有Servlet能够提供文件访问
JSP中共有三种定义Java代码的方法,每种定义方法均有不同作用,经过编译并形成最终的.class文件时自动生成的位置也不相同
//定义的Java代码,在service方法中生成
//service方法中可以定义什么,这种方法就可以写什么
<% code %>
<% System.out.println("hello"); %>
//定义的Java方法,在JSP转换后的成员位置
//可以定义成员变量或成员方法
<%! code %>
<%! int num=100; %>
//定义的Java代码,会输出到页面上
//输出语句可以定义什么,代码就可以定义什么
<%= code %>
<%= "hello" %>
在JSP页面中,不需要获取和创建就可以直接使用的对象。JSP中共有9个内置对象(request,response,out…)
其中的out对象本质是字符输出流对象,其作用类似于response.getWriter()主要用于将字符输出到页面
out.write()和response.getWriter().write()的作用还是存在细微差距,由于二者缓冲区不一致,在Tomcat服务器中,始终会首先访问response的缓冲区再访问out缓冲区,所以导致response的输出始终先于out输出,无论二者在代码中的位置,所以一般情况下,都会统一采用一种输出方式
用于配置JSP页面,导入资源文件
<%@ 指令名 属性名1=属性值1 属性名2=属性值2 ... %>
可能发生报错的页面
<%@ page contentType="text/html;charset=UTF-8" errorPage="JspDemo2.jsp" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<% int i=3/0; %>
</body>
</html>
响应报错的页面
<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>
网页错误!错误原因:
</h1>
<% String e=exception.getMessage(); %>
<% out.write(e); %>
</body>
</html>
变量名 | 真实类型 | 主要作用 |
---|---|---|
pageContext | PageContext | 当前页面内共享数据,还可以获取其他八个内置对象 |
request | HttpServletRequest | 一次请求访问多个资源 |
response | HttpServletResponse | 响应对象 |
session | HttpSession | 一次会话的多个请求间 |
application | ServletContext | 所有用户间共享数据 |
page | Object | 当前页面(Servlet)的对象,this |
out | JspWriter | 输出对象,将内容输出到页面上 |
config | ServletConfig | Servlet配置对象 |
exception | Throwable | 异常对象 |