-
Java Web是用Java技术来解决相关web互联网领域的技术总称。
-
需要在特定的web服务器上运行,分为web服务器和web客户端两部分。
-
跨平台,能够在多个不同平台下布署与运行。
需要会哪些技术?
- 基于页面的前端技术,如HTML,CSS,JavaScript等
- 动态语言技术,如Java,JSP等
- 数据库的技术,如Oracle,MySQL,SqlServer等
- 其他工具与组件,如服务器,SSM,SSH框架等
JSP简介
-
JSP全名为Java Server Pages,中文名叫Java服务器页面,其根本是一个简化的Servlet设计
-
JSP是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP 文件,后缀名为(*.jsp)
-
一个jsp文件中通常包含了HTML代码,CSS样式,JavaScript脚本,Java代码片段
-
JSP允许扩展JSP标签
-
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行
XML
XML文档规则
-
XML整体结构
- 有且只有一个根元素
- 元素必须合理结束
- 元素之间必须合理嵌套
- 元素的属性必须有值
-
XML元素的基本规则
-
合法标签名
- XML元素由开始标签和结束标签组成,结束标签比开始标签多一条斜线
- XML文档区分大小写。因此,开始标签和结束标签名必须绝对相同,大小写也要完全一致
- XML文档对于标签名有如下要求:
- 标签名可以字母、数字、下划线、中划线、冒号和点号组成,但不能以数字、中划线和点号开头;标签名不能包括<、>、,、$等符号;标签名中尽量不要出现英文冒号,除非是在使用名字空间;标签名不能以字符“xml”(或者XML、Xml等任意大小写组合开始);标签名不能包含空格
-
嵌套子元素
- XML允许无限深度嵌套子元素,只要保证元素之间合理嵌套即可
- XML元素可以嵌套多个重名的子元素,这多个元素之间是有序的
-
空元素
- XML允许使用空元素语法,空元素不可接受子元素,也不可接受字符串内容
- 空元素和内容为空的元素并不相同
- 空元素只是不能包含子元素,也不能包含字符串内容,但完全可以接受属性
-
-
字符数据
开始标签和结束标签之间的文本可以是任何Unicode字符,并且其间的任何字符都将忠实地传递给XML处理程序
-
使用实体引用
- 为了正确处理XML文档中的特殊字符,XML允许使用实体来表示这些特殊字符。
-
使用CDATA标记
-
在特殊标记CDATA下,所有的特殊字符,甚至是有效的元素都将被当成简单字符处理,实体引用也会失去作用,变成纯文本
-
语法:
-
注释
XML文档还可以加入解释用的字符数据,这些解释用的字符串不会被XML解析器处理。这些解释用的文本称为注释
语法:
-
XML注释需要注意的地方:
1、不要把注释放在标签之内,否则,该文档将不是一个格式良好的XML文档
2、不要把注释放在XML声明之前,XML声明应该永远处于XML文档的第一行
3、不要在注释中使用双中划线--
-
-
-
W3C对于属性的使用建议
- 属性通常提供属于数据组成部分的信息,如果属性值里包含的信息属于该实体本身,则应该使用子元素来指定该信息,因此,W3C推荐尽量使用子元素,而避免使用属性
-
换行处理
目前主流的操作系统,主要有3种换行符:
- 1、Windows平台:回车符和换行符的组合存储换行
- 2、UNIX和Linux平台:以换行符存储换行
- 3、Macintosh平台:以回车符存储换行
XML统一换行符(LF)存储换行
-
XML文档分类
- 格式不良好的XML文档
- 完全没有遵守XML文档基本规则的XML文档
- 格式良好但无效的XML文档
- 遵守了XML文档基本规则,但没有使用DTD或Schema定义语句约束的XML文档
- 使用DTD或Schema定义了语句约束,但没有遵守DTD或Schema所定义的语义约束的XML文档
- 有效的XML文档
- 遵守了XML文档基本规则,并使用DTD或Schema定义了语句约束,而且也完全遵守了DTD或Schema所定义的语句约束的XML文档
- 格式不良好的XML文档
XML命名空间
-
为什么使用命名空间?
- 在同一份XML文档中可能出现多个同名的元素和属性
-
使用命名空间
-
语法:
-
命名空间的特征:
1、名字很长(命名空间往往是一个绝对的URL地址)
2、名字里往往包含英文冒号、斜线等特殊字符
-
-
属性使用命名空间
- 通常情况下,由于属性是属于某个元素的,因此很自然地认为属性总是属于它所在元素所处的命名空间,一般无须专门为属性指定命名空间
XPath语言
-
XPath概念
- XPath语言是一门专门用于在XML文档中查找信息的语言,其他XML程序可利用XPath在XML文档中对元素和属性进行导航
- 问:为什么要查找标签和属性呢?
- 因为XML文档是用来存储数据的,需要将数据提取出来使用,所以通过查找标签和属性进一步获取数据
-
XPath节点
-
XPath基本概念
1、基本值(或称原子值)
基本值专门用于表示简单的数据值,例如整数值、字符串等。我们可以把基本值当成没有父节点且没有子节点的节点
2、项
项是XPath2.0提出的一个术语,一个项代表一个节点或基本值
3、节点集和序列
在某些情况下,XPath表达式可以表示多个节点,多个节点组合在一起在XPath1.0里称为节点集 XPath2.0提出一个序列 的概念,XPath2.0的序列可以代表一个普通的项,也可以代表节点集
-
节点关系
1、父节点
2、子节点
3、兄弟节点
4、祖先节点
5、后代节点
-
相对路径和绝对路径
- XPath同样支持相对路径和绝对路径。对于XPath而言,绝对路径以斜线(/)开头,而相对路径则不会以斜线(/)开头
- 例如:/list/book/name:该路径总是匹配list元素内的book元素之内的name子元素 list/book/name:该路径到底匹配哪个或哪些节点是不确定的
-
XPath基础语法
- XPath使用路径表达式来定位XML文档中的节点或节点集,每个XPath表达式总由多个步(step)组成,多个步之间用斜线分隔
例如:/list/book/name
- XPath中步的完整语法格式如下:
轴::节点测试[限定谓语]
-
轴:XPath的步使用轴来定义所选节点与当前节点之间的结构关系
-
节点测试:节点测试用于从指定轴所匹配的节点集中选出特定的节点
-
限定谓语
限定谓语是一个boolean表达式,或者可以转换为boolean值的表达式,用于进一步提炼所选的节点集。限定谓语应该放在括号中
-
XPath运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- 组合多个路径的运算符
- XPath还提供了一个“|"运算符,可用于组合多个路径表达式,通过"|"运算符,可以一次选取若干个路径
- 例如:book[position()=1] | name[position()=last()]
DOM、SAX和JAXP解析
-
XML文档解析方式
- DOM:Document Object Model:即文档对象模型,它是由W3C推荐的处理XML文档的规范
- SAX:Simple API for XML,它并不是W3C推荐的标准,但却是整个XML行业的事实规范 -XML文档解析原理
-
JAXP概述 1、Java解析XML文档的API称为JAXP,它的全称是Java API for XML
2、JAXP往往作为JDK的一部分发布,但它仅仅是一些API接口,并为提供真正的实现,因此实际使用过程中还需要具体的解析实现
3、JAXP只是允许应用程序在不同的XML解析器之间切换
-
JAXP的作用
- JAXP提供的与解析相关的类
-
JAXP的SAX支持
-
SAX的处理机制:SAX采用事件机制的方式来解析XML文档,这是一种快速读写XML数据的方式
-
SAX解析XML文档的流程:使用SAX机制解析XML文档时,SAX解析器负责在XML文档中”行走“,每当遇到文档开始、元素开始、文本、元素结束和文档结束时,都将负责向外发送事件,而程序员则负责提供事件监听器来监听这些事件,并通过事件获取XML文档信息
-
SAX解析事件
- JAXP提供了一个DefaultHandler类,这个类实现了4个监听器接口,并为监听器接口中所包含的方法提供了空实现
-
SAX解析XML文档
需求:解析出first.xml的内容
实现思路:
1、在工程中引入Xerces-J具体解析器实现类jar包
2、自定义事件监听器继承自DefaultHandler
3、通过SAXParseFactory的newInstance()方法创建SAX解析器工厂对象
4、通过SAXParseFactory对象的newSAXParser()方法创建SAXPasrer对象
5、调用SAXParser对象的parse()方法解析XML文档
-
SAX生成XML文档
实现思路:
1、创建保存xml的结果流对象
2、获取sax生成工厂对象实例
3、获取sax生成处理者对象实例
4、获取sax生成器
5、生成文档及文档中的元素
-
Servlet
Servlet简介
- Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容
Servlet的生命周期
- 初始化阶段调用init()方法
- 响应客户端请求阶段调用service()方法
- 终止阶段调用destroy()方法
请求与响应
- 浏览器对服务器的一次访问称之为一次请求,请求用HttpServletRequest对象来表示
- 服务器给浏览器的一次反馈称之为一次响应,响应用HttpServletResponse对象来表示
ServletContext与SercletConfig
- java是一门面向对象的语言,万事万物皆对象。整个JavaWeb工程也可以用一个对象来表示,这个对象就是ServletContext类型。
- 我们可以在web.xml文件中给某一个Servlet配置一些配置信息,当服务器被启动的时候,这些配置信息就会被封装到某一个ServletConfig对象中去。因此ServletConfig表示的是某一个Servlet的配置文件
转发与重定向
- 实现转发调用的是HttpServletRequest对象中的方法,实现重定向调用的是HttpServletResponse对象中的方法
- 转发时浏览器中的url地址栏不会发生改变,重定向时浏览器中的url地址会发生改变
- 转发时浏览器只请求一次服务器,重定向时浏览器请求两次服务器
EL表达式
- EL表达式介绍及作用:Expression Language(表达式语言),目的是替换JSP页面中的复杂代码
- EL表达式语法:${变量名}
JSTL
JSTL介绍
- JSP标准标签库(JavaServerPages Standard Tag Library)
- 与EL表达式关系:JSTL通常会与EL表达式合作实现JSP页面的编码
- JSTL开发准备:在JSP页面添加taglib指令<%@ taglib uri="java.sun.com/jsp/jstl/co…" prefix="c"%>
为什么要使用JSTL标签
- 在jsp中不建议直接书写java代码(规范性问题)
- EL表达式虽然可以解决“不用书写java代码”问题,但是对于复杂的数据(如数组、集合等)取值会很麻烦
- 使用JSTL标签配合EL表达式能够很好的解决取复杂类型数据的问题,简化代码书写,可以减少JSP中嵌入的Java代码,有利于程序的维护和扩展
JSTL常用标签介绍
-
通用标签
-
set、out、remove
-
set标签:将值保存到指定范围里 将value值存储到范围为scope的变量variable中 <c:set var="username" value="张三" scope=" scope "/>
-
out标签:将结果输出显示 <c:out value="value" />
-
remove标签:删除指定域内数据 <c:remove var="username" scope="session"/>
-
-
-
条件标签:if、choose
-
迭代标签:forEach
Ajax
Ajax简介
- Ajax是一种用于创建快速动态网页的技术,能够实现动态刷新,提高用户的体验度,降低后台服务端程序的压力
Ajax特点
- 通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新
- 传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面
使用Ajax好处
- 更新时只需要刷新局部,用户体验度好
- 由于只需要刷新局部的数据,对后台服务器的压力较小
Ajax语法总结及注意事项
- url:请求的地址
- type:请求时数据的传递方式(常用的有get/post)
- data:用来传递的数据(建议使用json来传递)
- success:交互成功后要执行的方法
- dataType:ajax接收后台数据的类型(建议使用json)
- 注意事项:ajax和后台交互时,后台是不能够直接跳转到其他页面的
Ajax的应用场景
- 百度搜索框、地图等
Java正则表达式
正则简介
- 使用特殊的符号来做校验,目标是操作字符串。例如:手机号码、邮箱、身份证的校验等
使用正则表达式的优缺点
- 优点:简化代码书写量
- 缺点:阅读性较差
正则表达式语法规则
- [abc] a、b或c(简单类)
- [a-zA-Z] a到z或A到Z,两头的字母包括在内(范围)
- \d 数字:[0-9]
- X{n} X,恰好n次
- X{n,} X,至少n次
- X{n,m} X,至少n次,但是不超过m次
- \D:非数字
- \s:空白字符(如空格、\t制表位、\n换行等)
- \S:非空白字符(除了空白字符以外的其他都可以)
- \w:单词字符:[a-zA-Z_0-9]
- \W:非单词字符
- 在正则表达式中“^”表示正则的起始标记,“$”表示结束标记(可以不写)
前台校验局限性
-
前台校验优点
- 能够对数据进行初步的筛选,减少后台服务器的压力
- 使用html5校验,比较简单易用
-
前台校验弊端:
- 可以通过一些手段绕过前端的校验
Java过滤器
过滤器的作用
- 实现对web资源请求的拦截,完成特殊的操作,尤其是对请求的预处理
过滤器的应用场景
- web资源权限访问控制
- 请求字符集编码处理
- 内容敏感字符词汇过滤
- 响应信息压缩
过滤器的生命周期
- web应用程序启动时,web服务器创建Filter的实例对象,以及对象的初始化
- 当请求访问与过滤器关联的web资源时,过滤器拦截请求,完成指定功能
- Filter对象创建后会驻留在内存,在web应用移除或服务器停止时才销毁
- 过滤器的创建和销毁由web服务器负责
过滤器的实现步骤
- 编写java类实现Filter接口,并实现其doFilter方法
- 在web.xml文件中对filter类进行注册,并设置所拦截的资源
过滤器链
- 在一个web应用中,多个过滤器组合起来称之为一个过滤器链
- 过滤器的调用顺序取决于过滤器在web.xml文件中的注册顺序
监听器
Java监听器定义
- Servlet规范定义的一种特殊类
- 用于监听ServletContext,HttpSession,ServletRequest等域对象的创建、销毁及其属性修改发生变化的事件
- 监听器可以在事件发生前后进行一些必要的处理操作
常见应用场景
- 统计在线人数
- 页面访问量的统计
- 应用启动时完成信息初始化工作
- 与Spring结合
监听器的实现步骤
- 编写java类实现监听器接口,并实现其接口方法
- 在web.xml文件中对实现的监听器类进行注册
Java监听器分类
-
按监听对象
- ServletContext对象监听器
- HttpSession对象监听器
- ServletRequest对象监听器
-
按监听事件
- 域对象自身的创建和销毁事件监听器
- 域对象中属性的创建、替换和消除事件监听器
- 绑定到session中的某个对象的状态事件监听器