JSP自定义标签
<-----温故而知新----->
JSP生命周期
JSP页面编译后生成字节码文件,先执行_jspInit()方法,然后有请求来时,多线程调用_jspService()方法
JSP九大内置对象
out、request、response、session、application、page、pageContext、exception、config
out对象(常用方法):
request对象(常用方法):
表单提交时设置编码:request.setCharacteEncoding("UTF-8");
URL传参时设置编码:增加tomcat中server.xml的属性URIEncoding="UTF-8"
response对象(常用方法):
response对象具有页面域,即访问一个页面时,该页面内的response对象只对此次访问有效,其他页面的response对象对当前页面无效
使用PrintWriter和out区别:getWriter()生成的对象打印总是在out对象打印之前
请求重定向与请求转发的区别:
重定向:response.sendRedirect() 客户端行为,本质上是两次请求,地址栏URL改变
转发: request.getRequestDispatcher("URL").forward(req , resp); 服务器请求,一次请求,地址栏URL不变
session对象
(超时时间)
生命周期:创建、活动、销毁(调用session.invalidate()方法、session过期、重启)
application对象:实现用户间数据共享,可存放全局变量。开始于服务器启动,终止于服务器关闭。在任何地方对application对象属性的操作,都将影响其他用户对此的访问
page对象(常用方法):当前jsp页面本身,类似this指针
pageContext对象(常用方法):
pageContext对象提供对JSP页面内所有对象及名字空间的访问
pageContext对象可访问到本页所在session,也可取本页面所在application的某一属性值
Config对象(常用方法):是一个Servlet初始化时,JSP引擎向它传递包括Servlet初始化所用到参数(属性名和属性值)以及服务器的相关信息(ServletContext对象)
Exception对象(常用方法):异常对象,JSP页面要使用此对象,需要设置isErrorPage=true
include指令:
<%@ include file="URL" %>
include动作:
<jsp:include page="URL" flush="false">
<jsp:forward> 动作
<jsp:forward page="URL"> 等同于 转发
<jsp:param> 动作
<jsp:param name="参数名" value="参数值">
<jsp:plugin> 动作
<jsp:plugin>
<-----温故而知新----->
————————————————————————————————————————————————————————————————————————
自定义标签
1、简单的自定义标签
①、编写标签处理类,继承自TagSupport
②、定义标签库(tld)描述文件
<tag>
<name></name>
<tag-class></tag-class>
<body-content></body-content>
</tag>
③、将标签库描述文件放在WEB-INF或其子目录下
④、在JSP页面中使用自定义标签
2、控制是否执行标签体内容
<body-content>empty</body-content> // 空标签体
<body-content>JSP</body-content> // 允许出现JSP脚本
<body-content>scriptless</body-content> // EL表达式和JSP动作
<body-content>tagdependent</body-content> // 自定义类解析
3、自定义标签的属性
..................不想记录了...................
4、BodyTag和BodyTagSupport类
5、SimpleTag接口详解
SimpleTag方法:
doTag()方法 是核心方法,用于编写标签处理逻辑
setParent(JspTag)方法 将父标签处理器对象传递给标签处理类
getParent() 获取当前标签的父标签对象
setJspContext(JspContext)方法 将JSP页面的pageContext对象传递给标签处理器对象
setJspBody(JspFragment)方法 将代表当前标签体的JspFragment对象传递给标签处理器对象
SimpleTagSupport方法(继承SimpleTag):
getJspContext()方法 返回代表当前页面的JspContext
getJspBody()方法 返回代表当前页面的JspBody
6、总结
JSP 继承 <body-content>
1.0 TagSupport empty、JSP、scriptless、tagdependent
2.0 SimpleTagSupport scriptless