JavaWeb加强之JSON、jQuery、Ajax、Java正则表达式、过滤器、监听器、模板引擎FreeMarker

本文详细介绍了JavaWeb开发中的JSON基础,包括FastJSON的使用,以及jQuery和Ajax的基本概念和操作。讲解了Java正则表达式、过滤器、监听器和FreeMarker模板引擎的应用。通过实例展示了如何实现登录注册功能,探讨了数据传输和页面局部刷新的实现方法。同时,文章提及了JSON与Java交互、jQuery选择器和事件处理,以及Ajax的工作原理和异步请求的重要性。
摘要由CSDN通过智能技术生成

过滤器、监听器,以及JSON、Ajax和正则表达式等开发必备技能,并学习文件上传和验证码等功能开发。

2.4.1 JSON基础

JSON的基础语法,以及流行JSON框架FastJSON的使用。
内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
JSON语法规则:
在这里插入图片描述
JSON数据是以key/value的形式描述,key和value中间使用冒号分隔开;多组key/value值使用逗号分隔开,例如:{ “firstName”:“John” , “lastName”:“Doe” }。
JSON的作用主要就是数据的存储与传输,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。使用这种方式可以更快的进行前后台数据的传输。在存储数据方面逐渐替代了xml的功能。从实际的使用看,他们的用途不一样,xml主要用作配置文件和一些简单数据的存储,从后面的学习中可以看到xml作为配置文件是非常常见的。而json更多得用在数据的请求处理中,如通过请求服务器得到json数据,然后在前端或移动端页面中进行显示。
console.log(json);在浏览器控制台中对json内容进行输出。console是浏览器内置对象,log()方法是向控制台输出日志。
JavaScript对JSON有天然的支持特性。
在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容。内容中的符合html结构的内容可被直接解析为对应的html标签。用于动态补充或展示页面内容。
Ctrl+Shift+F快捷键格式化代码。
JSON与字符串互相转换:
在这里插入图片描述
JSON是浏览器(IE8以下不支持JSON对象)内置对象。
在这里插入图片描述
在javascript的字符串中出现多对””,要使用转义符号\,避免混淆。JSON以[ ]开头表示这是一个json数组的含义,里面含有多个json对象。而只编写{ }则表示的是一个json对象。
JSON对象书写的另一种方式,类似对象。
在这里插入图片描述
每个载入浏览器的 HTML 文档都会成为 Document 对象。Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。document.write()表示向文档写 HTML 表达式 或 JavaScript 代码。除此之外常用的还有document.getElementById(“id值”)返回对拥有指定 id 值的第一个标签对象的引用。
console.log()、console.info()的作用都是在浏览器控制台打印信息的,可理解它们两个其实就是同一个,只不过名字不一样,其中console.info()打印出的信息,在控制显示的时候信息前面会出现一个小图标。
Java是开源的全世界的工程师都在为Java添砖增瓦。
JSON与Java交互:
JSON工具包是用来JAVA与JSON之间序列号与反序列化。
在这里插入图片描述
github全世界最著名的开源软件平台(http://www.github.com)。搜索fastjson下载alibaba开发的,可在github下载也可在https://repo1.maven.org/maven2/com/alibaba/fastjson/。下载。
JavaBean简单笼统的说是一种符合一定规范编写的Java类,不是一种技术,而是一种规范 , 表达实体和信息的规范。大家针对这种规范,总结了很多开发技巧、工具函数。符合这种规范的类,可以被其它的程序员或者框架使用。它的方法命名,构造及行为必须符合特定的约定:1、这个类必须具有一个公共的(public)无参构造函数;2、所有属性私有化(private);
2、私有化的属性必须通过public类型的方法(getter和setter)暴露给其他程序,并且方法的命名也必须遵循一定的命名规范。4、这个类应是可序列化的。(比如可以实现Serializable 接口)。这些特点使它们有更好的封装性和可重用性。并且可以被序列化(持久化),保存在硬盘或者在网络上传输。
Bean译过来是“豆子”的意思,我们是不是只能看到豆子硬硬的外皮,而看不到内部的东西。
通常我们说的API是API文档的简称。API文档就像字典或使用说明书 一样的存在,对某样技术用到的接口、类、方法等具体的解释。就像字典一样,在使用时,可以在API中的方法时能够快速找到,学会使用这个方法。
FastJson序列化与JSON注解:
日历类Calendar:月份是从0开始的,这是java中约定俗成的规定,其余的是从1开始的。
在这里插入图片描述
JSON序列化:格式:JSON.toJSONString(需要序列化的JAVA对象/对象数组/对象集合),将JAVA对象转换成JSON字符串。
在这里插入图片描述
JSON注解:格式:@JSONField(属性=属性值),放在JAVA对象中需要设置序列化JSON字符串格式的属性上面。如图:
在这里插入图片描述
在这里插入图片描述
@JSONField(format=“yyyy-MM-dd HH:mm:ss”)对(下面代码所示时间属性)属性序列化注解,@JSONField(serialize=false)不对(下面代码所示属性)属性进行序列化。
JSON反序列:格式:JSON.parseObject(需要转换成JAVA对象的JSON字符串,需要转换成JAVA对象的类型),将需要转换成JAVA对象的JSON字符串转换成JAVA对象的类型。
在这里插入图片描述
这里指Employee类编译好的字节码文件,表示将json转换为Employee对象。其他类加不加.class看是否将json转换具体对象。
序列化 (Serialization)是指将对象的状态信息转换为可以存储或传输的形式的过程。可以将其保存到磁盘文件中或通过网络发送到任何其他程序;反序列化是相反的过程(将流转换为对象)。而序列化的一种选择,就是使用json来当作临时存储的方式。JSON又称JavaScript 对象表示法(JavaScript Object Notation),但是它本身是和平台与语言无关的,具有自我描述性,易于理解。json是能直接转换为js对象的一种格式,使用它来存储对象,更加方便。
JSON序列化是把对象包装成JSON字符串传输。Json的优点:明文结构一目了然,可以跨语言,属性的增加减少对解析端影响较小。缺点:字节数过多,无法处理对象方法等数据,依赖于不同的第三方类库。
导入项目后需要配置自己的jdk。项目右击,选择Build Path,Configure Build Path。在右侧Libraies中选择JRE System Library,点击Edit,选择Alternate JER,点击下箭头,选择自己的jdk,点击Finish,Apply and Close。
json反序列化话需要对应实体类有无参构造器。
对于FastJson来说如果JAVA对象的某个属性为null,则序列化不输出此属性的JSON字符串。
JSON.parseArray(JSON字符串,转换成的JAVA对象类型),JSON字符串(多个JSON对象的数组)转换成JAVA对象List集合:
在这里插入图片描述

2.4.2 jQuery与Ajax基础

介绍JQuery的常用语法规则及如何使用Ajax进行页面局部刷新。
jQuery与Ajax:
内容:
在这里插入图片描述
JavaScript库:
在这里插入图片描述
jQuery介绍:
在这里插入图片描述
jQuery下载与安装:
在这里插入图片描述

EL 表达式是从域中取出之前存好的属性,是 ${},而jQuery 是$() 并且是获取页面的元素,虽然写法比较类似,但是其实还是没有太大关联的。

jQuery选择器实验室:
在这里插入图片描述
js里addClass()和className 的区别:1、addclass()是JQuery的函数。JavaScript中没有。className 属性可以用来设置或返回元素的 class 属性。2、 addClass() 方法向被选元素添加一个或多个类,该方法不会移除已存在的 class 属性,仅仅添加一个或多个 class 属性–>就是说addClass方法只会向当前被选中的元素添加属性,而不会移除原有属性。className将其赋值为"“可以达到清空元素的class的目的.
选择器的用途:选择需要的元素 $(“a”) ( 选 择 器 表 达 式 ( 字 符 串 形 式 ) ) 。 / / 移 除 指 定 的 c s s 类 , 移 除 所 有 具 有 该 c s s 类 的 处 理 。 (选择器表达式(字符串形式))。//移除指定的css类,移除所有具有该css类的处理。 (())//csscss(”*").removeClass(“highlight”);在css样式表中书写时,ID选择符前面应该加前缀符号‘#’,标签选择器直接写标签名,类选择器应该加前缀符号‘.’。
Web页面开发的两个要素:
在这里插入图片描述
jQuery选择器:
在这里插入图片描述
基本选择器:
在这里插入图片描述
层叠选择器:
在这里插入图片描述
注:兄弟选择器只能选择在该元素后边并且平级的元素。
属性选择器:
在这里插入图片描述
在这里插入图片描述

注:属性选择器只会选择明确写了属性的选择器,eg:对于<input>标签默认type=”text”,当不写type时,属性选择器${“input[type=’text’]”不会选择这个<input>

位置选择器:
在这里插入图片描述
表单选择器:
在这里插入图片描述

表单选择器的”:”后边是表单包含的元素的type属性值。注:对于<input>标签默认type=”text”,当不写type时,表单选择器”:text”会选择这个<input>,刚好补充了属性选择器${“input[type=’text’]”不会选择这个<input>。$("selector:input")----------所有输入框。
$("form:text")是选择form表单中的type=’text’元素,而$("selector:text")(写法$(“:text”))是选择页面中所有type=’text’元素;如果是获取写在form表单中的type=’text’就可以使用$("form:input")。
浏览器输入URL中http:// 这个加与不加没区别的,浏览器解析时会默认用这个协议的。

操作元素属性:
在这里插入图片描述
在这里插入图片描述
attr()方法中参数只有一个时,是获取这个参数对应的属性值,参数是两个时是设置第一个参数对应的属性的值为第二个参数。
注:获取元素属性时,当拥有此属性的元素为多个时,获取的是第一个元素的属性。
在input的标签中,对于不同的输入类型,value 属性的用法也不同:当type=“button”, “reset”,“submit” -时,value只是为了定义按钮上的显示的文本,所以这里value值并不会清空。
操作元素的CSS样式:
在这里插入图片描述
在这里插入图片描述
操作元素的css样式中css()方法中参数只有一个时,是获取这个参数对应的样式属性值,参数是两个时是设置第一个参数对应的样式属性的值为第二个参数。当需要设置多个样式属性可用JSON对象表示法。
注:获取元素样式属性时,当拥有此样式属性的元素为多个时,获取的是第一个元素的样式属性。
在这里插入图片描述
操作元素的css样式中addClass()方法为选择器选中的元素添加多个指定类名需添加空格。
设置元素内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
val()----获取或设置输入项的值,设置参数,表示更改匹配元素的值;不设置参数,表示获取匹配元素的值。text()—获取或设置元素的纯文本,设置参数,表示更改匹配元素的值;不设置参数,表示获取匹配元素的值。如果文本内容出现标签,不进行转义,输出标签。html()—获取或设置元素内部的html,设置参数,表示更改匹配元素的值;不设置参数,表示获取匹配元素的值。如果文本内容出现标签,进行转义,浏览器会解析标签。
当文本内容不含标签建议使用text()方法,text()和html()方法最大的区别是对于文本中的html标签是否进行转义。
b标签是加粗文本。
( " s p a n . m y c l a s s " ) − − > 这 个 是 一 个 组 合 的 选 择 器 , 表 示 选 择 c l a s s 为 m y c l a s s 的 s p a n 标 签 。 j Q u e r y 事 件 处 理 方 法 : ! [ 在 这 里 插 入 图 片 描 述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 20201129002056578. p n g ) j Q u e r y 常 用 事 件 : ! [ 在 这 里 插 入 图 片 描 述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 202011290021036. p n g ? x − o s s − p r o c e s s = i m a g e / w a t e r m a r k , t y p e Z m F u Z 3 p o Z W 5 n a G V p d G k , s h a d o w 1 0 , t e x t a H R 0 c H M 6 L y 9 i b G 9 n L m N z Z G 4 u b m V 0 L 3 F x X z M 4 M z I 2 M T A 3 , s i z e 1 6 , c o l o r F F F F F F , t 7 0 ) l o a d ( ) 方 法 是 从 服 务 器 加 载 数 据 , 并 把 返 回 的 数 据 放 入 被 选 元 素 中 , 需 要 传 入 u r l 等 参 数 。 当 页 面 初 始 化 后 , 执 行 ("span.myclass")--> 这个是一个组合的选择器,表示选择class为myclass的span标签。 jQuery事件处理方法: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201129002056578.png) jQuery常用事件: ![在这里插入图片描述](https://img-blog.csdnimg.cn/202011290021036.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzI2MTA3,size_16,color_FFFFFF,t_70) load()方法是从服务器加载数据,并把返回的数据放入被选元素中,需要传入url等参数。当页面初始化后,执行 ("span.myclass")>classmyclassspanjQuery![](https://imgblog.csdnimg.cn/20201129002056578.png)jQuery![](https://imgblog.csdnimg.cn/202011290021036.png?xossprocess=image/watermark,typeZmFuZ3poZW5naGVpdGk,shadow10,textaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzI2MTA3,size16,colorFFFFFF,t70)load()url(function(){})。使用 ( ) 选 中 元 素 需 要 使 用 引 号 引 起 来 。 ()选中元素需要使用引号引起来。 ()使(function(){
alert(“欢迎来到设置颜色的页面”)😉;
在这里插入图片描述
在这里插入图片描述
( t h i s ) 是 指 当 前 事 件 产 生 的 对 象 。 按 下 空 格 匹 配 元 素 的 样 式 属 性 c o l o r 为 r e d 。 ! [ 在 这 里 插 入 图 片 描 述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 2020112900212268. p n g ) 处 理 方 法 中 的 e v e n t 参 数 不 是 一 个 固 定 参 数 名 , 可 以 写 成 其 他 名 , 但 最 好 见 名 知 意 还 是 e v e n t 好 。 键 盘 按 键 分 字 符 键 , 非 字 符 键 ( 功 能 键 和 特 殊 按 键 ) , k e y p r e s s 是 用 户 摁 下 按 键 , 并 且 产 生 一 个 字 符 时 发 生 , 所 以 退 格 键 就 只 能 触 发 o n k e y d o w n 和 o n k e y u p 事 件 。 A j a x 介 绍 : ! [ 在 这 里 插 入 图 片 描 述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 20201129002130916. p n g ) a j a x 是 前 端 完 成 的 , 可 通 过 a j a x 访 问 后 台 , 然 后 通 过 后 台 返 回 的 数 据 , 展 示 到 前 端 页 面 中 。 A j a x 的 使 用 流 程 : ! [ 在 这 里 插 入 图 片 描 述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 20201129002140773. p n g ) 创 建 X M L H t t p R e q u e s t 对 象 : ! [ 在 这 里 插 入 图 片 描 述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 2020112900214841. p n g ) ! [ 在 这 里 插 入 图 片 描 述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 20201129002150989. p n g ? x − o s s − p r o c e s s = i m a g e / w a t e r m a r k , t y p e Z m F u Z 3 p o Z W 5 n a G V p d G k , s h a d o w 1 0 , t e x t a H R 0 c H M 6 L y 9 i b G 9 n L m N z Z G 4 u b m V 0 L 3 F x X z M 4 M z I 2 M T A 3 , s i z e 1 6 , c o l o r F F F F F F , t 7 0 ) 在 J S 里 , w i n d o

正则表达式(Regular Expression)是用来匹配和操作字符串的一种强大工具。在JavaWeb开发中,正则表达式常用于以下几个方面: 1. 字符串匹配:可以通过正则表达式来判断一个字符串是否符合某种模式。比如,判断一个字符串是否是合法的邮箱地址、手机号码等。 2. 字符串替换:可以使用正则表达式来查找并替换字符串中的某些部分。比如,将一段文本中的所有URL替换为链接。 3. 字符串分割:可以使用正则表达式来按照某个规则将字符串分割为多个部分。比如,按照逗号或空格将一个句子分割成多个单词。 在Java中,可以使用java.util.regex包中的类来进行正则表达式的操作。常用的类有Pattern和Matcher。 下面是一个示例代码,演示了如何使用正则表达式进行字符串匹配: ```java import java.util.regex.*; public class RegexExample { public static void main(String[] args) { String input = "abc123"; String pattern = "[a-z]+\\d+"; Pattern regex = Pattern.compile(pattern); Matcher matcher = regex.matcher(input); if (matcher.matches()) { System.out.println("字符串匹配成功!"); } else { System.out.println("字符串匹配失败!"); } } } ``` 以上代码中,使用正则表达式`[a-z]+\\d+`来匹配由小写字母和数字组成的字符串。如果输入字符串`abc123`满足该正则表达式,则输出"字符串匹配成功!";否则输出"字符串匹配失败!"。 希望以上内容对你有帮助!如果你还有其他问题,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值