1. 什么是JSP
JSP(Java Server Pages)简介
JSP,全名为 Java Server Pages(Java 服务器页面),是一种用于创建动态网页的技术。它由 Sun Microsystems(现为 Oracle)开发,并且支持多家公司参与。JSP 可以看作是对 Servlet 技术的一个简化版本,类似于 ASP 技术。它允许在普通的 HTML 页面中插入 Java 代码和特定的 JSP 标签,从而生成动态的网页。JSP 文件的扩展名是 .jsp 。
使用 JSP 开发的网页可以在不同操作系统上运行,包括 Linux 和其他平台。
JSP 的特点包括:
- 网页逻辑与设计分离:将网页的显示内容和逻辑处理分开,方便管理和更新。
- 支持组件化设计:允许重用网页组件,使开发过程更快速和高效。
总结一下:
HTML:用于创建静态网页,内容固定不变。
JSP:用于创建动态网页,内容可以根据数据变化而更新,支持嵌入 Java 代码和 HTML 代码。
2. JSP为什么会出现
1.servlet展示信息的不方便,引入了JSP。
2.JSP本质上也是一个servlet!!!!!!
3.JSP就是在HTML页面中嵌入了java代码。
3.JSP中如何嵌套Java代码
答案:小脚本(<% java代码%>)
声明标签 表达式标签
<%!变量或者方法声明%>
<%= 表达式%> 在页面上显示的效果
程序代码标签 <%java代码%> 页面上动态展示内容
page指令:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<body>
<%! int i=10;%><!--成员变量-->
<%! public void show(){}%> <!--成员方法-->
<%=i%> <!--输出变量值-->
</body>
如果把一个数据存在request域中,取值操作如下: jsp中的注释
<!-- html注释内容,查看源码时能看到 -->
<%-- jsp注释,查看页面源码时看不到 --%>
4.JSP的原理
当你在浏览器中访问一个 JSP 页面(比如 http://localhost:8080/xxx/xxx.jsp
),服务器会按照以下步骤处理这个请求:
-
找到 JSP 文件:服务器发现文件后缀是
.jsp
,它会找到这个 JSP 文件,比如index.jsp
。 -
转换成 Java 代码:服务器会把
index.jsp
转换成一个 Java 文件,叫做index_jsp.java
。这个过程就像是把 JSP 中的 HTML 代码和 Java 代码转换成 Java 程序代码。 -
编译 Java 文件:接着,服务器会编译
index_jsp.java
文件,生成一个.class
文件,叫做index_jsp.class
。这个文件是 Java 虚拟机可以执行的代码。 -
执行并生成响应:服务器加载并运行
index_jsp.class
文件。这个文件本质上是一个 Servlet,它会处理请求并生成响应。响应的内容就是 JSP 文件中的 HTML 代码。 -
返回浏览器:最后,服务器把生成的 HTML 代码发送回浏览器,你在浏览器中看到的就是这些 HTML 内容。
简而言之,JSP 文件被转换成 Java 代码,然后编译和执行,最终输出 HTML 内容给浏览器。
5. JSP的内置对象
JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、 pagecontext、config、page、exception
当然可以!JSP 中有九个内置对象,它们提供了在 JSP 页面中常用的功能。以下是它们的简单介绍:
1. request
- 类型:`HttpServletRequest`
- 用途:获取客户端请求的参数、头信息、请求方法等。
2. response
- 类型:`HttpServletResponse`
- 用途:向客户端发送响应,包括设置响应头、内容类型和写入响应体。
3. out:
- 类型:`JspWriter`
- 用途:用于向客户端输出数据。你可以用它来写入 HTML 内容。
4. session:
- 类型:`HttpSession`
- 用途:存储用户的会话信息,例如用户登录状态和用户数据。
5. application:
- 类型:`ServletContext`
- 用途:用于获取 Web 应用的环境信息和共享数据,可以在不同的 JSP 页面和 Servlets 之间共享数据。
6. config:
- 类型:`ServletConfig`
- 用途:获取 Servlet 的配置信息,通常用于获取初始化参数。
7. pageContext:
- 类型:`PageContext`
- 用途:提供对 JSP 页面上下文的访问,包括所有的内置对象和其他页面相关信息。
8. page:
- 类型:`Object`
- 用途:指代当前的 JSP 页面对象,可以用来访问当前 JSP 页面的属性和方法。
9. exception
(只有在 `errorPage` 指定的 JSP 页面中可用):
- 类型:`Throwable`
- 用途:在错误页面中用于获取错误信息和异常对象。
这些对象使得在 JSP 页面中处理请求、生成响应、管理会话等变得非常方便。
6.JSP的指令
它们是用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。
语法格式如下:
<%@ directive attribute="value" %>
directive:指令名称 attribute 属性名 value:属性值
指令名称 | 描述 |
page | 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等 |
include | 包含其他文件 |
taglib | 引入标签库的定义 |
7. EL表达式
(1)什么Expression Language 表达式语言
最初定义于JSTL1.0部分
在JSP2.0中,EL从JSTL中剥离出来,放置在JSP规范中,称为JSP2.0规范的一部分 在JSP中使用EL表达式,可以简化对象和变量的访问是EL表达式
(2)EL表达式语法
语法格式:${需要展示信息的名字} 注意:
当表达式没有指定变量或者对象的范围时,
那么容器会依次从pageContext—>request—>session—>application中查找该变量或对象,我们可以 通过隐含对象获得指定作用域的值:
pageScope对象,用于获取当前页面的属性值 requestScope对象,用于获取请求范围的属性值 sessionScope对象,用于获取会话范围的属性值 applicationScope对象,用于获取程序范围的属性值 语法:${requestScope.key}
(3)EL中基础操作符
术语 | 定义 |
算术型 | + 、-、 * /(div) 除 、 %(mod) 余数 |
逻辑型 | and、&&、or、||、!、not |
关系型 | ==、eq、!=、ne、、gt、<=、le、>=、ge。可以与其他值进行比较,或与布尔型、字 符串型、整型或浮点型文字进行比较。 |
Empty | Empty操作符是一个前缀操作符用于判断一个值是否为null或者为empty如String str = |
条件型 | A ?B :C。根据 A 赋值的结果来赋值 B 或 C。 |