对于jsp的一些理解,包括原理,还有request,response概述,以及一些注意事项
### 对于JSP的理解 #### 1. JSP 概述 ##### 1.1 什么是JSP? JSP(JavaServer Pages)是Java技术体系中用于开发动态网页的一种技术。它结合了HTML、XML、JavaScript等静态网页元素与Java语言的动态特性,允许开发者在服务器端生成动态内容。与传统的HTML页面相比,JSP不仅可以展示静态数据,还可以根据用户请求动态地生成内容。 ##### 1.2 JSP 的组成 JSP页面由以下几个部分组成: 1. **HTML/XML 标签**:用于定义页面的基本结构和布局。 2. **Java 脚本(Scriptlets)**:即嵌入在JSP页面中的Java代码片段,用于实现业务逻辑。 3. **JSP 动态标签**:包括JSP指令(Directives)和JSP动作(Actions),用于控制JSP页面的行为和动态插入内容。 #### 2. JSP 语法 ##### 2.1 JSP 脚本 JSP脚本是嵌入在JSP页面中的Java代码,主要包括以下三种形式: - `<% %>`:表示Java代码块,这些代码将直接执行。 - `<%= %>`:表示Java表达式,其结果将被转换为字符串并输出到客户端。 - `<%! %>`:用于定义变量和方法,这些变量和方法对整个JSP页面可见,但不会直接参与页面输出。 ##### 2.2 内置对象 `out` `out` 是JSP提供的内置对象之一,主要用于向客户端输出内容。例如,可以使用 `<%=expression%>` 或 `<% out.print(expression); %>` 来输出表达式的值。这两种方式在功能上是等效的。 ##### 2.3 多个 `<% %>` 的共通性 在一个JSP页面中,多个 `<% %>` 标签内的Java代码被视为连续执行的代码块。这意味着即使它们分布在页面的不同位置,也会按照出现的顺序被执行。 #### 3. JSP 原理 ##### 3.1 JSP 作为特殊Servlet JSP本质上是一种特殊的Servlet。当一个JSP页面首次被请求时,服务器会将JSP编译为一个Servlet类,然后运行该Servlet以响应客户端的请求。这意味着JSP页面的执行过程与普通的Servlet并无本质区别。 ##### 3.2 JSP 的“真身”存放目录 编译后的Servlet文件通常存储在服务器的特定目录中,如 Tomcat 的 `${CATALINA_HOME}/work` 目录。这些文件被称为JSP的“真身”,包含了将JSP页面转换为Servlet后的源代码。 在这些“真身”文件中,可以看到原本的静态HTML内容通过 `out.write()` 方法被输出。这是因为静态内容最终需要转换为字符串输出给客户端。 #### 4. 再论 JSP 脚本 JSP脚本的三种形式: 1. `<% %>`:这部分代码将直接嵌入到编译后的Servlet类中。 2. `<%= %>`:这部分代码会被转换为 `out.print()` 调用,输出结果给客户端。 3. `<%! %>`:这部分定义的变量和方法不会出现在 `_jspService()` 方法中,而是作为Servlet类的一部分。 #### 5. JSP 注释 JSP支持两种类型的注释: - `<%-- --%>`:称为JSP注释,这种注释在编译过程中会被忽略。 - `<!-- -->`:这是HTML注释,虽然在客户端不可见,但在编译后的Java源代码中仍然存在。 ### Request 对象 #### 1. Request 概述 `request` 是一个重要的内置对象,用于封装客户端请求的信息。它继承自 `javax.servlet.http.HttpServletRequest` 类型,并在每次请求时由服务器创建。`request` 主要包含以下功能: 1. **封装请求头数据**:用于获取HTTP头部信息。 2. **封装请求正文数据**:适用于POST请求,可以从中读取表单提交的数据。 3. **作为域对象使用**:可以将其视为一个Map,用于在不同的Servlet之间传递数据。 4. **提供请求转发和请求包含功能**:使得一个Servlet可以将请求转交给另一个Servlet处理,或者包含其他资源的内容。 #### 2. Request 域方法 `request` 提供了一系列方法用于管理请求中的数据: - `void setAttribute(String name, Object value)`:用于在request中设置一个属性,相当于将一个键值对存储在Map中。 - `Object getAttribute(String name)`:用于从request中获取指定名称的属性。 - `void removeAttribute(String name)`:用于移除request中指定名称的属性。 这些方法允许开发者在不同Servlet间共享数据,从而简化了数据的传递过程。此外,`request` 还提供了诸如 `getRequestURI()` 和 `getParameter(String name)` 等方法来获取请求的具体信息。
剩余16页未读,继续阅读
- 粉丝: 10
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (175601006)51单片机交通信号灯系统设计
- Starter SINAMICS S120驱动第三方直线永磁同步电机系列视频-调试演示.mp4
- (174755032)抽烟、烟雾检测voc数据集
- 基于滑膜控制的差动制动防侧翻稳定性控制,上层通过滑膜控制产生期望的横摆力矩,下层根据对应的paper实现对应的制动力矩分配,实现车辆的防侧翻稳定性控制,通过通过carsim和simulink联合仿真
- 伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlab Simulink仿真 1.模型简介 模型为基于陷波滤波器的双惯量伺服系统机械谐振抑制仿真,采用Matlab R2018a Simul
- (175989002)DDR4 JESD79-4C.pdf
- lanchaoHunanHoutaiQiantai
- (177377030)Python 爬虫.zip
- (177537818)python爬虫基础知识及爬虫实例.zip
- 自动驾驶横纵向耦合控制-复现Apollo横纵向控制 基于动力学误差模型,使用mpc算法,一个控制器同时控制横向和纵向,实现横纵向耦合控制 matlab与simulink联合仿真,纵向控制已经做好油门刹