当前课程知识点:Web后端开发技术 > 第4章 JSP基础 > 4.2 脚本元素 > 4.2.1 脚本元素
欢迎大家回来继续学习web后端开发技术
在这一小节当中
我们将学习脚本元素
脚本元素是JSP中的代码部分
它是去使用Java语言来编写的
它的语法形式是这样的
有一个开始标记
有一个结束标记
中间是Java代码
开始标记使用
小于号百分号
结束标记使用
百分号大于号
开始标记和结束标记
之间我们是用来编写Java代码的部分
下面我们看一个示例
那么这个示例来判断一个
Email变量它是否符合
它的格式
在编写过程当中
我们通过调用indexOf
这个方法
来判断字符串的当中是否包含 @
这个字符
如果包含@字符
我们就认为它是符合EMAIL格式
的一个字符串
那么就会输出
这是正确格式的EMAIL
否则输出这是错误格式的EMAIL
我们在编写 JSP脚本的时候
一定要注意
要把Java代码放在开始标记和
结束标记之间
即使是这里面的一个向右的花阔号
我们要把它放在开始标记和结束标记之间
把我们希望在页面输出的内容放在
结束标记之后
开始标记和结束标记一定是成对出现的
那么这个是我们刚才看到的输出的结果
下面我们编写一个具体的实例
本节给大家演示一下
我们使用 JSP怎么样去验证EMAIL
那么这里的验证我们主要是为了让大家理解一下
在我们的JSP页面里面怎么去写
Java程序
真正的EMAIL的验证
可能我们更多的会用正则表达式
但是这里我们不采取这种方式
那么我这里写了一个我的EMAIL
当然这个EMAIL也是我构造出来的
并不是我真正的EMAIL地址
那么我要验证的是什么
首先EMAIL当中必须得出现这样
的一个@的符号
那么如果没有这样的@的符号
那么这个EMAIL肯定是不合法的
并且这个@符号只能出现一次
如果你出现了多次
比如说在这里面我还有一个@符号
这也并不是一个合法的EMAIL
其次在 EMAIL当中是不能含
有空格的
像我这样还有空格也是不合法的EMAIL
如果这些情况都不存在
我就认为它是一个合法的EMAIL
那么该怎么去写呢
在这里我就要用if else if else if else
这样的条件判断语句
进行判断了
首先我判断它含不含有@符号
所以我在这里写
If我的EMAIL
它含不含有@符号
我就去找indexOf这个@符号就可以了
如果能找到肯定返回的是它在我这里面的索引
比如说这个@在这
那么它的索引号就是012就是3
应该给我返回3
但是如果找不到它就应该是返回
-1
所以说我这个值要是返回-1的话
那么说明就我的EMAIL地址当中
没有@符号
那么这里注意我这里打左括号
那么我的右括号结束在哪
我需要在底下再来一个这样的尖括号百分号
在这个尖括号百分号当中
我敲一个这样的大括号
这个大括号和这个大括号是对应的
那么当这个成立的时候
我在这块也就是我要在这里面直接写
我的输出文本了
我的文本就是 EMAIL当中
不含有@这个符号对吧
非法
我就简单输出这么一个东西就可以了
那么紧接着这是我第1个判断
第2个判断
我在这里还要接着可以写else if
else if
想判断什么呢
如果还有两个@符号肯定也是不行的
对吧
所以说我就写 EMAIL
首先
我先找index of
找 @符号的索引
如果索引号我index of它数
是从前往后数数到这应该是第3个位置
对吧
那么我还有一个方法
我先写在这
中间
我还没加东西 Email.
叫做lastIndexOf
我是从后往前数
那么如果只含有一个@符号的话
我不管从前往后数还是从后往前数
总归数出来的应该都是它出现第3号位置
如果我这里还有一个@的符号
那么很显然从前往后数
我能数出一个索引号在这
那么从后往前数
它在这块这俩数值肯定是不相等的对吧
所以说正常情况下这俩数值应该是相等的
那么我这里应该怎么判断
应该是如果它俩数值不相等
说明我存在两个@符号
那么也是不合法的
那么注意不合法的情况下
我这里是大括号
那么扣回来同样还是我需要在这有
一个尖括号
百分号
百分号尖括号
在这里面扩回来
然后在中间写 EMAIL
含有两个这个@符号
非法
那么最后在这里我还要接接着去判断
是不是含有空格
else if
我的email.
Index of
空格
如果这个空格它不等于-1
就说明它是含有的
也是非法的
对吧
所以说如果它不等于-1
那么左括号不要忘记
尖括号百分号在这里面
给它括回来
然后 EMAIL中含有空格
非法
那么如果这几种情况都没出现
是不是认为我的EMAIL是一个
合法的email啊
所以说我来一个else
同样在这尖括号百分号
百分号尖括号
扩回来
这俩对应上
在这中间我们就写上 EMAIL
合法
好
这时候我们去验证一下
很显然这会应该输出的是EMAIL
合法
我在我这样的一个EMAIL的情况下
我们输出我们去验证一下
validateEmall.jsp
Email合法
如果比如说我把 Emall
删去
它没有这个@符号
大家可以看到它就会显示EMAIL
中不含有@符号非法
那么如果我这里面有两个@符号
比如说在这里面还有一个@符号
它就会显示 EMAIL中包@符号
非法
对吧
好
那么如果我这里EMAIL里还有空格
敲空格
它就会显示EMAIL中包含空格
非法
好
这就是我们用这样的一个Java在
JSP页面当中写的这么一个
Java程序
来验证我们的EMAIL是否合法
JSP表达式是用来输出内容的这样
一种 JSP当中的方法
它的语法也是比较简单的
是在刚才开始标记
之后紧跟一个英文的等号
然后后边是结束标记
中间是我们想要输出的表达式
我们看一个示例
那么这个示例我们看到这是开始标记
紧跟是英文的等号
结束标记
中间要输出当前的时间
本节给大家去演示一下
我们非常熟悉的99乘法表
利用我们的JSP程序
该如何给它进行输出
那么这个是我们最终想输出的一个
效果
那么我们分析一下
应该怎么去完成这样的一个效果
首先大家看
我们相乘的时候
这是1
斜着看
这是2
3
也就是说我们从1×1然后最后到
这块x2×3
x4×5
×6
×7
×8
x9
那么我可以定一个变量叫做I I是
分别从1一直到2
一直到我们数字9的
那么这里还有一个变量
我们可以称之为j那么当I等于1的时候
只要j小于等于I就可以了
那么当I=1的时候
很显然这就是j小于等于I那么j
只能取1×1
那么当I等于2的时候
因为j小于等于I j只能取1
和2
分别去乘以 I所以I=2的时候
j分别取1和2
然后分别乘上 I这个2值
就可以了
那么I等于3的时候
这就分别可以取1
2
和3分别和 I相乘就可以了
同理
i取4的时候
j分别取1
2
3
还有4
分别和 I相乘
以此类推就可以了
所以说这里我们就很清楚了
首先我们去循环I从1~9
然后我们再套一层内循环就循环j
的取值范围就是j 要小于
等于I然后我们去做一个j和I的
相乘
把这个结果写出来就可以了
好
有了这么一个思路
我们就回到我们的程序里去写
代码
我们新建一个叫做
multiplication
JSP那么我们需要写程序的话
打到尖括号
百分号里面
我们按照我们刚才说的
我们要建立一个I那么 I是从1
开始取值
I的取值范围是到9
你可以写成小于等于9
你也可以给写成小于10
都是一样的
然后I++然后大家不要忘记
我每次输出完以后
这块是要有一个空格的
那么我先为了大家好理解我这个空格
我先不输出
我就都给它输出到一起
虽然说看着不舒服
但是这样写起来大家可能好理解一点
我需要在这里套一个程序
那么叫做 int
j=1 开始对吧
然后j是小于等于I的
然后j++
然后我们需要往页面上输出什么呢
我们要输出的东西
正常我们用out.print就
可以了
对吧
可以输出
但是这样输出我们说了
我们要把这个程序和我们页面输出
分隔开来
所以说大家看我可以这么去做
我把这块做一个结束
这里做一个结束
然后从这里开始再来一个新的代码
程序
这一部分写在一起
那么是一样的
我就可以在这里直接写我的代码了
对吧
我这个代码我用 jsp的这种表达式
等于什么
是不是大家看
应该等于的
就是我的j值乘以我的I值等于多少
这不也是j值乘以 I值
等于多少吗
J值乘以 I值等于多少吗
对吧
所以说我这里就写成我的 j当前
这个j是多少
然后连接上一个什么
连接上一个乘号
乘上我当前的 I值
对吧
然后连接上一个等号
再连接上它
成完以后真正的值
那么就是j乘以
i这个值就可以了
但是这样的输出这个格式可能会有些
问题
我们先看一眼
我们这个叫做multiplication
multiplication
我们 JSP页面叫做
multiplication.
Jsp
敲回车
那么大家会发现我东西啊全都写在一
行上了
对吧
不像我这样之前那样的
它会按照我们到几给分开
那么该怎么办呢
大家去想
我每循环一次
一旦结束以后
我是不是应该给它加一个换行
这个我就让你加一换哈
当然我这里用的可能不是br我可以
用一个p标签
表示它也在一行上
对吧
所以说我这个代码
我可以这样去改进一下
我把这个for循环大家注意看
我给它拿出来
拿出来我在这里面又加了一个
这样 Java程序代码段
我搁到这里面
为什么
因为这个循环每次每循环完了以后
我要在它前后加一个 p标签
所以说我在这里加一个p标签
那么它的循环结束在哪呢
注意它的循环结束在这
所以大家看哈
我在这里面再加一个程序代码段
我把它的循环结束
搁到这个代码段里
为啥
因为整个这一段结束了
循环完了以后
我要给它加一个p标签
就是这个样子
所以说我们再来看我们的程序运行
结果
那么大家看这样的程序研究我就
没有问题了
因为一旦我们的内层循环1~2循环
完了就要加一个p标签
1
2
3循环完了加一个p标签
这样的话就能保证它每次循环外一个
内循环它都出现一个新行
好
这就是我们一个99乘法表的一个
演示
JSP声明
我们可以在JSP当中声明变量和
方法
那么这些变量和方法会在JSP页面
初始化的时候进行初始化
那么声明的语法也是比较简单的
是在开始标记之后
紧跟写一个英文的叹号
中间是JSP的声明
结束
是
结束标签结束标记
那么JSP声明的方法和变量会作为
这个类的数据成员和它的实例方法而
存在
我们看一个示例
在这个示例当中
我们声明了一个i变量
声明了一个fn的方法
fn这个方法返回的类型是
String类型
我们刚才已经提到 JSP文件可以
在执行过程当中
翻译成为 Java文件
我们打开它对应的Java文件
会看到这样一些代码
首先我们注意到这是对应的这个类
然后在这里类里边会看到我们刚才
声明的I变量
声明的 fn的方法
从这儿我们可以进一步表明 JSP
当中声明的变量和方法都是作为类的
成员而存在的
下面我们看一个示例
在这个示例当中
我们声明了一个 count变量
然后我们又生成了一个
counter的方法
在counter的方法当中
count变量进行++下面的代码
首先是创建了一个 date的变量
用于显示当前的时间
接下来调用了 counter方法
实现count的计数
最后把计数的次数以及当前的时间
显示出来
那么在这个代码编写过程当中
我们要知道
对于上面的这部分代码
对于不同的访问者它是共享的
因为这里面的变量和方法是属于类的
方法
而对于下面这个date对于不同的访问者
这个date是不一样的
所以会呈现这样一种结果
当前说您是第4个访问本站的用户
访问的时间是什么
我们刚才的学习已经知道
在JSP脚本当中有变量
然后JSP还可以声明变量
那么它们之间有什么不同
我们做一个简单的比较
从语法上面来说
它们语法形式是不一样的
对于JSP声明的变量
它需要在开始标记之后紧跟一个英文
的叹号
从类型上来说
JSP脚本当中的变量
它是属于 JSP service
方法当中的临时变量
是在这个方法内
可见
而对于JSP声明的变量
它是属于类的数据成员
它在整个类内都是可见的
接下来我们介绍一下JSP的注释
它的注释的语法格式
是这样的
在开始标记之后
紧跟两个英文的短线结束标记之前
有两个英文的短线
中间是我们需要注释的部分
服务器在编译JSP文件的时候会
忽略
开始标记和结束标记之间的注释的部分
也就是说这部分是在客户端不可见的
下面我们看一个示例
在这个示例当中
我们首先用html进行了一个注释
代码的编写
然后我们对这部分代码进行了注释
接下来是一个form表单
在放表单之前我们增加了这样一行注释
form begin
在form表单之后又增加了这样一行注释
form end
那么我们看一下
当这个页面处理完以后
返回给客户端以后
形成的html代码是什么样的
这里面我们会发现
html代码的注释会显示出来
而对于JSP的注释不会在客户端
显示出来
好
这一小节我们就讲到这里
-1.0 导学
--1.0.1 导学
-1.1 Web应用开发概述
--1.1.3 测试
-1.2 准备Java Web应用开发环境
--1.2.2 测试
-1.3 任务实现:Hello World Web项目
--1.3.2 测试
-1.4 小结
--1.4.1 小结
-本课程所有代码
--课程参考代码
-2.0 导学
--2.0.1 导学
-2.1 Servlet概述
--2.1.3 测试
-2.2 创建Servlet
--2,2,3 作业
-2.3 Servlet应用
--2.3.4 测试
-2.4 任务实现:某高校毕业生信息发布系统-注册与登录(Servlet版)
--2.4.3 测试
-2.5 ServletConfig接口
-2.6 ServletContext接口
-2.7 HttpServletRequest接口
--2.7.5 测验
-2.8 HttpServletResponse接口
--2.8.3 测试
-2.9 任务实现:某高校毕业生信息发布系统-简历添加
--2.9.1 任务实现:某高校毕业生信息发布系统-简历添加
-2.10 小结
-动画演示:Java Web应用服务器处理客户端请求的过程
-3.0 导学
--3.0.1 导学
-3.1 Cookie技术
--3.1.3 测试
-3.2 Session技术
--3.2.2 Session技术-Session技术应用购物车
--3.2.3 测试
-3.3 URL重写与隐藏表单域
--3.3.2 测试
-3.4 任务实现:某高校毕业生信息发布系统-简历修改
--3.4.1 任务实现:某高校毕业生信息发布系统-简历修改
-3.5 小结
--3.5.1 小结
-4.0 导学
-4.1 jsp概述
--4.1.2 测试
-4.2 脚本元素
--4.2.2 测试
-4.3 指令元素
--4.3.2 测试
-4.4 动作元素
--4.4.3 测试
-4.5 内置对象
--4.5.3 测试
-4.6 JavaBean
--4.6.3 测试
-4.7 任务实现:某高校毕业生信息发布系统-首页(JSP版)
--4.7.1 任务实现:某高校毕业生信息发布系统-首页(JSP版)
-4.8 小结
--4.8.1 小结
-5.0 导学
--5.0.2 测试
-5.1 el语法
--5.1.2 测试
-5.2 el隐含对象
--5.2.2 测试
-5.3 任务实现:某高校毕业生信息发布系统-学生详细信息展示
--5.3.1 任务实现:某高校毕业生信息发布系统-学生详细信息展示
--5.3.2 测试
-5.4 小结
--5.4.1 小结
-6.0 导学
--6.0.2 测试
-6.1 核心标签库
--6.1.5 测试
-6.2 任务实现:某高校毕业生信息发布系统-首页(JSTL版)
--6.2.1 任务实现:某高校毕业生信息发布系统-首页(JSTL版)
--6.2.2 测试
-6.3 小结
--6.3.1 小结
-7.0 导学
--7.0_导学
-7.1 过滤器
--7.1.3 测试
-7.2 监听器
--7.2.1.1与ServletContext相关的监听器
--7.2.4 测试
-7.3 任务实现:某高校毕业生信息发布系统-单态登录
--7.3.1 任务实现:某高校毕业生信息发布系统-单态登录
--7.3.2 测试
-7.4 小结
--7.4.1小结
-8.0 导学
--8.0_导学
-8.1 JDBC API
--8.1.2 测试
-8.2 JDBC API访问MySQL基本步骤
--8.2.2 测试
-8.3 任务实现:某高校毕业生信息发布系统-注册与登录
--8.3.1 任务实现:某高校毕业生信息发布系统-注册与登录(JDBC版)
--8.3.2 测试
-8.4 小结
--8.4.1小结
-9.0导学
--9.0导学
-9.1 技术准备
--9.1.5 测试.
-9.2 系统设计
-9.3 系统实现
-9.4 小结
--9.4.1小结







