jsp基础
一、jsp运行原理
当浏览器访问JSP页面时,web服务器会将JSP翻译成Servlet并执行,将内容写到response对象中,JSP页面中的各种html标记以out.write()方式写入到response对象中。
二、jsp语法
jsp模版元素:jsp页面中的html标记
jsp脚本表达式:<%=变量或者表达式 %>,它用于向浏览器输出数据
jsp脚本片段:<%java代码%>,多个脚本片段可以看成一个整体
jsp声明:<%!java代码 %>,Java代码会被翻译到Service方法外面去
jsp注释:<%-- --%>,注释的内容不会被发送到浏览器
三、jsp的page指令
语法:<%@ page ContentType="text/html;charset=UTF-8" import="java.util.data"%>
page指令的属性: language="java"-->脚本片段中嵌入的是什么代码,extends="package.class"-->翻译后的servlet继承自哪个类,import="java.util.*"-->导入包名
session="true|false"-->翻译后的jsp是否要新建一个session对象,buffer="none|8kb|sizekb"-->jsp页面是否需要缓冲,主要用于out对象输出数据是否写到缓冲区
autoFlush="true|false"-->缓冲满了是否自动刷新,isThreadSafe="true|false"-->该jsp是否是线程安全的,false是安全的,info="text"-->带些信息,errorPage="relativeURL"
-->指定出错页面,路径如果以"/"开头则代表当前web应用,对于错误处理页面也可以在web.xml文件中通过<error-page>元素为整个页面配置错误处理页面,<exception-type>指定异常类
完全限定名,<location>以"/"开头指定错误页面路径,如果设置了某个页面的errorPage指令,则web.xml中的配置对该页面无效。ContentType="text/html;charset=UTF-8"指定页面格式
和编码方式,isELIgnored="true",告诉web服务器是否忽略EL表达式。
四、jsp的include指令
<%@include file=""%> -->静态包含 <%request.getRequestDispatcher("/").include(request,response)%> -->动态包含
五、jsp的taglib指令
六、jsp的九大隐式对象
request,response,application,session,exception,out(jspWriter),page,config(ServletConfig),pageContext
七、jsp的out对象
out对象通过调用pageContext对象的getOut()方法获得,只有满足下面条件之一,out对象才去调用ServletResponse.getWriter()方法获得PrintWriter对象,将其缓冲区中的内容写到
response对象中。
1.关闭页面的缓存(page 的buffer指令)
2.out对象的缓冲区已满
3.整个jsp页面已结束
八、PageContext对象
PageContext对象代表jsp页面的运行环境,他的生命周期是一个页面,他封装了其他八大隐式对象(用在自定义标签开发中),他还是一个域可以用来保存数据,他还封装了web开发中经常用到的一些操作,例如包含和跳转其他资源,检索其他
域中的属性(EL表达式的底层实现)
pageContext.findAttribute(String name)用来寻找其他域中的属性,查找顺序page,request,session,application
pageContext还有两个方法:forward()和两个include()(用来分别替代request和include指令的包含)
九、jsp常用标签
jsp标签有时也称jsp action元素,他可以实现业务逻辑功能,避免在jsp中写入java代码。
常用标签:
<jsp:include>
<jsp:forward>-->应用场景,配置网站首页的时候,配置jsp为首页,jsp插入跳转servlet的标签
<jsp:param>-->用于传递数据
十、jsp映射
<servlet>
<servlet-name></servlet-name>
<jsp-file></jsp-file>
</servlet>
<servlet-mappping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mappping>