1.jsp的运行原理
2.jsp的基本语法
3.jsp映射的配置
4.四大作用域
1.jsp的运行原理
jsp页面在第一次访问到的时候会被jsp翻译引擎翻译成servlet,以后每次对这个页面的访问都是servlet执行后输出
2.jsp的基本语法
jsp:模板元素,表达式,脚本片段,注释,声明,指令,标签,内置对象
^1.模板元素:JSP中HTML的内容,被out.write()直接输出到浏览器上
^2.表达式:<%=java表达式%>,servlet计算出表达式值后输出
^3.脚本片段:<%脚本片段%>,servlet直接将语句复制粘贴
一个jsp可以有多个脚本片段,每个脚本片段可以互相访问,单个脚本片段可以不完整,但多个脚本片段组合在一起之后一定是完整的语句。
^4.注释:<%--注释--%>,注释内容在jsp翻译成servlet时被丢弃
^5.声明:<%!若干java语句%>,在servlet中放到和service同级别的位置,成为类的一员
^6.指令:<%@ 指令名称 属性="..."%>
@1.指令名称:page,include,taglib
@2.page(当前页面)指令的属性:buffer,aotuFlush,errorPage,language,entends,import,session,isErrorPage,contentType,pageEncoding,isELEgnored
注:errorPage也可以在web.xml中设置:
<error-page>标签<error-page>
@3.include指令的属性:
引入别的jsp页面,jsp翻译引擎也会将引入的jsp页面翻译成servlet
注:包含的方式有很多种,只有<%include%>是静态包含(无脑复制粘贴,不考虑是否有错),其他都是动态包含。
@4.taglib:在jsp中引入标签库
^7.标签:jsp中为了不大量出现java代码,会将一些代码封装成标签
jsp原生支持的标签:
<jsp:forward>:实现请求转发
<jsp:include>:实现页面包含,此处是动态包含
<jsp:param>:用于支持上面两个标签,当他们需要传递参数的时候用它
^8.内置对象(九大隐式对象):request,response,config,application,exception,session,page,out,pageContext
@1.out
%1.out相当于PrintWriter
%2.与response.getWriter()不同在于:out自带一个缓冲区
%3.out比response.getWriter()好的另一个优势:可以防止输出顺序错乱
%4.buffer="0kb|8kb|sizekb",用于设置out缓冲区的大小,默认8kb
%5.autoFlush="true",这表明当out缓冲区满了,就将缓冲区的内容写到jsp中,然后继续接受数据,不然就报错
@2.pageContext
%1.它是获取其他八大隐式对象的入口
%2.域对象
&1.生命周期:
第一次访问jsp页面,创建pageContext,访问结束,销毁它
&2.作用范围:
当前jsp页面
&3.findAttribute();
该方法会在四大作用域范围内查找,找到则返回,找不到则为空
查找方式:从小到大(page,request,session,application)
%3.提供请求转发和请求包含
pageContext.forward("/index.jsp");
pageContext.include("/index.jsp");
3.jsp映射的配置
<servlet>
<servlet-name>index</servlet-name>
<jsp-file>/index.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>index</servlet-name>
<url-pattern>/jsp/*</url-pattern>
</servlet-mapping>
4.四大作用域
PageContext(page)域:当前页面
request域:请求
session域:会话级别范围
ServletContext(application)域:整个web应用