一、Forward和Redirect的区别
Forward——直接转发、Redirect——间接转发
1、分别对应代码
RequestDispatcher对象的forward方法和HttpServletResponse对象调用其sendRedirect方法
2、对于直接转发:一次Http请求,两个信息资源共享同一个request对象,地址栏没有变化
对于间接转发:两次Http请求,对应两个request对象,地址栏变了
二、使用标签库有什么好处?如何自定义JSP标签?
使用标签库的好处包括以下几个方面:
1. 分离JSP页面的内容和逻辑,简化了Web开发;
2. 开发者可以创建自定义标签来封装业务逻辑和显示逻辑;
3. 标签具有很好的可移植性、可维护性和可重用性;
4. 避免了对Scriptlet(小脚本)的使用(很多公司的项目开发都不允许在JSP中书写小脚本)
自定义JSP标签包括以下几个步骤:
1. 编写一个Java类实现实现Tag/BodyTag/IterationTag接口(通常不直接实现这些接口而是继承TagSupport/BodyTagSupport/SimpleTagSupport类,这是对适配器模式中缺省适配模式的应用)
2. 重写doStartTag()、doEndTag()等方法,定义标签要完成的功能
3. 编写扩展名为tld的标签描述文件对自定义标签进行部署,tld文件通常放在WEB-INF文件夹或其子目录
4. 在JSP页面中使用taglib指令引用该标签库
JSTL——C标签、Struts2——S标签
三、JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp"flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态INCLUDE用include伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>