page
include
taglib
语法:<%@ 指令名称 属性=值 属性=值 …%>
-------------------
page
1.language
默认值java
2.extends
3.session
4.import
5.buffer
6.autoFlush
7.IsELIgnored
false 不忽略
true 忽略,不解析
8.errorPage 和isErroPage控制JSP页面发生错误跳转
------------------
PageEncoding
ContentType
编辑JSP的时候,点击保存的时候,需要用到PageEncoding,保存文件到硬盘
Servlet程序返回给浏览器的时候,通过contentType属性,通知浏览器使用哪种编码去查看网页。
结论:如果pageEncoding不支持中文,JSP无法将中文信息保存到硬盘。
------------------
错误页面
一、设置erroPage
二、通过配置web.xml
<erro-page>
<erro-code>500
<location>/demo/error.jsp
-------------------
include
包含
静态include原理
index.jsp ---->index_jsp.java
当翻译到<%@ include file=”header.jsp”%>
翻译header.jsp,并且将翻译后的servlet内容引用到index对应的Servlet
静态包含:包含目标文件源代码,源代码合并到一起,一起进行执行。
--------------------
JSP九大内置对象
1.request HttpServletRequest
2.response HttpServletResponse
3.session HttpSession
4.application ServletContext
5.out JspWriter
6.pageContext PageContext
7.page this(HttpServlet)
8.config ServletConfig
9.exception Throwable
pageContext代表当前页面上下文
向page范围保存数据,必须通过它。
pageContext.setAttribute(name,value);
findAttribute 方法可以依次在page、request、session、application,四个数据范围进行数据的查找
Object value = pageContext.findAttribute(“name”);
EL中 直接写${name} 就会调用findAttribute(),在四个范围内查找数据
pageContext可以用来获得其他8个隐含对象
作用:框架的编写,得到pageContext对象,就相当于得到JSP9个内置对象
----------------------
out对象
内部使用PrintWriter实现,拥有独立缓冲区 8kb
out = pageContext.getOut();
-------------------------
out和response.getWriter()的区别
out.print(aaa);
response.getWriter().print(bbb);
out.print(ccc);
结果:
response.getWriter(),输出的内容在out之前
Out缓冲区 response.getWriter()缓冲区
aaa bbb
ccc
为何bbb先输出?
out必须通过response回写到浏览器,当out.flush,内容输出到response的缓冲区中。
所以bbb aaa ccc
----------------------
exception
使用前要设置isErrorPage=”true”
---------------------------------
JSP 6个动作标签
<jsp:userBean> <jsp: setProperty><jsp:getProperty> 与javaBean有关
<jsp:include> <jsp:forward> <jsp: param>
<jsp:include>等价于request.getRequestDispatcher().include
<jsp:forward>等价于request.getRequestDispatcher().forward
<jsp:include>功能等价于<%@ include%>
原理:动态包含而不是静态包含
在index servlet执行的时候,去完成包含动作。包含结果是目标jsp翻译Servelt生成的html页面结果
<jsp:forward>等价于 request.getRequestDispatcher(“/”).forward(request, response);
---------------------------------------------