JavsScript,jQuery与Ajax(未整理)
JavsScript,jQuery与Ajax
- 引入js:<script src=”….js” type=”text/javascript”>
- 引入css样式:href="….css" type=””>
”> - href :指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的联系
浏览器解析时,建议使用 link (XHTML标签,还可加载其他)方式加载 CSS,因为会并行下载资源并且不会停止对当前文档的加载和处理;而不是使用 @import (CSS范畴,只加载CSS)方式,因为它需要页面完全载入以后再加载
- src :在请求 src 资源时会将其指向的资源下载并应用到文档中,比如 JavaScript 脚本,img 图片
浏览器解析时会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等也如此,所以建议把 js 脚本放在底部而不是头部
| 三基本 | 数值:isNaN(value)判断是否是一个数字 |
| 布尔(true/false) | |
| 字符串(>=0个Unicode字符));===比较字符串; | |
| 两引用 | 对象 |
| 数组 | |
| 两特殊 | Null(无值或无对象) |
| undefined(无对象的属性或声明了变量但未赋值)) |
in:测试对象中是否存在该属性:result=property in Object;
instanceof:对象是否是类的实例:result=object instanceof class;
new:创建对象;
typeof:返回数据的类型的字符串表示,6种可能:number/string/Boolean/object/function/undefined;
void:避免返回值;
消息框:[window.]alert(“…”);confirm()/prompt():提示;提供字符串参数(默认”undefined”),点击“确定”或者“取消”按钮;特殊的console.info/log();//写入控制台和调试JS
==》Array:数组API

==》Date:
构造器有无参;有参数毫秒值;有参数年、月…列表
getDate();getDay();getFullYear();getHours();getMilliseconds();getMinutes();getMonth();getSeconds();getTime()1970以来的毫秒数;parse()解析时间字符串并返回毫秒数
==》json数据解析:
- 前台解析json数据:一般后台传来的是字符串/集合格式数据;dateType:”json”
eval():解析任意数据;不安全
JSON.parse()等API:格式检查,符合才解析;安全
- 后台解析json数据:一般前台传来map,map中保存json格式数据
JSONObject类API:与map/javaBean的转换
JSONArray:与数组的转换
==》文档document-》根元素(html)-》元素element-》文本:
document.getElement[s]ById/TagName(元素标签名如“p”)/Class();
document.write();
element.innerHTML=””;
element.具体属性名如src=””;
element.style.具体样式名如color=””;
document.forms;//获取所有form并返回集合,然后可用下标操作指定form;
element.value;//获取元素的value,可用作表单验证
document.createElement(“元素标签名”)
document.createTextNode();
element.appendTo/appendChild(anotherElement)/insertBefore/after()
element.remove/removeChild(子element);
事件:定义function,然后元素的onclick()引用它
其他事件:
onload()/onunload()页面加载/离开时处理,可处理cookie;
onchange();onmouseover/out();onmouseup/down();onfocus/blur();event.target/srcElement事件源;stopPropagation()阻止冒泡;preventDefault()阻止默认事件/行为
BOM:window
document、Screen屏幕、Location页面地址、History浏览历史、Navigator访问者信息、PopupAlert消息提示框、Timing计时器(计时时间setTimeout/Interval(),clearTimeout/Interval())、Cookies识别用户、尺寸(不同浏览器写法不同)
Jquery:
语法:$/jQuery(selector).action();//选择(器,查找)+操作
1、选择(器):基于元素的 id、类、类型、属性、属性值等"查找"(或选择)HTML 元素。 它基于已经存在的CSS选择器
| 元素选择器 | $(“元素名") | $("p").hide(); |
| #id选择器 | 根据元素的id属性选取指定元素 | 测试 $("#ID").hide(); |
| .class选择器 | 根据元素的class属性选取指定元素 | 测试 $(".Class").hide(); |
| 伪类选择器:与其他选择器配合使用 | $("*"):所有; $(this):当前元素; $("p.Class”):class属性为Class的 元素; $("p:first/last"):第一个/最后一个 元素; odd/even奇数/偶数; :eq/gt/lt()/not(selector)等于/大于/小于/不为; :header/animated/empty; :hidden/visible; :enabled/diabled/selected/checked; | |
| form表单选择器 | 根据元素的type类型选择 | :input(所有)、text、password、radio、checkbox、submit、reset、button、image、file |
| 属性选择器:[XPath]表达式 | 根据属性名或属性限制选择 | $("[href]"):选择所有带有href属性的元素; $("a[href='a.jpg']"):选择href属性值为a.jpg的元素 |
2、操作:
1)触发事件(或者将函数绑定到事件):
bind()/delegate()/unbind()/undelegated()附加事件(处理器)/blur()失去焦点/change()/click()/dbclick()双击/die()移除/error()/focus()/keydown/up/press()/load/onunload()/mouseup/down/enter/leave/move/out/over()/ready()/sesize()/scroll()/select()/submit()/toggle()/trigger()/
2)触发效果(一般在事件如点击之后):
animate()/delay()/fadeIn/Out/To()/show()/slideDown/Toggle/Up()/stop()/toggle()/hide()
DOM文档操作:设置都是(key,value)形式;(一般在事件如点击之后)
get()/index();after()指定元素之后插入内容/append/To()/before()/clone()/detach()删除/empty()/insertBefore/After()/prepend/To()/replaceAll/With()/unwrap()替换父元素/wrap/All/Inner()包裹
text()、html()、val()
attr()/addClass()/hasClass()/remove/Attr/Class()/toggleClass()/;
样式操作:css()/height()/offset()/position()/width()
遍历匹配:向上parant()/parents()/parentsUntil();向下children()/find();同胞siblings()/next()/nextAll()/nextUntil()/prev()/prevAll()/prevUntil();过滤first()/last()eq();自定义filter()/not()匹配/不匹配的;each();has()/is()/map()
JSP,Jstl与EL
JSP本质是servlet;JSP -> 翻译 Servlet/Java -> 编译 -> .class;JSP = HTML(侧重视图展示) + Java;Servlet = Java(侧重实现控制逻辑) + HTML;
动态生成html,xml或其他格式文档的web页面,即html中插入java代码(被JSP标签<% %>包裹);跨平台;侧重视图
| 1)加载 | web容器识别这是对JSP的请求,通过url或.jsp文件把此请求交给JSP引擎 |
| 2)编译 | 解析JSP文件,转为servlet程序;servlet容器编译源文件为字节码类文件 |
| 3)初始化 | 创建实例,调用初始化方法init();(仅一次,可初始化数据路连接,打开文件,创建查询) |
| 4)执行 | 调用服务方法service();参数为HttpServletRequest和HttpServletResponse;每个请求都调用一次,产生对应的response |
| 5)销毁 | 调用销毁方法destroy()销毁实例 |
表达式:<%= …/>;
注释<%--…-->或者
| <%@ page…/> | 依赖属性,如脚本语言,error页面,缓存需求 | buffer缓冲区大小; autoFlush控制out的刷新; contentType;errorPage;isErrorPage;extends;import(注意没有 info页面描述信息; isThreadSafe本页面访问是否线程安全/单线程(而servlet实现单线程需要实现SingleThreadModel接口;不推荐单线程,它会对每次请求都创建实例); language;session是否使用; isELlgnored是否执行EL表达式;isScriptingEnabled |
| <%@ include file=”相对url”…/> | 包含其他文件,然后编译 | |
| <%@ taglib…/> | 引入标签库 |
| 包含静态动态资源;动态加载即不是同时编译 | |
| 加载并初始化JavaBean组件 | |
| 设置/插入JavaBean组件到output;当其位于 | |
| 转发(包含request对象);可带参数 | |
| 使用插件运行 | |
| 动态创建xml元素 | |
| 定义xml元素的属性 | |
| xml主体 | |
| 封装模板数据 | |
它们都具有id(动作的唯一标识)和scope(动作的生命周期:page-request-session-application)属性
| request | HttpServletRequset实例,通过方法获取http头信息,cookie,http方法等 |
| reponse | HttpServletResponse实例,可添加cookie,时间戳,状态码;void setHeader()/setLocal()/setStatus();… |
| session | HttpSession实例,会话跟踪,保存用户状态信息 |
| out | PrintWriter实例,向response中写入内容,输出结果到页面 |
| application | ServletContext实例,应用上下文 |
| config | ServletConfig实例,一些配置信息 |
| pageContext | PageContext实例,存储其他对象的引用;常用方法removeAttribute() |
| page | 类似于this对象,页面本身 |
| exception | Exception实例,JSP发生错误时的异常; 异常处理:使用此对象的方法;或者编写errorPage;或者java的try…catch |
表单处理-读取表单数据:
(默认)get:参数在url?后,&连接,不安全,<=1024字节;
post:数据隐藏提交,无大小限制,安全request.getParameter[Values]()/getParameterNames();getInputSteeam()
JSTL:JSP标签库
<%@ taglib prefix=”c” uri=http://java.sun.com/jsp/jstl/core />
解析和格式化(文本、日期、时间、数字)标签:core换为fmt且更改前缀
……
SQL标签:sql下
XML标签:以及JSP的XML处理
JSTL函数:functions下
自定义标签 EL表达式: ${expr};简化JavaBean的访问;expr通常为算数表达式和逻辑表达式,操作符如同java,如+,-,%,!=,>=,||(or),empty……;特殊的如用.userName或者[“username”]访问Bean属性 隐含对象:pageScope/requestScope/sessionScope/applicationScope:各自的作用域中的对象直接访问,如requestScope.user param/paramValues:request对象的参数,字符串/集合;如String name = request.getParameter(“username”),用EL表达式获取${param[“username”]}或者${param.name} initParam:上下文初始化参数 header/headerValues:http信息头,字符串/集合;同上;request.getHeader() cookie: pageContext:JSP中pageContext对象的引用 实例:获取表单中多选框的值: var checkbox=document.getElementsByName(“checkbox”); for(i if(checkbox[i]).checked) alert(checkbox[i].value);// 或者声明一个数组new Array()来保存值 }//js String[] arr=request.getParameterValues(“checkbox”); <%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8” errorPage=”error.jsp”%> <% page isErrorPage=”true”%>//针对指定网页 <% String[] arr={“…”,”…”,…} %> <% for(int i=0;i <% } %> request.setCharacterEncoding(“UTF-8”); String str = request.getParameter(“表单域的name值”); request.setAttribute(key,value);//key为String类型,value为传递的值如object,“404错误” request.getAttribute(key);//通过key获取 cookie中保存中文: java.net.URLEncoder.encode(name,”UTF-8”);//编码 java.net.URLDecoder.decode(name);//解码 session相关: 保存用户登录信息,页面跳转后从session获取信息;手动销毁session:session.invalidate(); 统计用户在站点的停留时间:继承session的监听器(session与属性的绑定与解除事件)HttpSessionBindingListener的主要方法valueBound()和valueUnbound(),前者在向session中写入实现类对象时自动触发,后者在从session中移除对象时触发;session销毁时间-创建时间 统计在线人数: 以线程方式处理请求;cookie处理:二次访问时,浏览器会将cookie发送到服务器;侧重控制逻辑; Servlet/ServletConfig接口 |--GenericServlet实现以上两个接口的类;协议无关 |--HttpServlet基于http协议实现类 |--自定义类实现doGet/Post():典型如SpringMVC的DispatcherServlet Servlet对象创建时机:默认第一次访问Servlet时创建;自定义时机可通过web.xml修改,如DispatcherServlet就是在启动容器时创建; 初始化后调用一系列doXXX()(生命周期之一); getServletContext():它关联ServletContext类(tomcat容器启动时创建的web项目应用上下文即代表当前web应用本身(spring框架封装为ApplicationContext),可以用来保存application级的共享属性如get/set/removeAttribute();计数器保存在其中可记录用户访问次数) GenericServlet:新增log()记录日志和异常(不常用): getServerPort()://服务器端口号,Tomcat默认8080 getContextPath()://应用上下文的入口url;一般为“/项目名” 转发到:RequestDispatcher的forward() request.getRequestDispatcher(“to.jsp”).forward(request,response); 重定向(简单页面跳转):HttpServletResponse的sendRedirect() response.sendRedirect(“login.jsp”); request.getSession(); attribute被设置在request中,则仅当前request有效;设置在session中则在有效期间都被共享;getParameter()系列方法是从前端页面或url参数中获取数据; get/set/removeAttribute[Names]();getCreationTime();getId();invalidate()丢弃整个session会话;setMaxInactiveInterval(int)设置过期时间(秒) http状态码:200;3xx暂时转发;400BadRequest,403Forbidden,404NotFound,405MethodNotAllowed,408RequestTimeout;500ServerError (继承Filter的java类)动态拦截请求和响应,修改和使用其中的信息;常用过滤器如身份验证,数据压缩,加密,触发资源访问事件,图像转换,日志记录与审核,MIME-TYPE链(文档编码) web.xml中Filter声明过滤器,映射到servlet或url;声明 1)程序启动时创建对象,读取配置文件(按顺序)并调用init(FilterConfig)实例化;filterConfig.getInitParameter()获取配置的初始化参数 2)相关接口:Filter,FilterConfig,FilterChain;实际过滤操作,调用doFilter(ServletReuqest,ServletResponse,FilterChain);chain.doFilter(request,response)请求传回过滤链,由下一个过滤器使用 3)销毁destroy() 文件上传: 实例:
字段1 字段2
<% =i %> < %= arr[i] %> Cookie[] cookies = request.getCookies();//从request获取对象集合
for(Cookie cookie:cookies){cookie.getName();//获取指定cookie名cookie.getValue();//获取值cookie.setMaxAge(long);//有效期Cookie c=new Cookie(name,value);//实例化一个cookie对象response.addCookie(c);//保存cookie[发送到客户端]
}<%
int count =0;
synchronized(application){if(application.getAttribute(“times”) == null){i++;//首位访问
} else{i=Integer.parseInt((String)application.getAttribute(“times”));i++;
}
application.setAttribute(“times”,Integer.toString(i));
}
%>Servlet
inti(servletConfig):即初始化servlet是通过调用配置类 getServletConfig():Servlet配置信息 service(servletRequst,servletResponse) getServletInfo():Servlet相关信息如作者,版权 destroy():销毁 getServletName(): getInitParameter():获取配置参数;servlet标签下有 getInitParameterNames() 重写了service():将servletRequest/servletResponse转为httpServletRequest/httpServletResponse;根据http请求方法路由到7个不同处理方法(doHead()调用了doGet()但返回空body的response) getLastModified(httpServletRequest) doGet/Head/Put/Delete/Options/Trace/Post(httpServletRequest,httpServletResponse) 诸多封装类获取信息头,如Cookie[] getCookies();Enumeration getAttributeNames()返回请求中所有属性的名称集合,getParameterNames()参数集合;HttpSession getSession()没有则创建;String getRequestURI();… new Cookie(name,value);一个cookie(客户端保存的一小段文本)通常包含一个键值对(会被解析为URL),一个GMT(格林尼治时间),一个路径,一个域名;获得或者新建cookie以后,get/setMaxAge()/Name()/Value()/Path()…;然后添加到response.addCookie(cookie);删除cookie:手动浏览器删除,或者获取后有效期设为0,添加到response getScheme()://请求协议 getServerName()://服务器名;本机返回localhost getRequestURL()://完整请求路径 会话跟踪技术:
过滤器: