Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

web.xml “/ “代表当前工程根目录,如工程名为testSSH, 则在web.xml中用/WEB-INF/applicationContext.xml 代表
testSSH//WEB-INF/applicationContext.xml


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

查看tomcat下webapp知:编译好的class文件会放到WEB-INF的classes之下,
? 即:若src 下有一applicationContext.xml文件,实际运行地址为:/WEB-INF/classes/applicationContext.xml
?src源文件夹位置与WEB-INF下的lib文件夹平行。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

Ctrl + shift +R
这可能是所有快
8 @( c% F, k” t” v9 Q$ m9 {$ g捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件

ctrl+.及ctrl+1:下一个错误及快速修改 ,F2显示错误3 g’ t+ J??F1 q) ]9 J” g* a

ctrl+o:快速outline
0 h$ ?% M& ?8 |9 z5 W9 ~” |??c如果想要查看当前类的方法或某个特定方法,但又不想把代码拉上拉下,也不想使用查找功能的话,就用ctrl+o吧。它可以列出当前类中的所有方法及属性,你只需输入你想要查询的方法名,点击enter就能够直接跳转至你想去的位置。% @# F8 c; j, D- c* ^

Ctrl + Q 回到上次编辑处
Ctrl + ↓ 向下
shift + ← 从当前位置选中
Alt+↓ 当前行和下面一行交互位置
Alt+← 前一个编辑的页面
Ctrl + Alt + ↓ 复制当前行到下一行 接着按Alt+↓ 完成一行的复制

Ctrl+Enter,Shift+Enter在当前行的下一行插入空行(鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+D删除当前行。
Ctrl+L 定位在某行

Ctrl+2 快速替换
Alt+Shift+R 重命名

F12 Activate Editor (启动编辑器) : ?
Ctrl+M切换窗口的大小
Ctrl+W 关闭当前Editer
Ctrl+E 打开窗口浏览,浮动的方式在编辑区
Ctrl+Shift+E Switch to Editor (切换至编辑器) :
Ctrl+F6? 切换至下一个编辑器
Ctrl+Shift+F6 切换至上一个编辑器
Ctrl+F7? 切换至下一个视图,如server 与 console切换
Ctrl+Shift+F7 上一个
Ctrl+F8? 切换至下一个视景,如hibernate 与 web 视景
Ctrl+Shift+F8 上一个

F2 持续显示Show Tooltip Description
F3跳到声明或定义的地方。

Ctrl+/ 在代码窗口中是这种//~注释。
Ctrl+Shift+/ 在代码窗口中是这种/*~*/注释

Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+K 参照选中的Word快速定位到下一个

Ctrl+Shift+F格式化文件Format Document。
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反

之)

Ctrl+Shift+M(先把光标放在需导入包的类名上) 作用是加Import语句。
Ctrl+Shift+O作用是缺少的Import语句被加入,多余的Import语句被删除。

在.jap.或.java等文件中右键选“Campare With”或“Re place With”可以找到所有操作的历史记录。

Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用

Alt+/来代替)

Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没

有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)

Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+Z 重构的后悔药(Undo)


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

jvm内存分配不够造成
myeclipse 配置server 选择用到的服务器,自带的在Servers/Integrated Sandbox下
MyEclipse Tomcat /JDK Optional Java VM arguments:增加
-Xms128m
-Xmx256m
-XX:PermSize=128M
-XX:MaxNewSize=256m
-XX:MaxPermSize=256m

-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
?? ?? ?? ?? ?? ?? ??? 堆空间剩余小于5%就会警告,建议把这个稍微设
?? ?? ?? ?? ?? ?? ?? ?? ?? 大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,WAP是一种无线应用通讯协议(Wireless Application Protocol,简称wap)[1],是一个全球性的开放协议,是移动通信与互联网结合的第一阶段性产物。这项技术让使用者可以用手机之类的无线装置上网,透过小型屏幕遨游在各个网站之间。而这些网站也必须以WML(无线标记语言)编写,相当于国际互联网上的HTML(超文件标记语言)。它不依赖某种网络而存在,今天的WAP服务在3G到来后仍然可能继续存在,不过传输速率更快,协议标准也会随之升级。

2,WAP是一种协议,同比HTTP,编写要用html, 相应的WAP编写用WML


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
0,页面引用jquery及插件jquery-1.2.6.pack.js,jquery.dimensions.pack.js  详细效果见BRM系统--发展部跟进

1,为承载数据的div增加onscroll事件:

2,在AddMoreData()方法中判断滚动条是否到达底部,若是,则异步传输数据 function AddMoreData(){ var myDiv = $("#dvBody")[0]; // alert( $("#dvBody")[0]); if ( myDiv.scrollTop + myDiv.style.pixelHeight > myDiv.scrollHeight ){ lastPostFunc(); //异步加载数据 } } var hasReturn = true; //指示当目前异步请求返回之后才可以进行下一次的异步传输,不然可能会出现数据不一致的情况 3, function lastPostFunc() { if ( ! hasReturn ) return; hasReturn = false; //开始本次传输 //传输查询条件 var queryStr = document.location.search; //因要获取上次滚动所达元素,以便在数据中取出此记录以下的数据,故须要在页面中用一hidden元素存起每次的最后的记录ID,并传给查询数据内 var url = "data.aspx" + queryStr + "&lastID=" + $("#LastID").val() + "&sn="+$(".sn:last").attr("id"); url = url + "&txtCustomerName=" + $("#txtCustomerName").val(); url = url + "&txtTel=" + $("#txtTel").val(); url = url + "&ddlCustomerTypeSelectedValue=" + $("#ddlCustomerType").val(); url = url + "&ddlCommunicateStatusSelectedValue=" + $("#ddlCommunicateStatus").val(); url = url + "&txtOrderDate_begin=" + $("#txtOrderDate_begin").val(); url = url + "&txtOrderDate_end=" + $("#txtOrderDate_end").val(); //alert(url); $('div#lastPostsLoader').html(''); //用id为lastPostsLoader的div加载等待图片 $.post(url, function(data){ //alert($(".wrdLatest:last").attr("id")); if (data != "") { $(".wrdLatest1:last").after(data); //回调函数,将查询到的新数量加到:class为wrdLatest1的集合的最后一个元素之后,故在得到的数据中要生//成classclass为wrdLatest1的元素,以定位最后一个。 } $('div#lastPostsLoader').empty(); hasReturn = true; //本次传输完毕,可以进行下一次异步传输 }); };


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,$:$(“a”) 是一个jQuery选择器(selector),在这里,它选择所有的a标签,得到一个对象集合,$号是 jQuery “类”(jQuery “class”)的一个别称,因此$()构造了一个新的jQuery 对象(jQuery object)。相当于document.getElementsByTagName(“a”),这是一个函数!,$号是 jQuery “类”(jQuery “class”)的一个别称,因此$()构造了一个新的jQuery 对象(jQuery object)。函数 click() 是这个jQuery对象的一个方法,它绑定了一个单击事件到所有选中的标签(这里是所有的a标签),并在事件触发时执行了它所提供的alert方法.
(1):$(“div > p”) :找div下的p元素,如

one

two

three

会返回

two

$(“div > p”)[0]:第一个, $(“p”):直接找到段落P,即无符号.#时直接找页面的类型,又如$(“div”)
(2):$(document.body).background( “black” ); 即()可除了字符串之外,还可以是dom对象
(3):选择ID $(“#orderedlist”) 前面加个#号即可,(如CSS),相当于getElementById(“”),$(“#orderedlist li”) 打到orderdilist下的li元素
(4) : $(“.wrdLatest:last”);$得到一个集合,得到class为.wrdLatest的所有集合,last指示得到取出最后一个元素
(5):*用法 定义:匹配所有元素 多用于结合上下文来搜索。
实例:查看页所有元素的数量 代码:$(“*”).length; //点击按钮四将执行这句代码
(6)定义:将每一个选择器匹配到的元素合并后一起返回。你可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。
:$(“.red_test,#btn_5”)

2, 执行方法:通过$得到元素,在方法中直接写function: $(“#orderedlist”).click( function(){$(“#orderedlist”).addClass(“red”);} )
每一个onXXX事件都有效,如onclick,onchange,onsubmit等,都有jQuery等价表示方法(onXXX,所以都改成了XXX,去掉了on)

3,为得到的元素增加CSS操作:
(1) CSS属性: $(this).css({‘background-color’ : ‘yellow’, ‘font-weight’ : ‘bolder’}); 得到某一属性:var color = $(this).css(“background-color”);
或:$(this).css(“color”,”blue”);
(2 ) addClass: $(this).addClass(“green”); removeClass
(3):height( ):得到宽度,height(100);设置宽度 类似还有:width( ), html()(得到元素内部html)
(4):$(“#checkbox_id”).attr(“checked”); //获取一个CheckBox的状态(有没有被选中,返回true/false)
$(“#checkbox_id”).attr(“checked”,true); //设置一个CheckBox的状态为选中(checked=true)
$(“.wrdLatest1:last”).attr(“id”)
$(“input[name=’checkbox_name’][checked]”); //选择被选中CheckBox元素的集合

4,遍历元素:each:$(“#orderedlist”).find(“li”).each(function(i) { $(this).html( $(this).html() + ” BAM! ” + i ); //$(“#orderedlist”).find(“li”)是一个集合,遍历之
each之前是一个集合。

5,查找元素:find,filter(),not() : $(“li”).not(“:has(ul)”).css(“border”, “1px solid black”);
选择上一个或者下一个元素:$(this).next(),parents(“p”)

6,jQuery常用技巧

1、关于页面元素的引用

通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。

2、jQuery对象与dom对象的转换

只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象。

普通的dom对象一般可以通过$()转换成jquery对象。

如:$(document.getElementById(”msg”))则为jquery对象,可以使用jquery的方法。

由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。

如:$(”#msg”)[0],$(”div”).eq(1)[0],$(”div”).get()[1],$(”td”)[5]这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。

以下几种写法都是正确的:

$(”#msg”).html();$(”#msg”)[0].innerHTML;$(”#msg”).eq(0)[0].innerHTML;$(”#msg”).get(0).innerHTML;
3、如何获取jQuery集合的某一项
对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq或get(n)方法或者索引号获取,要注意,eq返回的是jquery对象,而 get(n)和索引返回的是dom元素对象。对于jquery对象只能使用jquery的方法,而dom对象只能使用dom的方法,如要获取第三个

元素的内容。有如下两种方法:

$(”div”).eq(2).html(); //调用jquery对象的方法$(”div”).get(2).innerHTML; //调用dom的方法属性
4、同一函数实现set和get
jQuery中的很多方法都是如此,主要包括如下几个:

$(”#msg”).html(); //返回id为msg的元素节点的html内容。$(”#msg”).html(”new content”);//将“new content” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content$(”#msg”).text(); //返回id为msg的元素节点的文本内容。$(”#msg”).text(”new content”);//将“new content” 作为普通文本串写入id为msg的元素节点内容中,页面显示new content$(”#msg”).height(); //返回id为msg的元素的高度$(”#msg”).height(”300″); //将id为msg的元素的高度设为300$(”#msg”).width(); //返回id为msg的元素的宽度$(”#msg”).width(”300″); //将id为msg的元素的宽度设为300$(”input”).val(”); //返回表单输入框的value值$(”input”).val(”test”); //将表单输入框的value值设为test$(”#msg”).click(); //触发id为msg的元素的单击事件$(”#msg”).click(fn); //为id为msg的元素单击事件添加函数
同样blur,focus,select,submit事件都可以有着两种调用方法。

5、集合处理功能对于jquery返回的集合内容无需我们自己循环遍历并对每个对象分别做处理,jquery已经为我们提供的很方便的方法进行集合的处理。

包括两种形式:

$(”p”).each(function(i){this.style.color=[‘#f00′,’#0f0′,’#00f’][ i ]})//为索引分别为0,1,2的p元素分别设定不同的字体颜色。$(”tr”).each(function(i) {this.style.backgroundColor=[‘#ccc’,’#fff’][i%2]})//实现表格的隔行换色效 果$(”p”).click(function(){alert($(this).html())})//为每个p元素增加了click事件,单击某个p 元素则弹出其内容
6、扩展我们需要的功能

$.extend({min: function(a, b){return a < b?a:b; },max: function(a, b){return a > b?a:b; }}); //为jquery扩展了min,max两个方法
使用扩展的方法(通过“$.方法名”调用):

alert(”a=10,b=20,max=”+$.max(10,20)+”,min=”+$.min(10,20));
7、支持方法的连写
所谓连写,即可以对一个jquery对象连续调用各种不同的方法。例如:

$(”p”).click(function(){alert($(this).html())}).mouseover(function(){alert(’mouse over event’)}).each(function(i){this.style.color=[‘#f00′,’#0f0′,’#00f’][ i ]});
8、操作元素的样式
主要包括以下几种方式:

$(”#msg”).css(”background”); //返回元素的背景颜色$(”#msg”).css(”background”,”#ccc”) //设定元素背景为灰色$(”#msg”).height(300); $(”#msg”).width(”200″); //设定宽高$(”#msg”).css({ color: “red”, background: “blue” });//以名值对的形式设定样式$(”#msg”).addClass(”select”); //为元素增加名称为select的class$(”#msg”).removeClass(”select”); //删除元素名称为select的class$(”#msg”).toggleClass(”select”); //如果存在(不存在)就删除(添加)名称为select的class

9、完善的事件处理功能
jQuery已经为我们提供了各种事件处理方法,我们无需在html元素上直接写事件,而可以直接为通过jquery获取的对象添加事件。$(”#msg”).click(function(){alert(”good”)}) //为元素添加了单击事件$(”p”).click(function(i){this.style.color= [‘#f00′,’#0f0′,’#00f’][ i ]})//为三个不同的p元素单击事件分别设定不同的处理
jQuery中几个自定义的事件:
(1)hover(fn1,fn2):一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。

//当鼠标放在表格的某行上时将class置为over,离开时置为out。$(”tr”).hover(function(){$(this).addClass(”over”);},function(){$(this).addClass(”out”);});
(2)ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。

$(document).ready(function(){alert(”Load Success”)})//页面加载完毕提示“Load Success”,相当于onload事件。与$(fn)等价
(3)toggle(evenFn,oddFn): 每次点击时切换要调用的函数。如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。

// 每次点击时轮换添加和删除名为selected的class。$(”p”).toggle(function() {$(this).addClass(”selected”);},function(){$(this).removeClass(”selected”);});
(4)trigger(eventtype): 在每一个匹配的元素上触发某类事件。
例如:

$(”p”).trigger(”click”); //触发所有p元素的click事件
(5)bind(eventtype,fn),unbind(eventtype): 事件的绑定与反绑定
从每一个匹配的元素中(添加)删除绑定的事件。例如:

$(”p”).bind(”click”, function(){alert($(this).text());}); //为每个p元素添加单击事件$(”p”).unbind(); //删除所有p元素上的所有事件$(”p”).unbind(”click”) //删除所有p元素上的单击事件
10、几个实用特效功能
其中toggle()和slidetoggle()方法提供了状态切换功能。
如toggle()方法包括了hide()和show()方法。
slideToggle()方法包括了slideDown()和slideUp方法。

11、几个有用的jQuery方法

$.browser.浏览器类型:检测浏览器类型。有效参数:safari, opera, msie, mozilla。如检测是否ie:$.browser.isie,是ie浏览器则返回true。

$.each(obj, fn):通用的迭代函数。可用于近似地迭代对象和数组(代替循环)。如

$.each( [0,1,2], function(i, n){ alert( “Item #” + i + “: ” + n ); });
等价于:

var tempArr=[0,1,2];for(var i=0;i
也可以处理json数据,如

$.each( { name: “John”, lang: “JS” }, function(i, n){ alert( “Name: ” + i + “, Value: ” + n ); });
结果为:

Name:name, Value:JohnName:lang, Value:JS
$.extend(target,prop1,propN):用一个或多个其他对象来扩展一个对象,返回这个被扩展的对象。这是jquery实现的继承方式。
如:

代码
$.extend(settings, options);//合并settings和options,并将合并结果返回settings中,相当于options继承setting并将继承结 果保存在setting中。var settings = $.extend({}, defaults, options);//合并defaults和options,并将合并结果返回到setting中而不覆盖default内容。
可以有多个参数(合并多项并返回)

$.map(array, fn):数组映射。把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。
如:

var tempArr=$.map( [0,1,2], function(i){ return i + 4; });tempArr内容为:[4,5,6]var tempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; });tempArr内容为:[2,3]$.merge(arr1,arr2):合并两个数组并删除其中重复的项目。如:$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]$.trim(str):删除字符串两端的空白字符。如:$.trim(” hello, how are you? “); //返回”hello,how are you? ”

12、解决自定义方法或其他类库与jQuery的冲突
很多时候我们自己定义了$(id)方法来获取一个元素,或者其他的一些js类库如prototype也都定义了$方法,如果同时把这些内容放在一起就会引起变量方法定义冲突,Jquery对此专门提供了方法用于解决此问题。
使用jquery中的jQuery.noConflict();方法即可把变量$的控制权让渡给第一个实现它的那个库或之前自定义的$方法。之后应用 Jquery的时候只要将所有的$换成jQuery即可,如原来引用对象方法$(”#msg”)改为jQuery(”#msg”)。
如:jQuery.noConflict();// 开始使用jQueryjQuery(”div p“).hide();// 使用其他库的 $()$(”content”).style.display = ‘none’;


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

函数$.ajax的解析

函数:$.ajax(properties)
功能:用一个http请求访问一个远程页面
返回:XMLHttpRequest
参数:

(String)? url  请求地址;
(String)? type?? 请求类型(”GET”,”POST”);
(String)? dataType:从服务器端返回的数据类型(”xml”,”html”,”script”,”json”);
(Boolean)? ifModified:根据Last-Modified header判断返回内容是否改变;
(Number)? timeout:请求超时;
(Boolean)? global:对此次请求是否引起全局的ajax事件出来,默认true;
(Function)? error:错误处理函数;
(Function)? complete:请求完成后的处理函数;
(Object|String)? data:发送到服务器端的数据;
(String) contentType :默认”application/x-www-form-urlencoded”;
(Boolean)? processData :传输到服务器端的数据默认被转换到query string中以适合默认”application/x-www-form-urlencoded”方式,如果你想以DOMDocuments方式传输数据,就将该选项设为false;
(Boolean)? aysnc:是否异步传输,默认为true;
(Function)? beforeSend:请求前响应函数;

例子:(加载并且执行一个js文件)

jQuery Code

$.ajax({
type: “GET”,
url: “test.js”,
dataType: “script”
})

向服务器保存数据并且响应用户的动作完成

jQuery Code

$.ajax({
type: “POST”,
url: “some.php”,
data: “name=John&location=Boston”,
success: function(msg){
alert( “Data Saved: ” + msg );
}
});

jQuery Code

var html = $.ajax({
url: “some.php”,
async: false
}).responseText;

jQuery Code

var xmlDocument = [create xml document];
$.ajax({
url: “page.php”,
processData: false,
data: xmlDocument,
success: handleResponse
});

函数$.ajaxSetup的解析

函数:$.ajaxSetup(settings),$.ajaxTimeout(time)
功能:设定请求的一些参数
返回: undefined

例子:

$.ajaxSetup( {
url: “/xmlhttp/”,
global: false,
type: “POST”
} );
$.ajaxTimeout( 5000 );

函数$.get的解析

函数:$.get(url, params, callback),$.getIfModified(url, params, callback),
$.getJSON(url, params, callback),$.getScript(url, callback)
功能:get方式提交数据

例子:

$.get(”test.cgi”,
{ name: “John”, time: “2pm” },
function(data){
alert(”Data Loaded: ” + data);
});

函数$.post

函数:$.post(url, params, callback)

功能:post方式提交数据

例子:

$.post(”test.cgi”,
{ name: “John”, time: “2pm” },
function(data){
alert(”Data Loaded: ” + data);
});

函数ajaxComplete的解析

函数:ajaxComplete(callback),ajaxComplete(callback),ajaxSend(callback)

ajaxStart(callback),ajaxStop(callback),ajaxSuccess(callback)

功能:XMLHttpRequest状态改变过程中各个响应处理函数

例子:

$(”#msg”).ajaxComplete(function(request, settings){
$(this).append(”<li>Request Complete.</li>”);
});
$(”#msg”).ajaxSuccess(function(request, settings){
$(this).append(”<li>Successful Request!</li>”);
});
$(”#loading”).ajaxStop(function(){
$(this).hide();
});
$(”#msg”).ajaxSend(function(request, settings){
$(this).append(”<li>Starting request at ” + settings.url + “</li>”);
});

函数load的解析

函数:load(url, params, callback),loadIfModified(url, params, callback)

功能:加载html内容
返回:jQuery对象
参数:同get和post方式提交
例子:

代码

//jQuery Code
$(”#feeds”).load(”feeds.html”);
Before
<div id=”feeds”></div>
Result:
<div id=”feeds”><b>45</b> feeds found.</div>

//jQuery Code
$(”#feeds”).load(”feeds.html”,
{limit: 25},
function() { alert(”The last 25 entries in the feed have been loaded”); }

函数serialize的解析

函数:serialize()

功能:将表单元素和值序列化成string
返回:String
例子:

jQuery Code
$(”input[@type=text]“).serialize();
Before
<input type=’text’ name=’name’ value=’John’/>
<input type=’text’ name=’location’ value=’Boston’/
Result
name=John&location=Boston


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

jQuery-Selectors(选择器)的使用(一、基本篇)

本系列文章主要讲述jQuery框架的选择器(Selectors)使用方法,我将以实例方式进行讲述,以简单,全面为基础,不会涉及很深,我的学习方法:先入门,后进阶!
本系列文章分为:基本篇、层次篇、简单篇、内容篇、可见性篇、属性篇、子元素篇、表单篇、表单对象属性篇共9篇文章。
您对本系列文章有任何建议或意见请发送到邮箱:sjzlgt@qq.com
由于是第一次写技术性系列文章,难免会出错或代码BUG,欢迎指出,在此谢过!
您可以到jQuery官网来学习更多的有关jQuery知识。

1. #id用法
定义:根据给定的ID匹配一个元素。
返回值:Element
参数:id (String) : 用于搜索的,通过元素的 id 属性中给定的值
实例:将ID为”div_red”的DIV的边框改为红色
代码:$(“#div_red”).css(“border”,”red 2px solid”); //点击按钮一将执行这句代码
DIV ID=”div_red”

扩展:#id中的id可以是页面任何元素的id,如input,btuuon,div,table,span等等

2. element用法
定义:根据给定的元素名匹配所有元素。
返回值:Array<Element>
参数:element (String) : 一个用于搜索的元素。指向 DOM 节点的标签名。
实例:将页面<P>标记内的文字颜色改为红色
代码:$(“p”).css(“color”,”red”); //点击按钮二将执行这句代码

P标记1 ID=”p1″

P标记2 无ID

扩展:参数值可以是页面任何元素,如div,button,div,table,tr,td,p,h1,span,input

3. .class用法
定义:根据给定的类(样式名称)匹配元素。
返回值:Array<Element>
参数:class (String) 一个用以搜索的类(样式名称)。一个元素可以有多个类(样式名称),只要有一个符合就能被匹配到。
实例:将页面所有引用了”.red_test”样式的元素背景颜色改为蓝色
代码:$(“.red_test”).css(“background-color”,”blue”); //点击按钮三将执行这句代码
DIV ID=”div_red_1″ calss=”red_test”
DIV ID=”div_red_2″ 无class

SPAN ID=”span_red_1″ calss=”red_test”

扩展:可以看一下jQuery官网上Selectors/.class的实例。

4. *用法
定义:匹配所有元素 多用于结合上下文来搜索。
返回值:Array<Element>
实例:查看页所有元素的数量
代码:$(“*”).length; //点击按钮四将执行这句代码
扩展:可以看一下jQuery官网上Selectors/*的实例。

5. selector1,selector2,selectorN用法
定义:将每一个选择器匹配到的元素合并后一起返回。你可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。
返回值:Array<Element>
参数:selector1 (Selector) : 一个有效的选择器 selector2 (Selector) : 另一个有效的选择器 selectorN (Selector) : (可选) 任意多个有效选择器
实例:将页面上所有引用名称为”li_test”样式的<Li>元素和ID为”li_red”的<Li>元素的边框改为绿色,宽度为5px
代码:$(“.red_test,#btn_5”).css(“border”,”5px solid Green”); //点击按钮五将执行这句代码

* Li
* Li id=”li_red”
* Li
* Li
* Li
* Li

jQuery选择器的使用灵活度非常高,至此,您可以利用本文中的四种选择器和上一篇中所讲的选择器组合并看效果,相信你会看到足以令你震撼的结果!
1. ancestor descendant用法
定?? 义:在给定的祖先元素下匹配所有的符合条件后代元素
返回值:Array
参?? 数:ancestor (Selector):任何有效选择器 descendant (Selector):用以匹配元素的选择器,并且它是第一个选择器的后代元素
实?? 例:将ID为”div_1″的DIV中所有的Input元素的背景色改为红色
代码: $(“div_1 input”).css(“background-color”,”red”); //点击按钮一将执行这句代码

DIV ID=”div_1″
DIV ID=”div_2″
DIV ID=”div_3″
DIV ID=”div_4″

DIV ID=”div_5″
DIV ID=”div_5_1″

注意:本实例请与第2个用法的实例作对比,看其控制范围!
2. parent > child用法
定?? 义:在给定的父元素下匹配所有的子元素
返回值:Array
参?? 数:parent (Selector):任何有效选择器 child (Selector): 用以匹配元素的选择器,并且它是第一个选择器的子元素
实?? 例:将ID为”div_a1″的DIV中所有的Input元素的背景色改为红色
代码: $(“#div_a1 > input”).css(“background-color”,”red”); //点击按钮二将执行这句代码

DIV ID=”div_a1″
DIV ID=”div_a2″
DIV ID=”div_a3″
DIV ID=”div_a4″

DIV ID=”div_a5″
DIV ID=”div_a5_1″
3. prev + next用法
定?? 义:匹配所有紧接在 prev 元素后的 next 元素
返回值:Array
参?? 数:prev (Selector):任何有效选择器 next (Selector):一个有效选择器并且紧接着第一个选择器
实?? 例:将ID为”div_b1″的DIV中所有span元素后紧跟的input元素的背景色改为红色
代码:$(“#div_b1 span + input”).css(“background-color”,”red”); //点击按钮三将执行这句代码

DIV ID=”div_b1″
span

DIV ID=”div_b2″
span
DIV ID=”div_b3″
span
DIV ID=”div_b4″
span

DIV ID=”div_b5″
DIV ID=”div_b5_1″ span

注意:第一个选择器我用了ancestor descendant用法,您也可以尝试其它用法。本例请与下面第4点的实例作对比并看效果!
4. prev ~ siblings用法
定?? 义:匹配 prev 元素之后的所有 siblings 元素
返回值:Array
参?? 数:prev (Selector):任何有效选择器 siblings (Selector):一个选择器,并且它作为第一个选择器的同辈
实?? 例:将ID为”div_c1″的DIV中所有与span元素之后平级的input元素的背景色改为红色
代码:$(“#div_c1 span ~ input”).css(“background-color”,”red”); //点击按钮四将执行这句代码

DIV ID=”div_c1″
span

DIV ID=”div_c2″
span
DIV ID=”div_c3″
span
DIV ID=”div_c4″
span

DIV ID=”div_c5″
DIV ID=”div_c5_1″ span

注意:DIV ID=”div_c1″ 和 ID=”div_c4″中的span元素前的input并未改变背景色,因为第二个选择器查找第一个选择器之后的元素

1. :first用法
定?? 义:匹配找到的第一个元素
返回值:Element
实?? 例:将ID为”ul_1″的ul中的第一个Li元素的背景色改为红色
代?? 码: $(“#ul_1 li:first”).css(“background-color”,”red”); //点击按钮一将执行这句代码

ul ID=”ul_1″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

2. :last用法
定?? 义:匹配找到的最后一个元素
返回值:Element
实?? 例:将ID为”ul_2″的ul中的最后一个Li元素的背景色改为红色
代?? 码: $(“#ul_2 li:last”).css(“background-color”,”red”); //点击按钮二将执行这句代码

ul ID=”ul_2″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

3. :not(selector)用法
定?? 义:去除所有与给定选择器匹配的元素
返回值:Array
参?? 数:selector (Selector) : 用于筛选的选择器
实?? 例:将ID为”ul_3″的ul中除最后一个Li元素以外的其他Li元素的背景色改为红色
代?? 码: $(“#ul_3 li:not(li:last)”).css(“background-color”,”red”); //点击按钮三将执行这句代码

ul ID=”ul_3″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

扩展:你可以试试执行 $(“li:not(li:last)”).css(“background-color”,”red”); 这句代码,看看有什么效果
4. :even用法
定?? 义:匹配所有索引值为偶数的元素,从 0 开始计数
返回值:Array
实?? 例:将ID为”ul_4″的ul中索引为偶数的Li元素的背景色改为红色(注:索引从0开始)
代?? 码: $(“#ul_4 li:even”).css(“background-color”,”red”); //点击按钮四将执行这句代码

ul ID=”ul_4″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

5. :odd用法
定?? 义:匹配所有索引值为奇数的元素,从 0 开始计数
返回值:Array
实?? 例:将ID为”ul_5″的ul中索引为奇数的Li元素的背景色改为红色(注:索引从0开始)
代?? 码: $(“#ul_5 li:odd”).css(“background-color”,”red”); //点击按钮五将执行这句代码

ul ID=”ul_5″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

6. :eq(index)用法
定?? 义:匹配一个给定索引值的元素
返回值:Element
参?? 数:index (Number) : 从 0 开始计数
实?? 例:将ID为”ul_6″的ul中索引为3的Li元素的背景色改为红色(注:索引从0开始)
代?? 码: $(“#ul_6 li:eq(3)”).css(“background-color”,”red”); //点击按钮六将执行这句代码

ul ID=”ul_6″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

7. :gt(index)用法
定?? 义:匹配所有大于给定索引值的元素
返回值:Array
参?? 数:index (Number) : 从 0 开始计数
实?? 例:将ID为”ul_7″的ul中索引值大于3的Li元素的背景色改为红色(注:索引从0开始)
代?? 码: $(“#ul_7 li:gt(3)”).css(“background-color”,”red”); //点击按钮七将执行这句代码

ul ID=”ul_7″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

8. :lt(index)用法
定?? 义:匹配所有小于给定索引值的元素
返回值:Array
参?? 数:index (Number) : 从 0 开始计数
实?? 例:将ID为”ul_8″的ul中索引值小于3的Li元素的背景色改为红色(注:索引从0开始)
代?? 码: $(“#ul_8 li:lt(3)”).css(“background-color”,”red”); //点击按钮八将执行这句代码

ul ID=”ul_8″

* Li 1
* Li 2
* Li 3
* Li 4
* Li 5
* Li 6
* Li 7
* Li 8

9. :header用法
定?? 义:匹配如 h1, h2, h3之类的标题元素
返回值:Array
实?? 例:将ID为”div_1″的DIV中所有header(标题)元素的背景色改为红色
代?? 码: $(“#div_1 :header”).css(“background-color”,”red”); //点击按钮九将执行这句代码

DIV ID=”div_1″P标记

span标记
H1
H2
H3
H4
H5
H6

10. :animated用法
定?? 义:匹配所有正在执行动画效果的元素
返回值:Array
实?? 例:将ID为”div_2″的DIV中没有执行动画效果的元素的背景色改为红色
代?? 码: $(“#div_2 :not(:animated)”).css(“background-color”,”red”); //点击按钮十将执行这句代码
DIV id=”div_2″
span标记

1. :input用法 定?? 义:匹配所有 input, textarea, select 和 button 元素

2. :text用法 定?? 义:匹配所有的单行文本框

3. :password用法 定?? 义:匹配所有密码框


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

namespace=”/news”? “/news”是在地址栏中显示的路径,而非目录 如:http://pc-officea3:8080/news/index.action?
在jsp中用index.action 相当于 /news/index.action 要结合地址栏中名称空间来找action


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1, 美体学堂 在链接中执行action,根据action转到指定的页面
这样传的只是admin.id,即使此链接在一个form内,也不会传form内的数据
若想传form内的数据,那么唯一的方法就是让form提交
即: 删除

ps: form传参


这样提交时数据传的是form包裹的数据,在form外的是不会被提交的。

2,

若用 /manage/news/insert.action 且在tomcat 中path=“/” 则为绝对路径,否则代表当前目录下的manage文件夹下action


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

菜单
Project -> Build Automatically
Myeclipse中Tomcat的两种部署方式
一、在Myeclipse软件中部署

1、 在Myeclipse中,创建好工程后,在Myeclipse菜单栏中选择 Windows -> Preferences -> Myeclipse -> Tomcat5,选择”Enable”;Tomact Home Directory要选择你机器上Tomcat所安装的目录。然后,再Windows -> Preferences -> Myeclipse -> Tomcat5 ->JDK,确保这个是有对应的jdk版本,若没有,则通过”Add”添加其安装路径。ok

2、选择工具栏上的按钮,在”Project”中选择你要部署的工程,然后”Add”,再选择”Tomcat”,Finish。

3、 在工具栏上选择,启动Tomcat。

4、 运行程序。在IE中输入http://localhost:8080/aa/WebRoot/index.jsp(aa为工程名字)
二、在Tomcat的server.xml配置文件中部署

1、在Tomcat下,找到conf文件下的server.xml,打开。

2、在<Host>和</host>之间加上如下代码:

1
2 <Context path=”/虚拟目录名” docBase=”目标目录位置” debug=”0″ reloadable=”true” >
3 </Context>

(严格区分大小写,当path=””时,此时的虚拟目录直接为root—>http://localhost:8080/)
参数:

?path:表示在浏览器中输入http://localhost:8080/虚拟目录名

如:path=”/aa” 则浏览器中输入http://localhost:8080/aa/index.jsp

? path 就是提供一个前缀功能。
?docBase:表示你的程序包的物理绝对路径,默认的绝对路径是???? %tomcat_home%/webapps

workDir:?? 表示是缓存文件的放置地点,可以方便跨平台移植时不用重编译。这样,你的应用程序就可以放到硬盘上的任意地方了,临时文件的存放地点不设置的话,默认存放在tomcat\work\Catalina\\localhost之下\localhost

?reloadable :为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序;为false则不自动加载。

如:
<Context path=”/” reloadable=”true” docBase=”E:\workspace\.metadata\.plugins\com.genuitec.eclipse.easie.tomcat.myeclipse\tomcat\webapps\testAuto”
workDir=”E:\workspace\.metadata\.plugins\com.genuitec.eclipse.easie.tomcat.myeclipse\tomcat\webapps\testAuto” />

在地址栏中输入:? http://localhost:8080/index.jsp 即可运行 ,不用再加上工程名如: http://localhost:8080/myproject/index.jsp??? </Host>
reloadable=”true”会自动更新classes, jsp文件??? ps: docBase要精确到工程名才可
用myeclipse 更改类文件时,其会自动编译,而tomcat就会自动更新classes文件,

问题:IE中没有显示变化结果,原因:myeclipse自动编译还未完成,在部分是很快的。
默认为false, 只会自动更新jsp文件

ps:路径要与path设置的路径相同才可看到自动发生的变化


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1, commons-fileupload-1.2.1.jar
2, commons-io-1.3.2.jar
3, commons-logging-1.0.4.jar
4, freemarker-2.3.13.jar
5, ognl-2.6.11.jar
6, struts2-core-2.1.6.jar
7, xwork-2.1.2.jar


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

?将html元素值恢复成默认值,如 <input type=”text” value = “${news.title}”>之类。 若此文本框接收的是Action传来的值作为默认值,修改后,按下reset就会恢复成此默认值,而不是null


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

?须将表中所有的字段在jsp页面中接收,不想显示出来的就将其放入<input type=”hidden” value=”表字段”>
这样在提交时,更新Action的实体类,不会因未接收一个字段,使得此字段在实体类中为Null,覆盖了原有的数据


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,在Action中:(ServletActionContext.getRequest().setAttribute
?????? 注:在配置action转发类型时要为dispatcher,不能为redirect, 因redirect忽略request的参数!
?2, 在页面中:${news.title}
?
forward 与 redirect 区别:

1.从地址栏显示来说
forward 地址栏还是原来的地址.
redirect 地址栏显示的是新的URL

2.从数据共享来说
forward:? 转发页面和转发到的页面可以共享request,session里面的数据.
redirect: 转发页面和转发到的页面不可以共享request里面的数据,但可以共享
session里面的数据.

3.应用
forward 是服务器内部的一种操作,只能在同一个Web应用程序内的资源之间转发
请求.
redirect 是服务器通知客户端,让客户端重新发起请求,不仅可以重定向到当前
应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,
甚至是使用绝对URL重定向到其他站点的资源.

4.从效率来说
forward:高.
redirect:低.

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容
读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从
哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,(不会传request,故其不能共用
request中的数据)告诉浏览器重新去请求那个地址.所以地址栏显示的是新的
URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次
response。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

Action中只要定义一个变量,及set,get方法,那么当页面传来数据,变量名相同时就会调用Action的set方法进行赋值
在页面中接收Action数据时,会将Action的数据自动存入到request中,只要没设置type=”redirect”,那么在页面中直接用${userName}就会自动得到数据。

页面 ————request ———Action ————request —————页面


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1, Action中传送

方式(1) Collection actionMessage = new ArrayList ();
actionMessage.add(“输入有误!”);
setActionMessages(actionMessage);

方式(2)addActionMessage(“输入有误!”)

2,Struts.xml 中配置

success.jsp
/error.jsp

3,页面接收

注意:

如果将result标签的type属性设置为redirect则在Action即使使用了

addActionMessage(“输入有误!”);
setActionMessages(actionMessage);

在JSP页面也不能显示相应的信息


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,WEB执行流程:发送jsp页面请求,Servlet接收,读取web.xml文件 ,据传来的路径转到对应的Servlet,进行操作
Servlet向jsp页面输出,会得到执行的是文字,图片之类而form指定的action因还没有submit,故此时不会得到执行
因图片是要读取加载的,故可在其中令其执行action
如:
即:页面显示时执行action

2,在Web.xml中配置:

index.action


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

相同的部分:
客户端发送jsp页面请求,Servlet接收,读取web.xml文件 ,据传来的路径转到对应的Servlet,进行操作,
不同在于操作时方法名是否固定,是否须extends框架提供的类
servlet要自定义接收参数,getParameter, 手动设置响应返回,
PrintWriter out = response.getWriter();
out.print( “

” );
而struts接收数据已由框架本身完成接受,而转到某一页面则可指定,不是手动再创建。

在web.xml三种框架的配置比较

ps: 任意指定,如可以都为*.action

1, Servlet

AutoServlet

com.servlet.AutoServlet



AutoServlet
/AutoServlet

AutoServlet extends HttpServlet,实现其get,post方法
当jsp路径为/AutoServlet时执行get方法,
可看出:所有的操作类都要在web.xml中配置,不能集上管理这些servlet,而Struts分别提供了struts-config.xml,struts.xml集中管理操作类的文件

执行的方法固定,get,set

2,Struts1.x

action
org.apache.struts.action.ActionServlet
config /WEB-INF/struts-config.xml


action
*.do

当页面传来*.do时执行action,这是Struts系统提供的Servlet,它会读取中所配置的
/WEB-INF/struts-config.xml文件,进一步找到具体的action进行操作。

action 方法名为execute, 若其它任意,不过必须继承Struts1.x提供的action类

3,Struts2.0

struts2

org.apache.struts2.dispatcher.FilterDispatcher



struts2
*.action

当页面传来*.action时执行FilterDispatcher,它会读取/src/struts.xml的文件,从而执行对应的类
action方法名任意,类继承谁没有限制,也就是说任何类都可以成为一个Struts1.x中的action

框架名称 是否继承特定类 方法名 集中管理action类文件

servlet 是,HttpServlet get, post 无, 一切都在web.xml中配置

struts1.x 是,Action,DispatchAction execute, 任意 有,struts-config.xml

struts2.0 任意 任意 有,struts.xml

struts1.x struts2.0 细节区别:

(1), 类形式:struts2.0的action 类似于struts1.x中的DispatchAction 不过前者类随意继承,没有限制,而后者强制要继承自Dispath才可执行.
(2), 运行: struts2.0的action可直接在 地址栏中用 http://pc-officea3:8080/testWeb/index.action.执行测试,而struts1.x必须要有jsp页面才可
(3), 测试:struts1.xservlet API execute方法I execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)暴露了servlet AP,在测试时须在jsp页面中提交,生成request才可进行, 而struts2.0 方法名是任意的,不限制的如insert()无形参,可直接用JUNITT等生成对象,用 myobject.set来给值,此步相当于jsp页面提交,最大的好处是不用转到jsp页面,生成request才能得到执行,因struts2.0 action是任意类,故可如一般类一样进行测试!!