指令标识
html
java代码
out内置对象,直接拿过来用
注释
<%-- 注释内容 --%>:JSP提供了隐藏注释,隐藏注释不仅在浏览器页面中看不到,在查看HTML源代码时也看不到
动态注释,网页看不到,只能看源码<!-- <%=new Date()%> -->
指令
page指令,描述属性
session属性的值为true。需要注意的是,JSP 容器自动导入以下4个包:
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
include指令,包含其他jsp页面,
<%@ include file="被包含的文件地址"%>
taglib指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix:用于指定标签的前缀,该前缀不能命名为jsp、jspx、java、sun、servlet和sunw。
uri:用于指定标签库文件的存放位置
jsp动作元素
page相对路径,<jsp:include page="URL" flush="true|false" />
page:用于指定被引入文件的相对路径。例如,指定属性值为top.jsp,则表示将当前JSP文件相同文件夹下的top.jsp文件引入到当前JSP页面中。
flush:用于指定是否将当前页面的输出内容刷新到客户端,默认情况下,flush属性的值为false。
页面一包括了页面二,先编译页面二,包含在页面一,在编译页面一
而上面include指令只编译一次
include指令通过file属性指定被包含的文件,file属性不支持任何表达式; <jsp:include>动作元素通过page属性指定被包含的文件,支持JSP表达式
如果你希望在被包含的页面内容之前输出当前页面的所有内容,那么你可以使用 flush="true"
。如果你希望在被包含的页面内容之后或者某个特定时间点刷新输出缓冲区,那么你可以使用 flush="false"
。
。
请求转发元素<jsp:forward>
<jsp:forward page="welcome.jsp" />
隐式对象
名称 | 类型 | 描述 |
out | javax.servlet.jspJspWriter | 用于页面输出 |
request | javax.servlet.http.HttpServletRequest | 得到用户请求信息 |
response | javax.servlet.http.HttpServletResponse | 服务器向客户端的回应信息 |
config | javax.servlet.ServletConfig | 服务器配置,可以取得初始化参数 |
session | javax.servlet.http.HttpSession | 用来保存用户的信息 |
application | javax.servlet.ServletContext | 所有用户的共享信息 |
page | java.lang.Object | 指当前页面转换后的Servlet类的实例 |
pageContext | javax.servlet.jsp.PageContext | JSP的页面容器 |
exception | java.lang.Throwable | 表示JSP页面所发生的异常,在错误页中才起作用 |
out先写到缓存区里面
getWriter()才是直接返回到页面上
一般是有缓存的,除非设置buffer="0kb",所以一般是 getWriter()输出的先显示
通过pageContext可以获得其他8个隐式对象,和设置属性
pageContext操作属性的相关方法
方法名
功能描述
void setAttribute(String name,Object value,int scope)
用于设置pageContext对象的属性
Object getAttribute(String name,int scope)
用于获取pageContext对象的属性
void removeAttribute(String name,int scope)
用于删除指定范围内名称为name的属性
void removeAttribute(String name)
用于删除所有范围内名称为name的属性
Object findAttribute(String name)
用于从4个域对象中查找名称为name的属性
属性:
void setAttribute(String name,Object value,int scope)
scope范围如下
pageContext.PAGE_SCOPE:表示页面范围。
pageContext.REQUEST_SCOPE:表示请求范围。
pageContext.SESSION_SCOPE:表示会话范围。
pageContext.APPLICATION_SCOPE:表示Web应用程序范围。
- 需要注意的是,当调用findAttribute()方法查找名称为name的属性时,会按照page、request、session和application的顺序依次进行查找,如果找到,则返回属性的名称,否则返回null。
为什么第二个不谢request----可能是request对象的方法
exception对象
- exception对象只有在错误处理页面才可以使用,即page指令中指定了属性<%@ page isErrorPage="true"%>的页面。
- 处理错误页面的jsp" 要设置<%@isErrorPage="true%>才可以获取错误对象
<%=exception.getMessage()%><br />
- 错误页面要设置<%@errorPage="error.jsp"%>