JSP超全讲解(带书签).pdf
### JSP超全讲解知识点概览 #### 一、JSP入门 1. **什么是JSP:** - JSP,即JavaServer Pages,是一种基于Java的服务器端技术,用于生成动态网页。JSP文件本质上是由HTML代码和嵌入其中的Java代码组成的,这种结构使得开发人员可以在传统的HTML页面中添加复杂的业务逻辑。 2. **为什么需要JSP:** - **简化Servlet的HTML输出:** Servlet虽然可以输出HTML内容,但是这种方式非常繁琐且难以维护。JSP作为一种替代方案,能够更加简洁地处理HTML输出问题。 - **提高开发效率:** 通过将HTML和Java代码分离,开发者能够在不改动Java逻辑的情况下修改页面布局或样式,这极大地提高了开发效率。 - **易于维护:** JSP支持各种内置对象和标准标签库,这使得代码更易于理解和维护。 3. **简单使用JSP:** - 在IDEA等开发工具中创建一个新的JSP文件。 - JSP文件的基本结构通常包括`<%@ page %>`指令,用于设置页面的基本属性如字符集和内容类型。 - Java代码片段可以被放置在`<% %>`标签之间,这些代码会在服务器端执行。 4. **JSP的工作原理:** - 当客户端请求一个JSP页面时,服务器会将该页面转换为一个Servlet,并编译执行。 - 编译后的Servlet处理客户端的请求,生成动态内容并将其发送给客户端。 5. **JSP生命周期:** - JSP页面经历初始化、服务和销毁三个阶段。 - 初始化阶段主要负责加载配置信息。 - 服务阶段是处理客户端请求的核心部分。 - 销毁阶段是在服务器关闭时释放资源。 6. **JSP的语法:** - **JSP脚本:** 用于直接嵌入Java代码。 - **JSP注释:** 只有服务器端能够看到的注释。 - **JSP指令:** 设置页面的全局属性。 - **page指令:** 定义页面级别的配置选项。 - **include指令:** 包含其他资源,如另一个JSP文件。 - **taglib指令:** 定义标签库的位置和前缀。 #### 二、内置对象与属性范围 1. **JSP内置对象:** - JSP提供了一系列内置对象来简化页面开发工作,这些内置对象包括`out`、`request`、`response`、`session`、`application`等。 2. **out对象:** - 用于输出数据到客户端。 - 常用于显示页面中的动态内容。 3. **request对象:** - 存储客户端发送的所有请求信息,包括HTTP请求头和参数。 4. **response对象:** - 控制如何响应客户端请求,例如设置状态码、重定向等。 5. **config对象:** - 提供访问Web应用程序的初始化参数。 6. **session对象:** - 用于存储特定用户会话所需的属性。 7. **application对象:** - 应用程序级别的共享数据存储区。 8. **page对象:** - 当前页面的实例。 9. **exception对象:** - 捕获页面执行过程中发生的异常。 10. **pageContext对象:** - 访问其他所有内置对象的方法。 - 管理属性范围,如`request`、`session`和`application`。 11. **4种属性范围:** - `page`、`request`、`session`和`application`。 - 这些范围决定了变量的可见性和生命周期。 12. **应用场景:** - 不同的应用场景需要不同的内置对象和属性范围来处理。 #### 三、JavaBean 1. **什么是JavaBean:** - JavaBean是一种遵循特定编码规范的Java类,通常用于封装数据。 - JavaBean可以通过JSP中的`<jsp:useBean>`标签来实例化。 2. **为什么需要使用JavaBean:** - **封装数据:** 将数据和操作数据的方法封装在一个对象中,便于管理。 - **可重用性:** JavaBean可以在多个地方重复使用。 3. **JSP行为--JavaBean:** - **jsp:useBean:** 实例化JavaBean。 - **jsp:setProperty:** 设置JavaBean的属性值。 - **jsp:getProperty:** 获取JavaBean的属性值。 #### 四、EL表达式 1. **什么是EL表达式:** - EL,即Expression Language,是一种简单的表达式语言,用于在JSP页面中获取JavaBean的属性值。 2. **为什么要使用EL表达式:** - **简化代码:** 无需编写复杂的Java代码即可获取JavaBean的属性。 - **提高可读性:** 使得JSP页面的代码更加清晰。 3. **EL表达式的作用:** - 获取JavaBean的属性值。 - 执行简单的算术运算。 - 调用方法等。 4. **EL运算符:** - 包括算术运算符、比较运算符和逻辑运算符等。 5. **EL表达式的内置对象:** - 提供了一些预定义的对象,如`pageScope`、`requestScope`等。 6. **EL表达式回显数据:** - 使用EL表达式可以直接在JSP页面中显示数据。 7. **EL自定义函数:** - 可以自定义函数并使用EL表达式调用这些函数。 8. **EL函数库(fn方法库):** - 提供了一些常用的字符串操作方法,如`trim()`、`indexOf()`等。 #### 五、JSTL 1. **什么是JSTL:** - JSTL,即JavaServer Pages Standard Tag Library,是一组标准标签库,用于简化JSP页面的开发。 2. **为什么要使用JSTL:** - **简化页面开发:** 通过提供一组丰富的标签,可以更高效地完成页面开发任务。 - **提高可维护性:** 使用标准标签库可以提高代码的可读性和可维护性。 3. **使用JSTL标签库步骤:** - 在JSP页面中使用`<%@ taglib %>`指令导入所需的标签库。 - 使用标签库中的标签。 4. **core标签库:** - 提供了基本的控制结构和数据处理功能,如`c:out`、`c:if`等。 5. **自定义标签:** - **为什么要使用自定义标签:** 自定义标签可以根据项目需求创建,提高开发效率和代码的可读性。 - **编写自定义标签的步骤:** 创建标签处理类、编写`tld`文件、部署和使用。 #### 六、传统自定义标签 1. **为什么要使用自定义标签:** - **封装复杂逻辑:** 自定义标签可以封装复杂的逻辑,使其更容易复用。 - **提高可读性:** 使用有意义的标签名称可以使代码更易于理解。 2. **编写自定义标签的步骤:** - 创建标签处理类,实现`Tag`接口。 - 编写`tld`文件,描述标签的行为。 - 部署标签库并在JSP页面中使用。 3. **快速入门:** - 实现一个简单的标签处理类。 - 创建`tld`文件。 - 在JSP页面中使用自定义标签。 4. **标签处理类详细说明:** - 标签处理类通常实现了`Tag`接口,定义了标签的行为。 - 标签处理类可以访问当前页面上下文和其他内置对象。 5. **tld文件详细说明:** - `tld`文件定义了标签的行为,包括标签的名称、属性等。 - 通过`tld`文件,可以控制标签的使用方式。 #### 七、自定义标签的应用 1. **防盗链:** - 实现一种机制,防止其他网站非法引用自己的资源。 2. **if标签:** - 控制结构标签,用于条件判断。 3. **forEach标签:** - 循环结构标签,用于遍历集合。 4. **HTML转义标签:** - 对HTML特殊字符进行转义处理。 5. **ifelse标签:** - 提供更复杂的条件判断逻辑。 6. **DynamicAttribute接口:** - 支持传递动态属性的标签。 #### 八、JSP面试题 1. **jsp静态包含和动态包含的区别:** - **静态包含:** 在编译时完成,被包含的文件内容会被直接插入到包含它的文件中。 - **动态包含:** 在运行时完成,可以包含动态生成的内容。 2. **jsp有哪些内置对象?作用分别是什么?** - 列举了`out`、`request`、`response`等内置对象及其作用。 3. **jsp和servlet的区别、共同点、各自应用的范围:** - 区别在于JSP主要用于生成动态HTML页面,而Servlet用于处理业务逻辑。 - 共同点在于两者都是基于Java的Web技术。 - 应用范围方面,JSP适用于前端页面展示,Servlet适用于后端逻辑处理。 4. **属性作用域范围:** - 描述了`page`、`request`、`session`和`application`四种属性范围的区别。 5. **写出5种JSTL常用标签:** - 列举了`c:out`、`c:if`等常用的JSTL标签。 6. **写一个自定义标签要继承什么类:** - 通常需要继承`javax.servlet.jsp.tagext.SimpleTagSupport`或`javax.servlet.jsp.tagext.TagSupport`类。 7. **JSP是如何被执行的?执行效率比SERVLET低吗?** - JSP被编译成Servlet后执行,执行效率取决于多种因素,但在大多数情况下,JSP和Servlet的性能差异不大。 8. **如何避免jsp页面自动生成session对象?** - 通过设置`<%@ page session="false" %>`指令可以避免自动创建session对象。 9. **Servlet和CGI的区别:** - Servlet是Java语言实现的,而CGI是通用网关接口,可以使用任何编程语言实现。 10. **简述JSP的设计模式:** - 介绍了MVC(Model-View-Controller)设计模式在JSP中的应用。 通过以上内容,我们可以看到JSP是一种强大且灵活的技术,它不仅简化了动态网页的开发,还提供了丰富的内置对象和标签库来支持各种复杂的业务需求。对于希望深入了解JSP技术的开发者来说,掌握上述知识点是非常重要的。
剩余134页未读,继续阅读
- 粉丝: 2
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助