JavaWeb-04(BOM&DOM)
2017-06-05 17:52
435 查看
JavaWeb-04
JavaWeb-BOM&DOM
BOM
一、知识回想
* BOM 概述 * BOM 的各个对象 * window对象 innerHeight,innerWidth document.body.clientWidth,document.body.clientHeight, self opener:超链和window.open() parent : iframe和frame frames[]: 三种对话框: alert(),prompt(),confirm() 定时器: setTimeout(),setInterval() 模态窗体: showModalDialog() ,showModelessDialog() * History对象 forward() ,back(),go() * Location对象.
二、内容
事件(掌握,明确每一个事件发生的时机)1、鼠标移动事件
* onmousemove(event) : 鼠标移动事件event是事件对象。 名字固定 * onmouseover : 鼠标悬停事件,当鼠标移动到某个控件上面的时候发生 this: 把this写在那个标签里面就代表那个标签对象 this.style.backgroundColor : 当调用样式表中的属性的时候,假设属性中间有横杠,则应去掉. 演示样例: 当鼠标移动到p标签上的时候,p标签改变样式 * onmouseout : 鼠标移出事件,当鼠标从控件上移开的时候
2、鼠标点击事件
onclick : 当鼠标单击某个控件时发生 演示样例: 当单击button时。在<p>中显示字符串 "冠希哥来了" 。
3、载入与卸载事件 ####
*载入事件(onload) : 在整个页面的元素载入完成之后发生 *卸载事件(onunload) : 是在页面关闭时发生 注意: onload和onunload事件必须写在body或者图片标签里面
4、聚焦与离焦事件
*聚焦事件onfocus:是在控件获得焦点的时候发生 *离焦事件onblur:是在控件失去焦点的时候发生 演示样例: 文本框获得焦点的时候改变样式,失去焦点时变回原样
5、键盘事件
onkeypress,onkeyup,onkeydown *onkeypress: 按下键盘按键并松开 *onkeydown : 按下按键发生 *onkeyup: 松开按键
6、提交与重置事件
onsubmit,onreset *提交事件: 是在点击提交button后发生。(必须写在form表单中) *重置事件: 是在点重置交button后发生。 演示样例: 提交表单中的数据(检查):假设是陈冠希:通过,否则不能提交数据。
Demo
<!doctype html> <html lang="en"> <head> <title>重置与提交事件</title> </head> <script type="text/javascript"> <!-- /* 提交事件:点击提交button时发生,函数在去目的地之前调用,依据结果决定是否去目标页面。 注意:必须写在form标签中 */ function fun(from){ //推断姓名 var username = form.username.value; if(username==""){ alert("姓名不能为空"); return false; } //推断年龄 var age = document.forms[0].age.value; if(age=="") { alert("年龄不能为空"); return false; } if(isNaN(age)){ alert("age必须是整数"); return false; } if(age<0 || age>100){ alert("年龄必须在0~100"); return false; } return true; } function fun1(form){ return false; } //--> </script> <body> <form method="post" action="#a.html" onsubmit="return fun(this)" onreset="return fun1(this)"> 姓名:<input type="text" name="username"><br> 年龄:<input type="text" name="age"><br> <input type="submit" value="提交"><input type="reset" value="重置"> </form> </body> </html>
7、选择与改变事件
onselect: 仅仅能用于输入框. 当选择输入框中的文本时发生 onchange: 用于select和文本框.对于下拉框是在选项发生变化的时候发生。对于文本框是在文本框的内容发生变化而且失去焦点时发生。 演示样例: 当选择文本框的内容时,弹出文本框的内容 下拉框的selectedIndex属性:代表选中某项的索引
DOM技术
一、Dom概述?
1、什么是DOM?
document object model 文档对象模型
2、它的作用?
重构整个HTML 文档。 能够加入、移除、改变或重排页面上的项目。
3、分类?
Core DOM : 定义了一套标准的针对不论什么结构化文档的对象 XML DOM : 定义了一套标准的针对 XML 文档的对象 HTML DOM : 定义了一套标准的针对 HTML 文档的对象。
4、xml介绍?
expensible markup language : 可扩展标记语言. <penson> <name>张无忌</name> <age>23</age> </person>
二、DOM树
1、结点 :
文档中的每一个成分都是一个节点.(包含文本也是节点)
2、结点的属性
a. nodeName(节点名称)元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节点的 nodeName 永远是 #document
b. nodeValue(节点值)
对于文本节点,nodeValue 属性包括文本。 对于属性节点,nodeValue 属性包括属性值。 nodeValue 属性对于文档节点和元素节点是不可用的。
c. nodeType(节点类型) : nodeType 属性可返回节点的类型。
标签节点的类型值是 1 属性节点的类型值是 2 文本节点的类型值是 3
Dom节点的属性.html
<!doctype html> <html lang="en"> <head> <title>Dom节点的属性</title> </head> <body> <p id="p">p节点的属性</p> <script type="text/javascript"> <!-- var p = document.getElementById("p"); alert(p.nodeType);//标签节点的类型值是 1 var txt = p.firstChild; alert(txt.nodeType);//文本节点的类型值是 3 //--> </script> </body> </html>
dom导航节点属性.html
<!doctype html> <html lang="en"> <head> <title>Document</title> </head> <body> <table border = 1> <tr> <td>凌志玲</td> <td>女</td> <td>23</td> </tr> <tr> <td>大s</td> <td>女</td> <td>28</td> </tr> <tr> <td>小s</td> <td>女</td> <td>20</td> </tr> </table> </body> </html> <script type="text/javascript"> <!-- /* 问题: 拿到大s的年龄 */ //拿到根节点 var html = document.documentElement ; //alert(html.nodeName) ; //拿到body节点 var body = html.lastChild ; //alert(body.nodeName) ; //拿到table节点 var table = body.firstChild ; //alert(table.nodeName) ; var value = table.firstChild.firstChild.nextSibling.lastChild.firstChild.nodeValue ; alert(value) ; //怎样准确拿出?须要结合浏览器中的DOM模型来查看每个节点的细节,以至于不会拿错你想获取的目标节点 //--> </script> <!--因为该演示样例涉及详细的IE浏览器,所以不截图-->
通过方法获得标签节点对象.html
<!doctype html> <html lang="en"> <head> <title>通过方法获得标签节点对象</title> </head> <script type="text/javascript"> <!-- /* 通过方法获得标签节点对象: 1.getElementById(): 2.getElementsByTagName() ; 3.getElementsByName(): 仅仅能用于表单控件 */ //--> </script> <body> <div name = "d">刘德华</div> <div name = "d" id = "div">成龙</div> <div name = "d">陈冠希</div> <input type="text" name="name" value="弹出我吧"><br> <input type="text" name="name"><br> <input type="text" name="name"><br> <input type="text" name="name"><br> </body> </html> <script type="text/javascript"> <!-- var div = document.getElementById("div"); alert(div.innerText); var divs = document.getElementsByName("d"); alert(divs[0].innerText); var names = document.getElementsByTagName("input"); alert(names[0].value); //--> </script>
获取节点内容的方法.html
<!doctype html> <html lang="en"> <head> <title>获取节点内容的方法</title> </head> <body> <h1 id = "h">明天歇息</h1> <script type="text/javascript"> <!-- var h = document.getElementById("h"); //第一种方法 alert(h.firstChild.nodeValue); //另外一种方法 alert(h.lastChild.nodeValue); //第三种方法 var nodes = h.childNodes alert(nodes[0].nodeValue); //第四种方法 alert(h.innerText); //--> </script> </body> </html>
打印ul中的值(教你怎样解决不同IE给你附加的节点而取出你想要的节点内容).html
<!doctype html> <html lang="en"> <head> <title>5打印ul中的值(教你怎样解决不同IE给你附加的节点而取出你想要的节点内容)</title> </head> <body> <ul> <li id="bj" value="beijing"> 北京 <h1>海淀</h1> 奥运 </li> <li id="sh" value="shanghai"> 上海 </li> <br/> <input type="button" value="li取值" onclick="getLi()"/> </ul> <script type="text/javascript"> <!-- function getLi(){ var bjNode = document.getElementById("bj") ; //alert(bjNode.nodeName + ":" + bjNode.nodeValue +":" + bjNode.nodeType) ; var txts = bjNode.childNodes ; for(var i = 0 ;i <txts.length;i++){ if(txts[i].nodeType == 3) alert(txts[i].nodeValue) ; else if(txts[i].nodeType == 1) alert(txts[i].firstChild.nodeValue) ; } } //--> </script> </body> </html>
打印select的值.html
<!doctype html> <html lang="en"> <head> <title>打印select的值</title> </head> <body> <select name="edu" id="edu"> <option value="本科">本科</option> <option value="专科">专科</option> <option value="高中">高中</option> <option value="小学">小学</option> <option value="幼儿园">幼儿园</option> </select> </body> </html> <script type="text/javascript"> <!-- //取出方式1 var edu = document.getElementById("edu"); var opt = edu.childNodes ; for(var i = 0;i<opt.length;i++){ //注意:浏览器加入了非常多空行,所以要推断 if(opt[i].nodeType==1){ alert(opt[i].firstChild.nodeValue);} } //取出方式2(推荐) var ops = edu.options; for(var i = 0;i<ops.length;i++){ alert(ops[i].innerText); } //--> </script>
3、结点的分类
整个文档是一个文档节点 每个 XML 标签是一个元素节点 包括在 XML 元素中的文本是文本节点 每个 XML 属性是一个属性节点 凝视属于凝视节点
4、结点的关系
仅仅有父子和兄弟关系 parentNode : 父节点 childNodes :全部的子标签 firstChild :第一个儿子 lastChild :最后一个儿子 nextSibling :下一个兄弟节点 previousSibling : 上一个兄弟节点
5、对结点进行CRUD操作(重点)
5.1、查找结点?两种方式: a. 採用节点之间的关系去拿根节点: document.documentElement ; b. 採用方法去拿 getElementById() : 依据标签的ID拿到此标签节点 getElementsByTagName() : 依据标签的名字拿到此标签节点数组 getElementsByName(): 适用于表单控件。 依据标签的name属性值拿到控件的数组。
5.2、删除结点?
removeChild() : 採用父节点删除子节点
5.3、创建节点:
document.createElement() : 创建一个标签节点 docuemnt.createTextNode("内容") :创建一个文本节点 节点的setAttribute() :加入属性节点
5.4、加入结点?
appendChild() : 加入子节点
5.5、改动或替换结点?
replaceNode(): 替换节点(适用于IE) replaceChild() : 替换子节点
替换节点和克隆节点.html
<!doctype html> <html lang="en"> <head> <title>替换节点和克隆节点</title> </head> <script type="text/javascript"> <!-- function changeNode(){ //拿到bj节点 var bjNode = document.getElementById("bj") ; //拿到game节点 var gameNode = document.getElementById("game") ; //替换 //第一种方式(不推荐) //bjNode.replaceNode(gameNode) ; //另外一种 //克隆节点 var kNode = gameNode.cloneNode(true) ; //有一个參数是boolean类型的,假设是true,表示连子节点一起复制,假设是false,则再复制本节点。不复制内容 //bjNode.replaceNode(kNode) ; //第三种方式(推荐) bjNode.parentNode.replaceChild(kNode,bjNode) ; } //--> </script> <body> <ul > <li id="bj" onclick="changeNode()">北京</li> <li>湖南</li> <li>山东</li> </ul> <ul> <li id="game">打<p>灰机</p></li> <li>抓泥鳅</li> <li>斗地主</li> </ul> </body> </html>
创建节点.html
<!doctype html> <html lang="en"> <head> <title>创建节点</title> </head> <script type="text/javascript"> <!-- function addOptions(){ //拿到下拉框对象 var sel = document.getElementsByTagName("select")[0] ; //创建一个节点 // 创建option第一种方法 //var option = document.createElement("option") ; //option.text = "小学" ; // 创建option另外一种方法 //var option = new Option("小学","小学") ; // 创建option第三种方法 /*var option = new Option() ; option.value = "小学" ; option.text = "小学" ; sel.options.add(option) ;*/ //另外一种加入方式 var option = new Option("小学","小学") ; //sel.appendChild(option) ; //IE有问题 //第三种方式 sel.innerHTML = sel.innerHTML + "<option value = '小学'>小学</option>" } //--> </script> <body> <input type="button" value="加入选项" onclick="addOptions()"/> <select> <option>本科</option> <option>专科</option> <option>高中</option> <option>初中</option> </select> </body> </html>
操作节点的属性.html
<!doctype html> <html lang="en"> <head> <title>操作节点属性</title> </head> <script type="text/javascript"> <!-- /* 功能: 按钮仅仅能点击一次 操作节点属性: 1. setAttribute() :设置某个属性的值 2. getAttribute(): 获得属性的值 3. removeAttribute() : 删除属性 */ function fun(){ //拿到btn对象 var btn = document.getElementById("btn") ; //删除disabled属性 //btn.removeAttribute("disabled") ; btn.onclick = function(){ fun1(this) ; } ; } function fun1(btn){ //第一种方式 //btn.setAttribute("disabled","disabled") ; //另外一种方式 //btn.disabled = "disabled" ; alert("我仅仅会弹出一次哦") ; btn.removeAttribute("onclick") ; } //--> </script> <body> <input type="button" value="仅仅能点击一次" id = "btn" onclick = "fun1(this)" > <input type="button" value="恢复" onclick = "fun()"> </body> </html>
加入表格行(练习),导购经常使用.html
<!doctype html> <html lang="en"> <head> <title>加入表格行</title> </head> <script type="text/javascript"> <!-- function addtr(){ //拿到单元格的内容 var name = document.getElementById("name").value ; var email = document.getElementById("email").value ; var age = document.getElementById("age").value ; //创建tr,td,并赋值 var nametd = document.createElement("td") ; nametd.innerHTML = name ; var emailtd = document.createElement("td") ; emailtd.innerHTML = email ; var agetd = document.createElement("td") ; agetd.innerHTML = age ; var btntd = document.createElement("td") ; btntd.innerHTML = "<input type = 'button' value = '删除' onclick = 'delTr(this)'> " ; //创建tr并组合 var tr = document.createElement("tr") ; tr.appendChild(nametd) ; tr.appendChild(emailtd) ; tr.appendChild(agetd) ; tr.appendChild(btntd) ; //将tr加入到table中 var table = document.getElementById("table") ; table.firstChild.appendChild(tr) ; } function delTr(btn){ //爷爷干掉儿子 btn.parentNode.parentNode.parentNode.removeChild(btn.parentNode.parentNode) ; } //--> </script> <body> <table width = 600 height = 100 align = center> <tr> <td>姓名:</td> <td><input type="text" name="" id = "name"></td> <td>邮箱:</td> <td><input type="text" name="" id = "email"></td> <td>年龄</td> <td><input type="text" name="" id = "age"></td> </tr> <tr> <td align = "center" colspan = "6"> <input type="button" value="加入" onclick="addtr()"></td> </tr> </table> <br> <br> <br> <br> <hr> <table width = "500" border =1 align = center id = "table"> <tr> <td>姓名</td> <td>邮箱</td> <td>年龄</td> <td>操作</td> </tr> </table> </body> </html>
全选全不选:选择你的爱好.html
<!doctype html> <html lang="en"> <head> <title>选择你的爱好</title> </head> <script type="text/javascript"> <!-- function checkAll(flag){ //拿到全部的选项 var hobbys = document.getElementsByName("hobby") ; for(var i = 0;i < hobbys.length ;i ++){ hobbys[i].checked = flag ; } } function reverseCheck(){ //拿到全部的选项 var hobbys = document.getElementsByName("hobby") ; for(var i = 0;i < hobbys.length ;i ++){ hobbys[i].checked = !hobbys[i].checked ; } } //--> </script> <body> <h1>请选择你的爱好:</h1> 全选/全不选<input type="checkbox" name="hobbys" onclick="checkAll(this.checked)" /><br/> <input type="checkbox" name="hobby" value="football" />足球 <input type="checkbox" name="hobby" value="basketball"/>篮球 <input type="checkbox" name="hobby" value="swim" />游泳 <input type="checkbox" name="hobby" value="singing" />唱歌<br/> <input type="button" value="全选" onclick="checkAll(true)"/> <input type="button" value="全不选" onclick="checkAll(false)"/> <input type="button" value="反选" onclick="reverseCheck()"/> </body> </body> </html>
下拉框选项的移动(多项).html
<!doctype html> <html lang="en"> <head> <title>下拉框选项的移动(多项)</title> </head> <script type="text/javascript"> <!-- function removeLeft(){ //获取下拉框的全部的选项数组 var ops = document.getElementById("left").options ; //获得右边下拉框 var rightsel = document.getElementById("right") ; //循环推断每个选项是否选中 for(var i =0 ;i<ops.length ;i++){ if(ops[i].selected){ rightsel.appendChild(ops[i]) ; i-- ; } } } function removeLeftAll(){ //获取左边下拉框的全部的选项数组 var ops = document.getElementById("left").options ; //获得右边下拉框 var rightsel = document.getElementById("right") ; //循环加入 var length = ops.length ; for(var i = 0 ;i <length;i++){ rightsel.appendChild(ops[0]) ; } } //--> </script> <body> <table align="center"> <tr> <td> <select size="10" id="left" multiple> <option>选项1</option> <option>选项2</option> <option>选项3</option> <option>选项4</option> <option>选项5</option> <option>选项6</option> <option>选项7</option> <option>选项8</option> </select> </td> <td> <input type="button" value="--->" onclick="removeLeft()"/><br/> <input type="button" value="===>" onclick="removeLeftAll()"/><br/> <input type="button" value="<---" onclick=""/><br/> <input type="button" value="<===" onclick=""/><br/> </td> <td> <select size="10" id="right"> <option>选项9</option> </select> </td> </tr> </table> </body> </html>
超链.html
<!doctype html> <html lang="en"> <head> <title>Document</title> </head> <script type="text/javascript"> <!-- function fun(){ alert("哈哈。我来了") ; return false ; } //--> </script> <body> <a href="http://blog.163.com/faith_yee/blog/demo03-dom节点的属性.html" onclick = "return false ;">demo03-dom节点的属性.html</a><br> <a href = "javascript: void(0)">demo03-dom节点的属性.html</a> </body> </html>
表单数据的推断.html
<!doctype html> <html lang="en"> <head> <title>Document</title> <style type="text/css"> .one{ border:2px solid red ; } .two{ background-image:url("images/error.jpg"); background-position:right; background-repeat:no-repeat; } </style> </head> <script type="text/javascript"> <!-- function checkInfo(form){ //推断通行证名称 var username = form.username.value ; if(username == ""){ form.username.className = "two" ; var span = document.getElementById("susername") ; span.className = "one" ; span.innerHTML = "<img src='http://blog.163.com/faith_yee/blog/images/error.jpg'>通行证用户姓名不能为空" ; return false ; } return true ; } //--> </script> <body> <form method = "post" action = "" onsubmit = "return checkInfo(this)"> <fieldset> <table> <tr> <td align = "right">通行证名称:</td> <td><input type="text" name="username">@163.com</td> <td><span id = "susername"></span></td> </tr> <tr> <td align = "right">密码:</td> <td><input type="password" name="pass"></td> <td><span id = "spass"></span></td> </tr> <tr> <td align = "right">确认密码:</td> <td><input type="password" name="repass"></td> <td><span id = "srepass"></span></td> </tr> <tr> <td colspan = "3"><input type="submit" value = "提交"></td> </tr> </table> </fieldset> </form> </body> </html>
javascript模拟类的实现.html
<!doctype html> <html lang="en"> <head> <title>javascript模拟类的实现</title> </head> <script type="text/javascript"> <!-- /* 1.定义类并创建类的实例对象 2.定义公有属性和私有属性 3.定义公有方法和私有方法 4.静态属性和静态方法 5.构造函数(无參,有參) 6.原型方式声明属性与方法 7.直接用Object或函数对象加属性与方法 */ //---------------------------------------------------------- //1.定义类并创建类的实例对象 /*function Person(){ } var p = new Person() ;*/ //------------------------------------------------------------ //2.定义公有属性和私有属性 /* 定义私有属性: 1.在函数里: var name = '张三' ; 2.在函数外: 採用对象.属性名 定义公有属性: 1.在函数里:this.name = '张三' ; 2.在函数外 类名.prototype.属性名 */ /*function Person(){ var name = "张三" ; this.age = 20 ; } var p = new Person() ; //alert(p.name) ; //name是私有属性。仅仅能在函数中訪问 //alert(p.age); //p.weight = 100 ; //定义一个私有属性 //alert(p.weight) ; Person.prototype.height = 180 ; alert(p.height) ; var p1 = new Person() ; //alert(p1.age) ; //alert(p1.weight) ; //訪问不了weight,由于weight是专属于p对象的私有属性 alert(p1.height) ;*/ //----------------------------------------------------------------- //3.定义公有方法和私有方法 /* 定义私有方法: 1.在函数里: var say = function() ; 2.在函数外: 採用对象.方法名 定义公有方法: 1.在函数里:this.name = function() ; 2.在函数外:类名.prototype.方法名 */ /*function Person(){ var say = function(){ alert("我是私有方法") ; } this.show = function(){ say() ; } } var p = new Person() ; //p.show() ; p.sing = function(){ //採用匿名函数的方式定义私有方法 alert("我想唱忘情水") ; } //p.sing() ; Person.prototype.eat = function(a){ alert("我想吃" + a) ; } p.eat("鸡肉") ; var p1 = new Person() ; //p1.sing() ; //不能调用,由于sing方法是p对象的专属方法,私有的 p1.eat("鸭肉") ;*/ //-------------------------------------------------------------- //4.静态属性和静态方法 : 注意: 不能通过对象来调用 /*function Person(){} Person.name = "张无忌" ; //定义一个静态属性 Person.show = function(){ //定义一个静态方法 alert("我是静态方法") ; } ; alert(Person.name) ; Person.show() ;*/ //--------------------------------------------- //5.构造函数(无參。有參) //注意: 不要起同名的函数 /*function Person(name){ this.name = name ; } function Person(name,age){ alert("我被调用了") ; this.name = name ; this.age = age ; } var p = new Person("张无忌",20) ; alert(p.name + ":" + p.age) ; var p1 = new Person("张三丰") ; alert(p1.name) ;*/ //------------------------------------------------ //5.创建对象的方式 /* 创建对象的三种方式: 1. 採用new 函数名() 2. new Object() ; 3. json */ // var a = new Object() ; // alert(typeof(a)) ; //json格式 var json = {"a":"中国","b":"美国","c":"日本"} ; //alert(typeof(json)); //alert(json["b"]) ; //alert(json.b) ; var json1 = {1:"中国",2:"美国",3:"日本"} ; //alert(json1[2]) ; //此种情况下仅仅能採用中括号去拿值 //假设想都拿到 /*for(var x in json){ alert(x + ":" + json[x]) ; }*/ //扩展:foreach循环是拿到对象的全部的属性 /*function fun(p){ for(var a in p){ alert(a) ; } }*/ //--------------------------------------------------- //给数组加入方法 //功能:获取数组中的最大值 /*Array.prototype.getMax= function(arr){ var max = arr[0] ; for(var i = 1 ;i<arr.length ;i++){ if(arr[i] > max) max = arr[i] ; } return max ; } var arr = [2,6,12,67,58] ; var max = arr.getMax(arr) ; alert(max) ;*/ //改造document.getElementById(); /*function $(id){ if(arguments.length > 1){ alert("传递的參数个数不正确") ; return ; } var obj = document.getElementById(id) ; if(obj == null){ alert("传递的參数必须是id的值") ; return ; } return obj ; } function func(){ //var p = $("a,","b") ; var p = $("p") ; p.innerHTML = "刘德华" ; p.onclick = function(){ alert(this.innerHTML); } }*/ //-------------------------------------------- //继承 /*function Person(){ this.name = "张无忌" ; this.show = function(a){ alert(a) ; } } function Student(){ this.name = "张三丰" ; this.show =function(){ alert("我是子类的方法"); } } Student.prototype = new Person() ; //student继承了Person var s = new Student() ; //alert(s.name) ; s.show("aaaa") ;*/ //------------------------------------------ //with(对象的名字) //设定p标签的样式 function func(){ var p = document.getElementById("p") ; //p.style.color = "red" ; //p.style.border="1px solid green" ; //p.style.fontSize = "50px" ; with(p){ style.color = "red" ; style.border = "1px solid green" ; style.fontSize="50px" ; } } //--> </script> <body> <p id = "p" onclick = "fun(this)" name = "p1">李德华</p><input type="button" value="拿取p标签的内容" onclick="func()"> </body> </html>
资料下载
相关文章推荐
- JavaWeb-04(BOM&DOM)
- javaWeb-xml解析概述和DOM&SAX解析原理
- 【Web前端学习笔记】Javascript_04_BOM,DOM思想,正则表达式
- Java学习经验和进阶 & Java Web开发review
- JavaWeb_day1-HTTP&Servlet
- DHTML Utopia Modern Web Design Using JavaScript & DOM [ILLUSTRATED]
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之04.JDBC Resultset 推荐
- Java语言介绍(04)开源项目(02)WEB框架(03)Struts
- java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
- javaweb & android 对比理解图 系列 图一
- javaWeb开发中的字符过滤器配置--->让你二步轻松告别乱码
- JavaWeb 从init-param中读取多重数据(Enumeration<String>)
- Java web 服务_O'REILLY_个人读书笔记
- xfire webservice异常 java.lang.IllegalStateException: Can't overwrite cause
- [问题与解决] java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
- Web页面上工作流设计器(silverlight/Flex/Javascript/java Workflow&
- Java语言介绍(04)开源项目(02)WEB框架(02)WebWork
- Java语言介绍(04)开源项目(02)Web框架(01)Spring
- 读S计划 - Java&amp;amp;amp;amp;Web方向的具体学习规划
- Java中的DAO设计模式应用举例 ------> 来自Java WEB 开发实战经典