jQuery
- 为了简化JS开发的第三方库 (jQuery,Vue,AngularJS,React)
- jQuery的核心是选择器,用于获取页面元素
选择器
基本选择器
语法 | 说明 |
---|---|
$("#id") |
ID选择器,指定ID元素的对象 |
$("标签") |
元素选择器,选择指定标签名的选择器 |
$(".class") |
类选择器,选中拥有指定css类的元素 |
$("S1, S2, S3") |
组合选择器,对元素进行组合 |
层叠选择器
- 根据元素的位置关系来获取元素的选择器表达式
语法 | 说明 |
---|---|
$("ancestor descendant") |
后代选择器,选择父节点的所有后代子节点(包括后代的后代的后代。。。) |
$("ancestor>descendant") |
子选择器,只选择父节点的直接子节点 |
$("prev~siblings") |
兄弟选择器,只会选择同级别的,在当前元素之后的兄弟元素 |
属性选择器
- 属性选择器是根据元素的属性值来选择元素的选择器表达式
语法 | 说明 |
---|---|
$("selector[attribute=value]") |
选中属性值等于具体值得组件 |
$("selector[attribute^=value]") |
选中属性值以某值开头得组件 |
$("selector[attribute$=value]") |
选中属性值以某值结尾得组件 |
$("selector[attribute*=value]") |
选中属性值包含某值得组件 |
位置选择器
语法 | 说明 |
---|---|
$("selector:first") |
获取第一个元素 |
$("selector:last") |
获取最后一个元素 |
$("selector:even") |
获取偶数位置的元素(从0开始) |
$("selector:odd") |
获取奇数位置的元素(从0开始) |
$("selector:eq(n)") |
获取指定位置的元素(从0开始) |
表单选择器
- 获取表单元素的简化形式
语法 | 说明 |
---|---|
$("selector:input") |
所有输入元素 |
$("selector:text") |
获取文本框 |
$("selector:password") |
获取密码框 |
$("selector:submit") |
获取调教按钮 |
$("selector:reset") |
获取重置按钮 |
操作元素
操作元素属性
- .attr()
- .removeAttr()
操作元素CSS样式
- css() - 获取或者设置匹配元素的样式属性
- addclass() - 为每个匹配的元素添加指定的类名
- removeClass() - 从所有匹配的元素中删除全部或者指定的类
设置元素内容
- val() - 获取或设置输入项的值
- text() - 获取或设置元素的纯文本
- html() - 获取或设置元素内部的HTML
jQuery事件处理方法
on("click", function)
- 为选中的页面元素绑定单机事件- click(function) - 是绑定事件的简写形式
- 处理方法中提供了event参数包含了事件的相关信息
1 | $("p.myClass").on("click", function() { |
Ajax
- 创建XMLHttpRequest对象
- 向服务器发送请求
- 服务器返回Response到JavaScript
jQuery对Ajax的支持
- jQuery对Ajax进行了封装,提供了
$.ajax()
方法
| 常用设置项 | 说明 |
| url | 发送请求地址 |
| type | 请求类型 get、post |
| data | 向服务器传递的参数 |
| dataType | 服务器响应的数据类型(text,json,xml,html,jsonp,script)|
| success | 接受响应时的处理函数 |
| error | 请求失败时的处理函数 |
过滤器
- J2EE Servlet模块下的组件
- Filter的作用是对URL进行统一的拦截处理
- Filter通常用于应用程序层面进行全局处理
过滤器开发三要素
- 任何过滤器都要实现
javax.servlet.Filter
接口 - 在filter接口的
doFilter()
方法中编写过滤器的功能代码 - 在
web.xml
中对过滤器进行配置,说明拦截URL的范围,那些请求会被拦截,那些请求不会被拦截
过滤器的生命周期
- 初始化,Tomcat启动时 - Filter.init()
- 提供服务 - Filter.doFilter()
- 销毁 - 应用关闭或重启时 - Filter.destroy()
过滤器的特性
- 过滤器对象在Web应用启动时被创建且全局唯一
- 唯一的过滤器对象在并发环境中采用“单例多线程”提供服务
- 过滤器会为每一个请求创建一个单独的线程
过滤器的配置形式
- 所有的信息存放在web.xml中
1 | <filter> |
过滤器的注解形式
1 | @WebFilter(filterName = "MyAnnoationFilter", urlPatterns="/*") |
配置与注解如何选择
- 配置形式维护性更好,适合应用全局过滤
- 注解形式开发体验更好,适用于小型项目敏捷开发
- 注解形式每次过滤器的改变都需要重新编译、
过滤器参数化
- 过滤器为了增强灵活性,允许配置信息放在web.xml
- 在web.xml中配置
<init-param>
设置过滤器参数
1 | <init-param> |
- 在Filter类中的init方法取得配置信息中的参数
1 | private String encoding = filterConfig.getInitParameter("encoding"); |
过滤链
- 每一个过滤器应具有单独的功能
- 过滤器执行顺序以
<filter-mapping>
为准 - 调用chain.doFiler()将请求向后传递·
监听器 - Listener
- 对Web应用对象的行为进行监控
- Listener是J2EE Servlet模块下的组件
- Listener的作用是对web应用对象的行为进行监控
- 通过监听自动触发指定的功能代码
监听对象
- ServletContext - 对全局context及其属性监听
- HttpSession - 对用户会话及其属性监听
- ServletRequest - 对请求及其属性监听
监听器和过滤器的区别
- 过滤器的职责是对URL进行过滤拦截,是主动的进行
- 监听器的职责是对web对象进行监听,是被动触发
开发监听器三要素
- 实现Listener接口,不同接口对应不同的监听对象
- 实现每个接口中独有的方法,实现触发监听后续操作
- 在web.xml中配置
<listener>
使监听器生效
六种常用监听接口
- ServletContextListener
- HttpSessionListener
- ServletRequestListener
属性监听接口
- ServletContextAttributeListener - 监听全局属性操作
- HttpSessionAttributeListener - 监听用户会话属性操作
- ServletRequestAttributeListener - 监听请求属性操作
模板引擎
什么是模板引擎
- 数据 + 模板 = 结果
- 将数据与展现有效的解耦
Freemarker
- 脚本为Freemarker template language
- 提供了大量内建函数来简化开发
FTL取值
- ${attribute} - 取值,可对属性进行计算
- ${attribute!default} - 使用默认值
- ${attribute?string} 格式化输出
分支判断
- if else
1 | <#if computer.state == 1> |
- switch
1 | <#switch computer.state> |
- check if value is null
1 | <#if computer.user??> |
list迭代列表
1 | <#list students as stu> |
list迭代Map
1 | <#list map?keys as key> |
内建函数
- lower_case/upper_case
- cap_first
- index_of
- length
- round/floor/ceiling
- size
- first/last
- sort_by
MVC模式
Model
- 负责生产业务需要的数据
Controller
- 接受来自web的请求
- 调用service进行处理
- 将数据放入request
- 跳转界面
View
- 用于展示最终结果
- 通常使用模板引擎展示
MVC优点
- 软件团队分工合作,成员各司其职
- 分层开发,显示与数据解耦,便于维护
- 组件可灵活替代,互不影响