学完servlet之后,似乎jsp就有点弱了,在吃完jsp这顿快餐之后,顺便记录了学习过程中的要点:
1. jsp注释 和 html注释的区别
注释方式:jsp
<%-- xxx --%> html&xml
<!-- xxx -->
区别:jsp注释的内容
不会打给浏览器,而html注释的内容
会打给浏览器,因为浏览器
认识这种注释。
2. Page指令
errorPage :用于jsp页面出错时,给用户一个友好提示界面。还可以在
web.xml 文件中配置
<error-page>标签,来对web中所有的页面进行
全局的配置,如出现500或404时,可以给用户一个友好的提示页面。
乱码问题:
pageEncoding="UTF-8" 指定web服务器用UTF-8码表翻译jsp -> servlet
contentType="text/html; charset=UTF-8" 指定浏览器用UTF-8码表翻译servlet -> html (由于服务器默认会将response也翻译为
pageEncoding指点的码表,所以contentType
可以不写)
3. include指令
静态包含(编译时包含):<%
@ include file="/public/head.jsp" %> 在翻译成servlet时,就将head.jsp中的内容包含进 目标jsp,
head.jsp 不翻译为单独的servlet
动态包含(运行时包含):<% request.getRequestDispatcher("/public/head.jsp").
include(request,response) %> 在翻译成servlet时,就将head.jsp翻译为servlet,在
运行时,动态地将head.jsp中的内容包含进 目标jsp,
head.jsp会被翻译为单独的servlet
注意:静态包含性能比动态包含要好得多,所以
尽量使用静态包含。
4. 九大隐式对象
out对象: 带有缓冲区,只有在
1.设置page指令的buffer属性 关闭了out对象的缓存功能 ,
2. out对象的缓冲区已满,
3. 整个jsp页面结束 ,才将out对象
缓冲区中的内容真正写入到servlet引擎提供的
缓冲区(
response)中。所以response调用的输出,
总是比out对象先输出。
pageContext对象:
5. pageContext
1. 由于一个也是良好的jsp页面中
不能出现一行java代码,为了移除这些java代码,就需要用到
自定义标签库。
2. pageContext(page域) 的作用范围: 创建jsp页面时(
生) -> 翻译成servlet时(
死) ,它是
最小的域对象。
3.
查找数据: pageContext.findAttribute("data"); //查找顺序 page -> request -> session -> application (
EL表达式就是这个原理)
6. Jsp标签
1.
forward标签<jsp: forward>: 根据mvc模式,应将
首页请求交给servlet处理,但是,由于在web.xml 中
不能配置servlet,所以只能在web.xml 中配置
首页的jsp,然后在首页的jsp中,使用forward标签
跳转到一个servlet ,进行处理。