1、jsp:Java Server Pages ===>java服务器端页面
可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
用于简化书写
2、原理:JSP本质上就是一个Servlet
3、JSP脚本:
(1)<% 代码%>:定义的java代码,在service方法中,service可以定义什么,
他就可以定义什么
(2)<%! 代码 %>:定义的java代码,在jsp转换后的成员变量位置,尽量少用,
有线程问题
(3)<%= 代码 %>:定义的java代码会输出到页面上,输出预计可以定义什么,
他就可以定义什么
4、JSP的内置对象:
(1)在JSP页面中不需要获取和创建,可以直接使用的对象
(2)JSP一共有9个内置对象。
(3)先了解3个:
request
response
out :字符输出流对象。可以将数据输出到页面上。和response . getWriter()类似
(4) response.getwriter( )和out.write( )的区别:
*在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,
再找out缓冲区数据。
*response.getwriter()数据输出永远在out.write()之前
5、指令:
*作用:用于配置JSP页面,导入资源文件
*格式:
<%@指令名称属性名1=属性值1属性名2=属性值2 ... %>
*分类:
1.page:用于配置JSP页面
page的相关属性:
(1)contentType :等同于response . setContentType( )
1.设置响应体的mime类型以及字符集
2.设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级
工具,则需要设置pageEncoding属性设置当前页面的字符集)
(2)import :导包
(3)errorpage :当前页面发生异常后,会自动跳转到指定的错误页面
(4)isErrorPage :标识当前页面是否是错误页面。
true :是,可以使用内置对象exception
false :否。(默认值)不可以使用内置对象exception
2.include:导入其他jsp
如:<%@include file="top.jsp"%>
3.taglib:导入资源
如:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
*prefix :指前缀,自定义的,到时候要使用标签库就要用这个前缀,比如:
<c:if >
6、注释:
(1)html注释:<!-- --> 只能注释html
(2)jsp注释: <%-- --%> 可以注释所有
7、内置对象(9个,其中前四个为域对象 ):
(1)pageContext
①真实类型:PageContext
②作用:当前页面共享数据,还可以获取其他八个内置对象
(2)request
①真实类型:HttpServletRequest
②作用:一次请求访问的多个资源(转发)
(3)session
①真实类型:HttpSession
②作用:一个会话的多个请求间
(4)application
①真实类型:ServletContext
②作用:所有用户间共享数据
(5)response
①真实类型:HttpServletResponse
②作用:响应对象
(6)page
①真实类型:Object
②作用:当前页面(Servlet)的对象,即this
(7)out
①真实类型:JspWriter
②作用:输出对象,将数据输出到页面上
(8)config
①真实类型:ServletConfig
②作用:Servlet的配置对象
(9)exception
①真实类型:Throwable
②作用:异常对象
8、例子
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
<title>Title</title>
</head>
<body>
服务器崩溃啦。。。。。。。。。。。。
<%
String m = exception.getMessage();
out.print(m);
%>
</body>
</html>