HTML:
1.html:超文本标记语言.
标记(标签、节点):
<标记名>标记内容(标记体)</标记名称> 九成双标记
个别单标记
2.html文件写法和基本结构:
3.常用标记。p/div/span/ul/ol/center/b/i/sub/sup/a
4.表格:网页布局
table thead
tbody th
td tr
5.表单:手机客户信息。
form:name/method/action
表单元素:input:type=text/password/readio/checkbox/hidden/submit/reset/image
select:option textarea
6.框架:frameset:rows、cols frame:name、src
iframe
CSS:
分类:
按写位置不同:①行内样式表②内嵌样式表③外联样式表
按调用方式不同:id样式表、类样式表、标签样式表。
常用属性:
文字相关:
文本相关:
外边距:
内边距:
边框:
图文混排:
定位:
滤镜:
JAVASCRIPT:
js简介
js和java异同:
作用:①制作网页动画②实现表单验证。
js基本语法:
变量定义、运算符、执行逻辑
js常用对象:
String、Date、Math、Array
BOM:概念:
常用对象:window
——document、location、screen、history、navigter
DOM:概念:
常用方法:
getElementById()/getElementsByName()/getElementsByTagName()
练习表单验证。目的:减少到服务器端的来回。提高体验。
动态网页:
web服务器(web容器):服务器软件。
IIS
Apache
tomcat:
版本:常用6.X
安装版。
绿色版:配置:
1.需要java_home环境变量支持。
常用目录:
bin:存放可执行文件
lib:存放需要的jar包
conf:存放服务器的配置文件
logs: 存放服务器的日志文件
work:服务器的工作目录
webApps:存放web应用程序
temp:临时目录,上传或下载使用。
配置文件:
server.xml
tomcat-users.xml
使用的动态网页技术:①jsp、servlet②asp.net
asp③php
jsp:
jsp概念。java server pages
内嵌在html网页中执行。
jsp组成:
声明 : <%! 定义变量、方法 %>
小脚本: <%
java程序 %>
表达式: <%=常量/变量/方法
%>
指令: <%@
导入jsp页面需要内容 %>
page/include/taglib
action动作:
jsp九大内置对象:
out:向网页输出内容。
request:请求对象。
response:响应对象。
session:会话对象。
application:应用程序对象。
exception:异常对象。只能在错误页面使用。
config:配置文件对象。
pageContext:当前页面存储空间。
page:当前不用。
jsp页面跳转两种方式:
重定向:
response.sendRedirect("页面");
请求转发:
request.getRequestDispatcher("页面").forward(request,response);
区别:
重定向:向服务器端跑两趟。
保存不了request对象的值。
请求转发:向服务器跑一趟。
保存request对象的值 出现url地址栏和页面不符。
pageContext/request/session/application区别:
pageContext:存储数据的范围当前页面
request:一次请求区间有效。
session:维护用户的一次会话。可以有多次请求和响应。
用户登录成功。保存用户信息。
session过期时间。
application:应用程序级存储空间。
站点的访问次数。
url传参数:url?参数1=值1&参数2=值2&...
属于get方式提交数据。
Cookie:
小甜点 保存在客户端。
以键值的形式。 不是jsp内置对象。
使用Cookie:创建对象--》设置过期时间--》写到客户端。
获得Cookie:reqeust.getCookies()
Cookie和Session异同:
相同点:都可以以键值对形式保存数据。
不同点:Cookie保存在客户端/session保存在服务器端。
Cookie过期时间累计/session不累计呆滞时间。
比较:seesion在服务器内存
Cookie占用客户端硬盘空间。
session安全性高
Cookie安全性低。
实现用户的增删改查。
MV:model1模式。设计模式。
M:model模型->由java类充当->作用封装数据。
V: view视图->由jsp页面充当->显示数据和负责页面跳转。
使用MV模式实现用户的增删改查
EL()表达式语言
作用:向网页输出内容。等价于①脚本的out.println()。
②表达式<%= %> 简化①和②
语法:${ 表达式内容 }
表达式内容可以是:
常量
算术表达式(+ - * / %)
关系表达式(< <= > >= == != lt le gt ge eq ne)
逻辑表达式(&& || ! and or not)
变量:要求放入存储空间。
对象的属性:使用get方法去掉get的部分。
对象:调用toString方法。
判空:empty
JSTL()java标准标签库:
如果项目不支持jstl:手动导入:lstl.jar和standard.jar两个包到lib目录。
包含:核心标签库(core)、国际化/格式化标签库(fmt)、xml标签库、函数标签库、sql标签库
要使用标签,必须导入对应的标签库。使用页面的taglib指令
core标签库:提供定义变量、输出变量、删除变量、选择结构、多重选择结构、循环结构。等标签。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
①:set标签作用,定义变量。常用属性:value
var scope
property target
②:out标签:作用:向网页输出内容。常用属性:value default escapeXml
③:remove标签.删除指定空间的变量。常用属性:var
scope
④:if标签。条件判断。
常用属性:test var
scope
⑤:choose/when/otherwise标签。多重选择,相当于switch case语句。
when的属性:test
⑥:forEach标签:循环或迭代。常用属性:items var begin end step varStatus属性:index/count/first/last
fmt格式化标签库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
①:formatDate标签: 将日期格式化并且输出:常用属性:
value:需要格式化的日期
var:格式化的结果,保存的变量
type:指定日期格式化部分:值:date 、time 、 both
timeStyle:时间的格式化类型:值:short、medium(default)、long、full
dateStyle:日期的格式化类型:值:short、medium(default)、long、full
pattern:自定义格式化字符串
timeZone:时区,系统默认。不改
scope:变量保存的空间。
②:parseDate 将字符串转化成日期。常用属性:
value:需要转换的值
var:转换后的结果,保存的变量
type: 指定日期格式化部分:值:date 、time 、 both
timeStyle:时间的格式化类型:值:short、medium(default)、long、full
dateStyle:日期的格式化类型:值:short、medium(default)、long、full
pattern:自定义格式化字符串
timeZone:时区,系统默认。不改
scope:变量保存的空间。
③:parseNumber 将字符串转化为数值:常用属性:
value:需要格式化的数字
var:格式化的结果,保存的变量
scope:变量保存的空间。
integerOnly:只顯示整數。
④:formatNumber标签: 格式化数字、货币、百分比。 属性:
value:需要格式化的数字
var:格式化的结果,保存的变量
scope:变量保存的空间。
groupingUsed 是否分组显示
type:格式化类型:值:number/percent/currency
maxIntegerDigits:最大整数位
minIntegerDigits:最小整数位
maxFractionDigits:最大小数位
minFractionDigits:最小小数位
currencySymbol:取值:$¥
currencyCode:货币码
Servlet:服务器端小脚本。
比较古老。
必须运行在容器中。
web服务器 tomcat
接收客户端请求,返回响应。
创建Servlet:
① 知道
自定义类实现Servlet接口。重写所有方法。
service方法接收请求,返回响应。
注意:在配置文件配置Servlet
<servlet>
<servlet-name>名字</servlet-name>
<servlet-class>完全路径</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>名字</servlet-name>
<url-pattern>/url</url-pattern>
</servlet-mapping>
②: 知道
自定义类继承GenericServlet类,重写需要方法。
service方法
注意:配置文件中配置。
③: 常用
自定义类继承HttpServlet类。重写需要方法。
doGet() 和doPost()
注意:配置文件中配置。
④:直接创建Servlet。自动生成doGet和doPost。自动配置
常用
Jsp页面经过翻译产生.java文件,继承自HttpJspBase,HttpJspBase继承自HttpServlet,所以,jsp页面被翻译成Servlet
jsp内置对象和Servlet类的对应:
out PrintWriter类
request
HttpServletRequest接口 HttpServletRequest是ServletRequest接口的子接口
response
HttpServletResponse接口 HttpServletRespones是ServletResponse接口的子接口
session
HttpSession接口
application
ServletContext接口
config
ServletConfig接口
Cookie对象在Servlet中的对应
Cookie类
Servlet生命周期:
Servlet类对象在tomcat服务器中,只有一个对象。以多线程方式运行的。
第一次访问Servlet会new对象,自动调用init方法对对象进行初始化(调用一次)。然后调用doGet或doPost方法产生响应(调用多次)。
当服务器重启、关闭、从新部署。都会调用destroy方法(调用一次)销毁对象。
Servlet加载:
使用init方法。获得web.xml配置文件的初始化参数。
用Servlet实现用户登录和用户信息分页显示
用MV模式实现用户登录和用户信息分页显示
M:model
模型 由java类。
封装数据。准备数据。
V:view
视图 由Servlet实现
显示数据。页面跳转
过滤器:
作用:提供一种可以提前处理用户请求或相应的机制。
写法:自定义类,实现Filter接口。重写init()/doFilter()/destroy方法。
在配置文件配置
用过滤器实现Servlet中文乱码的问题。
从配置文件中读初始化参数。
过滤器链中过滤器的执行顺序。
由配置文件中过滤器的配置顺序决定。
监听器:
监听一个对象或一个属性的创建和销毁。
常见监听器:
ServletContextListener
监听application的创建和销毁。
HttpSessionListener
监听一个session(会话)的创建和销毁。
ServletRequestListener
监听一个请求的创建和销毁。
ServletContextAttributeListener
监听application应用程序级别的一个属性创建和销毁。
HttpSessionAttributeListener
监听session中一个属性的创建和销毁。
ServletRequestAttributeListener
监听一个请求对象中一个属性的创建和销毁。
创建监听器:
自定义类,实现对应的监听器接口。重写所有方法。
配置文件中配置。
利用监听器实现当前在线用户数统计。
MV:model1模式。升级:model2模式:
MVC模式:
M:model
模型 封装数据。
javabean充当
V:view
视图 显示数据。
jsp充当
C:Control
控制器 业务处理和业务逻辑跳转
Servlet充当
AJAX: 异步javascript and xml
ajax不是全新知识点,利用已有的知识实现功能。
出现原因:异步实现网页局部更新,提高网络效率。
提高用户体验。
XML:可扩展标记语言
保存数据。平台无关。
从sgml(标准通用标记语言)分离出来子语言。
特殊文本文件。
sgml分离出:①html(超文本标记语言)②xml(可扩展标记语言)
xml和html比较:
html标记固定的:显示数据和描述数据
xml标记自定义的:描述数据。
xml文件写法:
xml文件有且只有一个根元素。
可以包含多个子元素。
可以包含多个属性。
每个元素有且只有一个父元素
标记名称不能以xml开头.
标记区分大小写。
要求有开始标记,一定有结束标记。
掌握xml文件的写法。
xml文件书写:专业:Altova XMLSpy
使用DTD文件验证XML文件是否合法
(不用掌握)
dtd缺点:
数据类型少。淘汰。
没有层次感。
dtd替代品:schema。使用xml格式检验xml文件。(不用掌握)
使用schema验证xml文件:
导入方式:
schema文件没有命名空间:
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="aa.xsd"/>
有命名空间:
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="命名空间 aa.xsd" xmlns="命名空间"/>
js解析xml文件和html文件。
xml的DOM模型
html的DOM模型
DOM常用方法和属性:
documentElement:
获得文件的根节点。
childNodes:
返回当前节点所有的子节点对象数组
firstChild:
返回第一个子节点
lastChild:
返回最后一个子节点
nextSibling:
下一个兄弟节点
previousSibling:
返回上一个兄弟节点
parentNode:
返回父节点
nodeType:
返回节点类型:①1节点是元素②2节点是属性③3节点是文本
nodeName:
获得节点名。
nodeValue:
获得节点值。
getAttribute(name):
获得属性的值
getElementById
根据标签id获得标签,一个。
getElementsByName
根据标签name属性获得标签,多个
getElementsByTagName
根据标签名获得所有标签集合。多个
setAttribute(name,value)
设置某个标签的某个属性的值
removeChild(节点)
删除子节点
removeAttribute(name)
删除某个节点的某个属性
replaceChild(new,old)
替换子节点
appendChild(节点)
添加子节点
createElement(元素)
创建元素节点
createTextNode(文本)
创建文本节点
insertBefore(节点)
前部插入节点
cloneNode(boolean)
赋值一个节点,是否包括子节点
ajax:
ajax请求和普通请求,之间的关系和比较。
java中神奇空间是:浏览器的XMLHttpRequest内置对象。
有的浏览器不支持此对象。
var http ;
try{
//火狐。搜狗。
http = new XMLHttpRequest();
}catch(e){
try{
//ie
http = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
//
http = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("浏览器不支持");
}
}
}
XMLHttpRequest对象做什么:
向服务器发请求。
异步
接收服务器响应
通过js和浏览器进行交互
XMLHttpRequest对象的open方法和send方法:
open(请求方式,请求目标[,是否异步])
准备请求信息
send([参数])
发送请求
get方式:
http.open(‘get‘,‘test2?value=‘+o.value);
send();
post方式:
http.open(‘post‘,‘test2‘);
//设置请求头
http.setRequestHeader(‘Content-Type‘,‘application/x-www-form-urlencoded‘);
http.send(‘value=‘+o.value);
XMLHttpRequest对象发送请求并且接收服务器端响应:
①:准备好要发送的请求的信息。
open()方法
②:准备一个函数,来处理服务器端的响应
(设置回调函数) onreadystatechange属性
http.onreadystatechange = back;
③:向服务器发送请求。
send()方法
④:判断服务器的返回状态
readyState属性
readyState属性四个状态:1已初始化。2发送请求。3响应数据传送中4.响应完毕。
⑤:获得服务器响应,显示到客户端。
responseText属性
ajax常用技巧和常用案例:
常用技巧:
①:get方式和post方式提交中文乱码问题.
get方式:
客户端转码: encodeURIComponent(‘中文参数‘);
服务器端转码: new String(param.getBytes("iso-8859-1"),"utf-8");
post方式:
服务器端转码:
request.setCharacterEncoding("utf-8");
②:get请求被缓存问题。
post请求不会被缓存。
get请求时两次请求的url地址一样是。去缓存拿网页。
1.故意使url地址不同。
var d = new Date().getTime();
http.open(‘get‘,‘test8?value=‘+v+‘&d=‘+d);
2.在服务器端使用响应头设置不使用缓存。
response.addHeader("pragma", "no-cache");
response.addHeader("cache-control", "no-cache");
response.addHeader("expires", "0");
③:处理服务器不正常的状态。
status
status:表示服务器返回的响应是否正确状态。
200:正常返回
404:目标没找到
500: 服务器端程序异常
readyState:表示请求和响应当前状态
④:告诉用户ajax正在运行。
判断readyState状态:
不为4时,显示文字,或图片。
为4时,清空文字,隐藏图片。
⑤:同时处理多个ajax请求。
XMLHttpRequest对象,不能使全局。
http.onreadystatechange = function (){
//使用匿名函数调用回调函数。传参数
callback(http);
};
案例:
①:下拉框联动
重点看
responseText:返回服务器端响应的文本。
responseXML:返回服务器端响应的xml文件。
服务器端返回xml文件时注意:
response.setContentType("text/xml");
String rst = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
②:自动补全功能。百度、google
responseText:返回服务器端的文本。或json
responseXML:返回服务器端的xml文件。
xml和json比较:
xml占空间大,json占空间小。
xml解析比较复杂。json解析简单。
xml安全。json安全性不高。
json-lib动态生成json字符串。
Ajax框架:
对底层的ajax实现进行近一步封装。提高工作效率。
dwr:侧重于服务器端。
组成:
运行在服务器端的servlet,接收客户端请求,返回响应。
运行在客户端的js,发送ajax请求,更新页面。
下载dwr对应的jar包。
配置dwr:
①:将相关的jar包放到项目的lib目录。
②:在web.xml文件中对dwr进行配置
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
③:拷贝dwr目录下的dwr.xml文件到项目的WEB-INF目录下。清空<allow>标记下的所有子标记
④:测试:http://localhost:8888/项目名/dwr
使用Dwr:
①:创建一个类,定义方法实现功能。
②:将自定义类配置到dwr.xml文件中。
<create creator="new" javascript="DwrTest">
<param name="class" value="com.dwr.DwrTest"></param>
</create>
③:导入需要的js文件到jsp页面。
engine.js(dwr核心js)和util.js(dwr提供的工具)文件必须导入。
导入服务器端类自动生成的js文件
④:在js中像使用js函数一样去使用服务器端方法。
服务器端详解:
使用include/exclude标签指定客户端可以调用/不可以调用的服务器的方法。
<!-- include节点表示可以调用的方法声明 -->
<include method="getData"></include>
<!-- exclude节点表示不能被调用的方法的声明 -->
<exclude method="getData2"></exclude>
服务器端方法返回如果是自定义类对象或自定义类对象数组。必须在配置文件中转换。
<convert converter="bean" match="com.bean.Province"></convert>
客户端详解:
发送ajax请求给服务器的完整语法:
对象名.方法名([参数1,参数2,...,参数n,]{callback: 回调函数/匿名函数 ,errorHeader: 异常函数/匿名函数,timeout:2000});
为了可以使函数重用.不写匿名函数
dwr工具类(util.js)常用方法:
${id} ==>
document.getElementById(id)
DWRUtil.getValue(id)
DWRUtil.setValue(id,value)
DWRUtil.removeAllOptions(id)
DWRUtil.addOptions(id,data,value,name)
DWRUtil.removeAllRows(id)
id一般指tbody的id
DWRUtil.addRows(id,data,列名的匿名函数)
jquery:侧重与客户端