灵魂三问
什么是jsp
jsp:java server pages(java服务器页面),由早前的 sun 公司倡导,很多企业一起参与研发的动态网页技术。
有什么用
html 多数情况下用来显示静态内容 , 一成不变的。 但是有时候我们需要在网页上显示一些动态数据, 比如: 查询所有的学生信息, 根据姓名去查询具体某个学生。 这些动作都需要去查询数据库,然后在网页上显示。 html是不支持写java代码 , jsp里面可以写java代码。
怎么用
<% 内容 %>
总概
我们将分为以下几点进行学习:
- 三大指令 :page、include、taglib
- 动作标签 :(重点三个 forward、include、param)
- 九大对象 :pageContext、request、session、application、out、response、exception、page、config
三大指令
1、page指令
写法:<%@ page [属性名=属性值 …] %>
实例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="false" session="true" errorPage="error.jsp"%>
常用属性
language:页面所用的语言,默认为java,指定的语言将影响是之后jsp语法中能使用哪些语法
contentType:text/html,MIMEType 表示一个为文本,html网页,也可指定为视频等等,charset指定文本编码方式,默认为: text/html; charset=ISO-8859-1
pageEncoding: jsp内容编码
session:用于控制在这个jsp页面里面能否直接使用session对象。,默认为true,即能使用
errorPage:指定页面出现错误是跳转的页面,与isErrorPage配合使用
isErrorPage:指定该jsp是否Wie错误的跳转页面,默认为false,即不是。设置为true时表示该页面为错误跳转页面
2、include指令
写法 :<%@include file="文件名" %>
实例:
<%@include file="other02.jsp" %>
实现细节:把另外一个页面的所有内容拿过来一起输出。 所有的标签元素都包含进来。
如other01页面中包含other02页面,则java代码如下:
3、taglib指令
写法:<%@ taglib prefix="" uri=""%>
prefix : 标签库的别名 uri: 标签库路径
暂时不讲,将在el和jstl中继续提到
动作标签
写法: <jsp:标签名>
包含以下标签:
常用的有三个:forward、include、param
1、forward
作用:实现请求转发
使用实例:
<jsp:forward page="other02.jsp"></jsp:forward>
2、include
作用:包含某个页面
使用实例:
<jsp:include page="other01.jsp"></jsp:include>
注: 这里是动态包含。 也就是不把包含的页面所有元素标签全部拿过来输出,而是把它的运行结果拿过来。 底层实现代码如下:
3、param
作用:设置参数(注:需要与forward或include配合使用)
一般与forward一起使用,设置转发带过去的参数
使用实例:
<jsp:forward page="other02.jsp">
<jsp:param value="houyi" name="name"/>
</jsp:forward>
九大对象
jsp中包含了9个内置的对象(即jsp帮你创建好了不用自己创建的对象),分别为:
作用域对象(四个)
- pageContext 作用域仅限于当前的页面。 还可以获取到其他八个内置对象。
- request 作用域仅限于一次请求, 只要服务器对该请求做出了响应。 这个域中存的值就没有了。
- session 作用域限于一次会话(多次请求与响应) 当中。
- application 整个工程都可以访问, 服务器关闭后就不能访问了。
是什么:表示这些对象可以存值(通过setAttribute 和 getAttribute),他们的取值范围有限定。
使用实例:
使用作用域来存储数据<br>
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
取出四个作用域中的值<br>
<%=pageContext.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=session.getAttribute("name")%>
<%=application.getAttribute("name")%>
输出对象(两个)
- out 【JspWriter】
- response 【HttpServletResponse】
区别:先输出response的内容再输出out的内容
原因:在jsp生成的java代码中可看到,out对象输出内容需放置到response的缓冲区去,故先输出response本身要输出的内容,然后再输出out里面的内容
其他对象(三个)
- exception(Throwable) 只有在指定为错误页面的jsp中才有
- page (Object) this对象,即页面本身
- config (ServletConfig) 和ServletConfig的对象用法一样