JSP基础
# JSP简介
JSP概念:Java Server Pages java服务器端页面
可以理解为:
- 一个特殊的页面,其中既可以定义html标签,又可以定义java代码
- 用于简化书写
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP</title>
</head>
<body>
<%
System.out.println("你好,JSP!");
%>
<h2>Hello,JSP!</h2>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
控制台和页面分别输出:
JSP简化了HTML页面书写
# JSP访问原理
JSP本质是一个Servlet
# JSP脚本
JSP脚本:JSP定义java代码的方式
1.<% java代码 %>
定义的java代码在service
方法中。 service方法中可以定义什么,该脚本中就可以定义什么
2.<%! java代码 %>
定义的java代码在jsp转换后的java类的成员位置(成员变量,成员方法,静态代码块),可能引发线程安全问题!
3.<%= java代码 %>
定义的java代码会输出到页面上,输出语句中可以定义什么
页面输出
# JSP指令
作用:用于配置JSP页面,导入资源文件
格式:<% 指合名称 属性名1=属性值1 属性名2=属性值2 %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
分类:
- page:配置JSP页面
- include:导入页面其他资源
- taglib:导入资源(导包)
# page指令
contentType
contentType
等同于``response.setContentType()`
- 设置响应消息体的MIME类型及字符集
- 设置当前JSP页面编码(IDE集成开发环境)
pageEncoding:设置当前JSP页面编码字符集
import:导包
errorpage:当前页面发生异常后,会自动跳转到指定的错误页面errorpage="404.jsp"
isErrorPage:标识当前页面是否为错误页面
- true:是,可以使用内置对象
exception
- false:否,默认值。不可以使用内置对象exception
# taglib指令
<%@taglib prefix="c" uri=http://java.suncom/jsp/istl/core"%>
- prefix:自定义的前缀
# include指令
<‰@ include file="top.jsp"%>
# JSP注释
1.html注释:
<!-- -->
:只能注释html代码片段
2.jsp注释:
<%-- --%>
:可以注释所有
# JSP内置对象
在JSP页面中不需要获取和创建,可以值接使用的对象
JSP共有9个内置对象
1. request请求对象
request对象属于 Javax. servlet.HttpServletRequest接口的实例化对象。
【作用】 request对象不但可以用来设置和取得 request范围变量,还可以用来获得客户端请求参数、请求的来源、表头、 cookies等。
【机制】当用户请求一个JSP页面时,JSP页面所在的 Tomcat服务器将用户的请求封装在内置对象 request中。 request内置对象代表了客户端的请求信息,==主要用于接收客户端通过HTTP协议传送给服务器端的数据==。在客户端的请求中如果有参数,则该对象就有参数列表。
2. response响应对象
response对象属于Javax.servlet.HttpServletRresponse接口的实例化对象
【作用】 response对象用来给客户端传送输出信息、设置标头等
【机制】 response对象的生命周期由JSP容器自动控制。当服务器向客户端传送数据时,JSP容器就会创建 response对象,并将请求信息包装到 response对象中。它封装了JSP的响应,然后被发送到客户端以响应客户的请求,当JSP容器处理完请求后, response户端对象就会被销毁。
3. out字符输出流对象
out:字符输出流对象,可以捋数据输岀到页面上。
在JSP页面中,out
和 response. getwriter()
类似。
response.getwriter()
和 out. write()
的区别在 Tomcat服务器真正给客户端做出响应之前,会先找 response缓冲区数据,再找out缓冲区数据,response.getwriter()数据输出永远在out.write()之前
4. pageContext
pageContext 对象是javax.servlet.PageContext的一个对象。作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。
5. session
session对象是javax.servlet.HttpSession的一个实例。在第一个JSP页面被装载时自动创建,完成会话期管理。
session对象内部使用Map来保存数据,因此保存数据的格式为 Key/value
6. application
application对象是javax.servlet.ServletContext的一个实例。
==实现了用户间数据的共享==,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在。
7. page
内置对象page是HttpJasPage对象,其实page对象代表的就是当前JSP页面,是当前JSP编译后的Servlet类的对象。也就是说:page对象相当于普通java类的this
8. config
config 对象是javax.servlet.ServletConfig的一个对象。主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象
9. exception
- 在申明了
isErrorPage=true
之后才可以使用
JSP的内置对象及方法作用 (opens new window)
变量名 | 真实类型 | 作用 |
---|---|---|
pageContext | Pagecontext | 当前页面共享数据,还可以获取其他8个内置对象 |
request | HttpServletRequest | 一次请求访问多个资源(转发) |
session | HttpSession | 一次会话的多个请求间 |
application | ServletContext | 所有用户间共享数据 |
response | HttpServletResponse | 响应对象 |
page | Object | 当前页面( Servlet)的对象—–>this |
out | JspWriter | 输出对象,数据输出到页面上 |
config | ServletConfig | Servlet的配置对象 |
exception | Throwable | 异常对象 |