easyUI 学习

)省份-城市-区域三级联动【struts2 + ajax +非数据库版】

(1)省份-城市-区域,基于jQuery的AJAX三级联动,用Struts2整合AJAX【非数据库版】

$.ajax(

{

type:"POST",

url:"${pageContext.request.contextPath}/findCityByProvinceRequest?id="+new Date().getTime(),

data:{"province":province},

success:function(backData,textStatus,ajax){}

}

);

注意:上面的每个key值不能乱写


<select id="province">

<option>选择省份</option>

<option>广东</option>

<option>湖南</option>

</select>

<select id="city">

<option>选择城市</option>

</select>


<script type="text/javascript">

$("#province").change(function(){

//删除原城市下拉框中的内容,除第一项外

$("#city option:gt(0)").remove();

var province = $("#province option:selected").text();

if("选择省份" != province){

$.ajax({

"type":"POST",

"url":"${pageContext.request.contextPath}/findCityByProvince?time="+new Date().getTime(),

"sendData":{"province":province},

"success":function(backData,textStatus,ajax){

//js对象

var city = backData.cityList;

//jquery对象

var $city = $(city);

//each()

$city.each(function(){

//this表示每个城市

var $option = $("<option>" + this + "</option>");

$("#city").append( $option );

});

}

});

}

});

</script>


public class ProvinceCityAction extends ActionSupport{

private String province;//广东

public void setProvince(String province) {

this.province = province;

}

public String findCityByProvince() throws Exception {

cityList = new ArrayList<String>();

if("广东".equals(province)){

cityList.add("湛江");

cityList.add("汕头");

}else if("湖南".equals(province)){

cityList.add("邵阳");

cityList.add("浏阳");

}

return "ok";

}

private List<String> cityList;

public List<String> getCityList() {

return cityList;

}

/**

* var backData = {

*                "cityList":["邵阳","浏阳"]

*             }

*/

}


<struts>

<package name="timePackage" extends="json-default" namespace="/">

<global-results>

<result name="ok" type="json"/>

</global-results>

<!-- 获取服务端时间 -->

<action

name="loadTimeRequest"

class="cn.itcast.javaee.js.time.TimeAction"

method="loadTimeMethod"/>

<!-- 检查用户名和密码是否存在 -->

<action

name="checkRequest"

class="cn.itcast.javaee.js.register.RegisterAction"

method="checkMethod"/>

<!-- 根据省份查询城市 -->

<action

name="findCityByProvince"

class="cn.itcast.javaee.js.provincecity.ProvinceCityAction"

method="findCityByProvince"/>

</package>

</struts>

二)学会查阅文档,使用jQuery-EasyUI,构建自已的Web页面

(1)网址:www.jeasyui.com,下载并参考学习<<jQuery EasyUI v1.3.5官方API中文版.exe>>手册

(2)什么是jQuery-EasyUI

参见<<什么是EasyUI.JPG>>

是一种第三方组织开发的一款基于jQuery的,简单易用的,功能强大的

WEB[后台前端]JavaScript现成的组件库

注意:今天的EasyUI组件库的版本较高,需要高版本浏览器支持,

中低版本浏览器会有不能正常执行的情况

(3)JavaScript,AJAX,JSON,jQuery,EasyUI分别能解决什么问题

JS:基于浏览器对web页面中的节点进行操作,比较麻烦

jQuery:基于浏览器简化对web页面中的节点进行操作,做到了write less do more

AJAX:基于浏览器与服务端进行局部刷新的异步通讯编程模式

JSON:简化自定义对象的创建与AJAX数据交换轻量级文本

EasyUI:快速基于现成的组件创建自已的web页面

组件:是指已经由第三方开源组织写好的,直接可以使用的功能界面,例如:form,layout,tree...

注意:我们学的都是零散的组件,项目中需要将其装配起来,方可构建完整的web页面,

EasyUI只是众多前端WEB组件之一

(4)jQuery-EasyUI快速入门----可折叠功能的面板

第一步:创建一个js-day05这么一个web工程

第二步:在WebRoot目录下创建00-base.html

第三步:在WebRoot目录下创建js和themes目录,导入官方文件

参见<< jquery-easyui-1.3.6文件夹>>

第四步:在00-base.html 文件的<head>标签中引入如下文件


<!-- 引入外部CSS文件 -->

<link rel="stylesheet" href="../themes/icon.css" type="text/css"></link>

<link rel="stylesheet" href="../themes/default/easyui.css" type="text/css"></link>

<!-- 引入外部JS文件 -->

<script type="text/javascript" src="../js/jquery.min.js"></script>

<script type="text/javascript" src="../js/jquery.easyui.min.js"></script>

第五步:在00-base.html 文件的<body>标签中创建如下<div>标签


<div

id="p"

class="easyui-panel"

style="width:500px;height:200px;padding:10px;"

title="我的面板"

iconCls="icon-save"

collapsible="true">

内容<br/>

内容<br/>

内容<br/>

内容<br/>

</div>

(5)EasyUI组件

(01)   layout布局


<!-- 布局面板 -->

<div data-options="fit:true" id="cc" class="easyui-layout" style="width:600px;height:400px;">

<!-- 区域面板 -->

<div data-options="region:‘north‘,title:‘北‘,split:false,collapsible:true" style="height:100px;"></div>

<div data-options="region:‘south‘,title:‘南‘,split:false,collapsible:true" style="height:100px;"></div>

<div data-options="region:‘east‘,title:‘东‘,split:false,collapsible:false,minWidth:150,maxWidth:150" style="width:100px;"></div>

<div data-options="region:‘west‘,title:‘西‘,split:false,collapsible:false,minWidth:150,maxWidth:150" style="width:100px;"></div>

<div data-options="region:‘center‘,title:‘中‘,iconCls:‘icon-reload‘,href:‘/js-day05/06_image.html‘,collapsible:false" style="padding:5px;background:#eee;"></div>

</div>


<script type="text/javascript">

//浏览器加载web页面时触发

$(function(){

//将北边面板折叠,字符串双引单引均可

$(‘#cc‘).layout(‘collapse‘,‘north‘);

//休息3秒

window.setTimeout(function(){

//将南边面板折叠,字符串双引单引均可

$(‘#cc‘).layout(‘collapse‘,‘south‘);

},"3000");

});

</script>


<body class="easyui-layout">

<!-- 北 -->

<div data-options="region:‘north‘" style="height:150px"></div>

<!-- 中 -->

<div data-options="region:‘center‘">

<!-- 将中拆分边西和中二部份 -->

<div class="easyui-layout" data-options="fit:true">

<!-- 东 -->

<div data-options="region:‘west‘" style="width:200px"></div>

<!-- 中 -->

<div data-options="region:‘center‘"></div>

</div>

</div>

</body>

(02)accordion分类


<!-- 容器 -->

<div data-options="border:true,animate:true,multiple:false,selected:-1" id="aa" class="easyui-accordion" style="width:300px;height:500px;">

<!-- 面板 -->

<div title="Title1" data-options="iconCls:‘icon-save‘" style="overflow:auto;padding:10px;">

内容1

</div>

<div title="Title2" data-options="iconCls:‘icon-reload‘" style="padding:10px;">

内容2

</div>

<div title="Title3" data-options="iconCls:‘icon-reload‘,collapsible:true">

内容3

</div>

</div>


<script type="text/javascript">

$(function(){

//增加一个面板

$("#aa").accordion("add",{

"title":"Title4",

"content":"内容4",

"selected":false,

"iconCls":"icon-search"

});

//休息3秒

window.setTimeout(function(){

//删除4号面板

$("#aa").accordion("remove",3);

//取消选择1号面板

$("#aa").accordion("unselect",0);

},"3000");

});

</script>

(3)linkbutton按钮


<a id="btn-add" class="easyui-linkbutton" data-options="iconCls:‘icon-add‘">

增加

</a>

<a id="btn-find" class="easyui-linkbutton" data-options="iconCls:‘icon-search‘">

查询

</a>

<a id="btn-update" class="easyui-linkbutton" data-options="iconCls:‘icon-edit‘">

修改

</a>

<a id="btn-delete" class="easyui-linkbutton" data-options="iconCls:‘icon-remove‘">

删除

</a>


<script type="text/javascript">

/*

$("#btn-add").click(function(){

//将该按失效

$("#btn-add").linkbutton("disable");

});

$("#btn-add").dblclick(function(){

//将该按失效

$("#btn-add").linkbutton("disable");

});

*/

//参数一:字符串类型的事件,多个事件之间通过空格分隔,事件名称符合jquery事件名写法

//参数二:处理函数

$("#btn-add").bind("click dblclick",function(){

//将该按失效

$("#btn-add").linkbutton("disable");

});

</script>

(04)tabs选项卡


<!-- 容器面板 -->

<div

id="tt"

class="easyui-tabs"

style="width:500px;height:250px;"

data-options="plain:false,border:true,tools:[{

iconCls:‘icon-add‘,

handler:function(){

alert(‘添加‘)

}

},{

iconCls:‘icon-remove‘,

handler:function(){

alert(‘删除‘)

}

}],selected:-1">

<!-- 选项卡面板 -->

<div title="Tab1" data-options="closable:true" style="padding:20px">

tab1

</div>

<div title="Tab2" data-options="closable:true" style="overflow:auto;padding:20px;">

tab2

</div>

<div title="Tab3" data-options="iconCls:‘icon-reload‘,closable:true" style="padding:20px;">

tab3

</div>

</div>


<script type="text/javascript">

$(document).ready(function(){

$("#tt").tabs("add",{

"title":"Tab4",

"content":"tab4",

"selected":false,

"closable":true

});

});

</script>


<script type="text/javascript">

//定位四个按钮,同时添加单击事件

$("a").click(function(){

//获取按钮的文本

var tip = $(this).text();

//去空格

tip = $.trim(tip);

//如果是"增加部门"

if("增加部门" == tip){

//是否已有相同的tabs选项卡打开

var flag = $("#tt").tabs("exists",tip);

//如果不存在相同的tabs选项卡打开

if(!flag){

//创建一个tabs选项卡

$("#tt").tabs("add",{

"title":tip,

"href":"${pageContext.request.contextPath}/addGroup.jsp",

"selected":true,

"closable":true

});

}

}

});

</script>

(05)pagination分页框


<!--

total:记录总数100

pageSize:每页显示多少条记录5

pageNumber:当前页号1

pageList:[5,10,15]表示可供选择中每页显示多少条记录,

注意:pageSize的值必须是pageList数组值之一

-->

<div

id="pp"

class="easyui-pagination"

data-options="total:100,pageSize:5,pageNumber:1,pageList:[5,10,15],showPageList:true,showRefresh:false,afterPageText:‘页‘"

style="background:#efefef;border:1px solid #ccc;width:400px">

</div>


<script type="text/javascript">

$("#pp").pagination({

//pageNumber当前页号,例如1

//pageSize获取多少条记录,例如:5

//以上二个参数,需要谁,就接收谁,不一定二个都同时出现,参数名可以任意

"onSelectPage":function(pageNumber,pageSize){

alert(pageNumber + ":" + pageSize);

}

});

</script>

一)学会查阅文档,使用jQuery-EasyUI,构建自已的Web页面

(1)网址:www.jeasyui.com,下载并参考学习<<jQuery EasyUI v1.3.5官方API中文版.exe>>手册

(2)什么是jQuery-EasyUI

参见<<什么是EasyUI.JPG>>

是一种第三方组织开发的一款基于jQuery的,简单易用的,功能强大的

WEB前端JavaScript现成的组件库

注意:今天的EasyUI组件库的版本较高,需要高版本浏览器支持,

中低版本浏览器会有不能正常执行的情况

(3)JavaScript,AJAX,JSON,jQuery,EasyUI分别能解决什么问题

JS:基于浏览器对web页面中的节点进行操作,比较麻烦

jQuery:基于浏览器简化对web页面中的节点进行操作,做到了write less do more

AJAX:基于浏览器与服务端进行局部刷新的异步通讯编程模式

JSON:简化自定义对象的创建与AJAX数据交换轻量级文本

EasyUI:快速基于现成的组件创建自已的web页面

组件:是指已经由第三方开源组织写好的,直接可以使用的功能界面,例如:form,layout,tree...

注意:我们学的都是零散的组件,项目中需要将其装配起来,方可构建完整的web页面,

EasyUI只是众多前端WEB组件之一

(4)jQuery-EasyUI快速入门----可折叠功能的面板

第一步:创建一个js-day05这么一个web工程

第二步:在WebRoot目录下创建00-base.html

第三步:在WebRoot目录下创建js和themes目录,导入官方文件

参见<< jquery-easyui-1.3.6文件夹>>

第四步:在00-base.html 文件的<head>标签中引入如下文件


<!-- 引入外部CSS文件 -->

<link rel="stylesheet" href="../themes/icon.css" type="text/css"></link>

<link rel="stylesheet" href="../themes/default/easyui.css" type="text/css"></link>

<!-- 引入外部JS文件 -->

<script type="text/javascript" src="../js/jquery.min.js"></script>

<script type="text/javascript" src="../js/jquery.easyui.min.js"></script>

第五步:在00-base.html 文件的<body>标签中创建如下<div>标签


<div

id="p"

class="easyui-panel"

style="width:500px;height:200px;padding:10px;"

title="我的面板"

iconCls="icon-save"

collapsible="true">

内容<br/>

内容<br/>

内容<br/>

内容<br/>

</div>

(5)EasyUI组件

(06)form表单

》validatebox验证框

姓名:必填/1-6个字符/必填中文

邮箱:必填/1-30个字符/必填符合邮箱格式/后缀必须是com或cn


<div style="margin:100px"></div>

用户名:

<input id="vv"/>

<script type="text/javascript">

$("#vv").validatebox({

required:true,

validType:["length[1,4]","zhongwen"]

});

</script>

<script type="text/javascript">

//自定义验证规则

$.extend($.fn.validatebox.defaults.rules, {

zhongwen : {

validator: function(value){//value表示在文本框中输入的内容

if(/^[\u3220-\uFA29]+$/.test(value)){

return true;

}

},

message: "用户名必须填中文"

}

});

</script>

思考:检查邮箱的扩展名只能是{‘com‘,‘cn‘}

》combobox下拉列表框

设置下拉列表框默认值


你所在的城市:

<select id="cc" class="easyui-combobox" name="city" style="width:150px;">

<option>aitem1</option>

<option>bitem1</option>

<option>bitem2</option>

<option>citem1</option>

<option>citem2</option>

<option>citem3</option>

<option>ditem1</option>

<option>ditem2</option>

<option>ditem3</option>

<option>ditem4</option>

</select>

<script type="text/javascript">

$(function(){

$("#cc").combobox("setValue","长沙");

});

</script>


你所在的城市:

<input id="cc" name="city" value="广州"/>

<script type="text/javascript">

$("#cc").combobox({

url:"combobox_data.json",

valueField:"id",

textField:"text"

});

//textField表示在下拉框中看得见的内容,<option>长沙</option>

//valueField表示在下拉框中看不见的内容,用于向后台传递数据<option value="cs">长沙</option>

</script>

combobox_data.json:


[

{

"id":"gz",

"text":"广州"

},

{

"id":"zs",

"text":"中山"

},

{

"id":"fs",

"text":"佛山"

},

{

"id":"sz",

"text":"深圳",

"selected":true

},

{

"id":"yj",

"text":"阳江"

}

]

》datebox日期选择框

显示yyyy-mm-dd格式,

添加<script type="text/javascript" src="locale/easyui-lang-zh_CN.js"></script>

选中日期并显示选中的日期


入职时间:<input id="dd" type="text"></input>

<script type="text/javascript">

$("#dd").datebox({

required:true

});

</script>

<script type="text/javascript">

$("#dd").datebox({

onSelect:function(date){

alert(date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate());

}

});

</script>

》numberspinner数字微调框

设置数字微调框中的值

获取数字微调框中的值


商品数量:<input type="text" size="2px" value="1"/><span></span>

<hr/>

<input id="ss" required="required" style="width:80px;">

<script type="text/javascript">

$("#ss").numberspinner({

value:1,

min:1,

max:100,

editable:true

});

</script>

<script type="text/javascript">

$("#ss").numberspinner({

onSpinUp:function(){

//获取numberspinner的当前值

var value = $("#ss").numberspinner("getValue");

//将numberspinner的当前值设置到商品数量文本框中

$("input:first").val(value).css("color","red");

//如果value值为100

if( value == 100 ){

$("span:first").html("商品已满,不能再购买了").css("color","blue");

$("input:first").attr("disabled","disabled");

}

},

onSpinDown:function(){

//获取numberspinner的当前值

var value = $("#ss").numberspinner("getValue");

//将numberspinner的当前值设置到商品数量文本框中

$("input:first").val(value).css("color","red");

//如果value值小于100

if( value < 100 ){

$("span:first").html("");

$("input:first").removeAttr("disabled");

}

}

});

</script>

》slider滑动条框

拖动滑块,将值同步显示到span标签中


身高:<span>150</span><span id="tip"></span>

<div style="margin:50px">

<input

id="ss"

class="easyui-slider"

value="0"

style="width:600px;height:500px"

data-options="max:180,min:150,mode:‘v‘,showTip:true,rule:[150,‘|‘,160,‘|‘,170,‘|‘,180]"/>

</div>

<script type="text/javascript">

$("#ss").slider({

onChange:function(newValue){

$("span:first").text(newValue);

if(newValue == 180){

$("#tip").text("你真高呀");

}else if(newValue >= 170){

$("#tip").text("你不错呀");

}else if(newValue >= 160){

$("#tip").text("你可以呀");

}

}

});

</script>

(07)progressbar进度条

》每隔1秒让进度条按随机数填充,直至充满进度条刻度


进度条:

<div id="p" style="width:400px;"></div>

<script type="text/javascript">

$("#p").progressbar({

width:"auto",

height:44,

value:0

});

</script>

<input type="button" value="开始" style="font-size:111px"/>

<script type="text/javascript">

var timeID = null;

//随机产生1-9之间的整数,包含1和9

function getNum(){

return Math.floor(Math.random()*9)+1;

}

$(":button").click(function(){

timeID = window.setInterval(function(){

//获取随机数,例如:9

var num = getNum();

//获取进度条当前值,例如:99

var value = $("#p").progressbar("getValue");

//如果随机数加当前值小于100的话

if(value + num < 100){

//填充进度条当前值

$("#p").progressbar("setValue",value+num);

}else{

//将进度条当前值设置为100

$("#p").progressbar("setValue",100);

//停止定时器

window.clearInterval(timeID);

//将"开始"按钮生效

$(":button").removeAttr("disabled");

}

},200);

//将"开始"按钮失效

$(this).attr("disabled","disabled");

});

</script>

(08)window窗口

》单击按钮,打开或关闭一个窗口


<input id="open1" type="button" value="打开窗口1"/>

<input id="open2" type="button" value="打开窗口2"/>

<hr/>

<div id="win1"></div>

<div id="win2"></div>

<script type="text/javascript">

$("#open1").click(function(){

$("#win1").window({

title:"我的窗口1",

width:200,

height:300,

top:100,

left:400,

collapsible:false,

minimizable:false,

maximizable:false,

closable:true,

draggable:false,

resizable:false,

shadow:false,

modal:false,

href:"08_datebox.html"

});

});

$("#open2").click(function(){

$("#win2").window({

title:"我的窗口2",

width:200,

height:300,

top:100,

left:800,

collapsible:false,

minimizable:false,

maximizable:false,

closable:true,

draggable:false,

resizable:false,

shadow:false,

modal:false

});

});

</script>

(09)dialog对话框

》单击按钮,打开或关闭一个对话框


<input id="open1" type="button" value="打开对话框1"/>

<hr/>

<div id="dd1"></div>

<script type="text/javascript">

$("#open1").click(function(){

$("#dd1").dialog({

width:300,

height:400,

left:400,

top:100,

title:"对话框1",

toolbar:[

{

text:‘编辑‘,

iconCls:‘icon-edit‘,

handler:function(){alert(‘edit‘)}

},

{

text:‘帮助‘,

iconCls:‘icon-help‘,

handler:function(){alert(‘help‘)}

}

],

buttons:[

{

text:‘确定‘,

handler:function(){alert(‘ok‘)}

},

{

text:‘关闭‘,

handler:function(){

//关闭本对话框

$("#dd1").dialog("close");

}

}

],

href:"07_combobox_2.html"

});

});

</script>

(10)messager消息窗口

》单击按钮,弹出警告框

》单击按钮,弹出确认框

》单击按钮,弹出显示框

》单击按钮,弹出输入框


<input type="button" value="警告框"/>

<input type="button" value="确认框"/>

<input type="button" value="输入框"/>

<input type="button" value="显示框"/>

<hr/>

<div style="margin:200px"></div>

<script type="text/javascript">

$(":button").click(function(){

var tip = $(this).val();

tip = $.trim(tip);

if("警告框" == tip){

$.messager.alert("我的警告框","不能睡觉了","warning");

}else if("确认框" == tip){

$.messager.confirm("我的确认框","你确定在关闭本窗口吗?",function(flag){

alert(flag);

});

}else if("输入框" == tip){

$.messager.prompt("我的输入框","你决定要学习Android还是JavaEE吗?",function(value){

alert(value);

});

}else if("显示框" == tip){

$.messager.show({

title:"我的显示框",

msg:"不要太区分Android和JavaEE了",

showType:"fade",

width:200,

height:200,

timeout:1000

});

}

});

</script>

(11)tree树

》选中树中某个子节点,弹出选中的内容 

》用树替代linkButton按钮


<ul id="ttt" class="easyui-tree" style="width:222px">

<li>

<span>第一章</span>

</li>

<li>

<span>第二章</span>

<ul>

<li>

<span>第一节</span>

</li>

<li>

<span>第二节</span>

<ul>

<li>第一条</li>

<li>第二条</li>

<li>第三条</li>

</ul>

</li>

</ul>

</li>

</ul>


<ul id="ttt"></ul>

<script type="text/javascript">

$("#ttt").tree({

url:"tree_data.json",

lines:true

});

</script>

<script type="text/javascript">

$("#ttt").tree({

onClick:function(node){

alert(node.text);

}

});

</script>

tree_data.json:


[

{

"id":1,

"text":"第一章"

},

{

"id":2,

"text":"第二章",

"state":"closed",

"children":[

{

"id":21,

"text":"第一节"

},

{

"id":22,

"text":"第二节"

},

{

"id":23,

"text":"第三节",

"state":"closed",

"children":[

{

"id":231,

"text":"第一条"

},

{

"id":232,

"text":"第二条"

}

]

}

]

}

]

(12)datagrid数据表格

》参见E:\开发类库\jquery-easyui-1.3.6\demo\datagrid(9-数据网格)\products.json

》 DateGrid会异步以POST方式向服务器传入二个参数:page和rows二个参数,服务端需要哪个,就接收哪个参数

* page:需要显示的页号

* rows:需要获取多少条记录

开发过程:

DB:


use js;

drop table if exists users;

create table users(

id    int(5) primary key auto_increment,

name varchar(4) not null,

sal int(5) not null

);

insert into users(name,sal) values(‘小赵君‘,1000);

insert into users(name,sal) values(‘中赵君‘,1500);

insert into users(name,sal) values(‘大赵君‘,2000);

insert into users(name,sal) values(‘赵小君‘,2500);

insert into users(name,sal) values(‘赵中君‘,3000);

insert into users(name,sal) values(‘赵大君‘,3500);

insert into users(name,sal) values(‘赵君小‘,4000);

insert into users(name,sal) values(‘赵君中‘,4500);

insert into users(name,sal) values(‘赵君大‘,5000);

insert into users(name,sal) values(‘赵君‘,5500);

select id,name,sal from users;

Entity:


public class User {

private Integer id;

private String name;

private Integer sal;

public User(){}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getSal() {

return sal;

}

public void setSal(Integer sal) {

this.sal = sal;

}

}

public class PageBean {

private Integer currPageNO;

private Integer perPageNO;

private Integer allRecordNO;

private Integer allPageNO;

private List<User> userList = new ArrayList<User>();

public PageBean(){}

public Integer getCurrPageNO() {

return currPageNO;

}

public void setCurrPageNO(Integer currPageNO) {

this.currPageNO = currPageNO;

}

public Integer getPerPageNO() {

return perPageNO;

}

public void setPerPageNO(Integer perPageNO) {

this.perPageNO = perPageNO;

}

public Integer getAllRecordNO() {

return allRecordNO;

}

public void setAllRecordNO(Integer allRecordNO) {

this.allRecordNO = allRecordNO;

}

public Integer getAllPageNO() {

return allPageNO;

}

public void setAllPageNO(Integer allPageNO) {

this.allPageNO = allPageNO;

}

public List<User> getUserList() {

return userList;

}

public void setUserList(List<User> userList) {

this.userList = userList;

}

}

Util:


public class JdbcUtil {

private static ComboPooledDataSource dataSource = new ComboPooledDataSource();

public static ComboPooledDataSource getDataSource() {

return dataSource;

}

}

src/c3p0-config.xml


<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>

<default-config>

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/js</property>

<property name="user">root</property>

<property name="password">root</property>

<property name="acquireIncrement">2</property>

<property name="initialPoolSize">5</property>

<property name="minPoolSize">1</property>

<property name="maxPoolSize">5</property>

</default-config>

</c3p0-config>

Dao:


public class UserDao {

//select count(id) from users where 1=1 and name like ‘%赵%‘;

public Integer getAllRecordNO(String sql) throws Exception{

QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());

Long temp = (Long) runner.query(sql,new ScalarHandler());

return temp.intValue();

}

//select id,name,sal from users where 1=1 and name like ‘%赵%‘ limit ?,?;

public List<User> findAllRecord(String sql,Integer start,Integer size) throws Exception{

QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());

return runner.query(sql,new BeanListHandler<User>(User.class),new Object[]{start,size});

}

}

Service:


public class UserService {

private UserDao userDao = new UserDao();

//show("赵",2);

public PageBean show(String keywords,Integer currPageNO) throws Exception{

PageBean pageBean = new PageBean();

String sqlA = "select count(id) from users where 1=1";

String sqlB = "select id,name,sal from users where 1=1";

if(keywords != null && keywords.trim().length() > 0){

sqlA += " and name like ‘%" + keywords + "%‘";

sqlB += " and name like ‘%" + keywords + "%‘";

}

pageBean.setCurrPageNO(currPageNO);

Integer allRecordNO = userDao.getAllRecordNO(sqlA);

pageBean.setAllRecordNO(allRecordNO);

Integer allPageNO = null;

if(pageBean.getAllRecordNO() % pageBean.getPageSize() == 0){

allPageNO = pageBean.getAllRecordNO() / pageBean.getPageSize();

}else{

allPageNO = pageBean.getAllRecordNO() / pageBean.getPageSize() + 1;

}

pageBean.setAllPageNO(allPageNO);

Integer size = pageBean.getPageSize();

Integer start = (pageBean.getCurrPageNO()-1) * size;

sqlB += " limit ?,?";

List<User> userList = userDao.findAllRecord(sqlB,start,size);

pageBean.setUserList(userList);

return pageBean;

}

}

Action:


public class UserServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

try{

request.setCharacterEncoding("UTF-8");

String keywords = request.getParameter("keywords");

if(keywords==null || keywords.trim().length()==0){

keywords = "";

}

System.out.println("keywords=" + keywords);//赵

String temp = request.getParameter("page");

if(temp == null || temp.trim().length()==0){

temp = "1";

}

Integer currPageNO = Integer.parseInt(temp);

System.out.println("currPageNO=" + currPageNO);//2

UserService userService = new UserService();

PageBean pageBean = userService.show(keywords,currPageNO);

Map<String,Object> map = new LinkedHashMap<String,Object>();

map.put("total",pageBean.getAllRecordNO());

map.put("rows",pageBean.getUserList());

JSONArray jsonArray = JSONArray.fromObject(map);

String jsonJAVA = jsonArray.toString();

jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);

response.setContentType("text/html;charset=UTF-8");

PrintWriter pw = response.getWriter();

pw.write(jsonJAVA);

pw.flush();

pw.close();

}catch(Exception e){

e.printStackTrace();

}

}

}

WebRoot/userList.jsp


<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<!-- 引入外部CSS文件 -->

<link rel="stylesheet" href="${pageContext.request.contextPath}/themes/icon.css" type="text/css"></link>

<link rel="stylesheet" href="${pageContext.request.contextPath}/themes/default/easyui.css" type="text/css"></link>

<!-- 引入外部JS文件 -->

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script>

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.easyui.min.js"></script>

<script type="text/javascript" src="${pageContext.request.contextPath}/locale/easyui-lang-zh_CN.js"></script>

</head>

<body>

姓名:

<input type="text" size="10px" id="name"/>

<input type="button" value="查询" onclick="find()"/>

<table id="dg"></table>

<script type="text/javascript">

function find(){

$("#dg").datagrid("load",{

"keywords" : $.trim( $("#name").val() )

});

}

</script>

<script type="text/javascript">

$("#dg").datagrid({

width:400,

url:"${pageContext.request.contextPath}/UserServlet",

fitColumns:true,

columns:[[

{field:‘id‘,title:‘编号‘,width:100},

{field:‘name‘,title:‘姓名‘,width:100},

{field:‘sal‘,title:‘薪水‘,width:100}

]],

singleSelect:true,

pagination:true,

pageNumber:1,

pageSize:2,

pageList:[2]

});

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/wahahshield/p/9377108.html

时间: 2024-07-30 07:09:32

easyUI 学习的相关文章

EasyUI学习总结(六)——EasyUI布局

EasyUI学习总结(六)--EasyUI布局 一.EasyUI布局介绍 easyUI布局容器包括东.西.南.北.中五个区域,其中中心面板是必须的,而东.西.南.北这四个面板是可选的,如果布局里面不需要东.西.南.北这四个面板,那么可以把相应的div删掉,另外,如果需要创建复杂的easyUI布局,那么可以通过嵌套东.西.南.北.中五个面板来实现.下面简单演示一下EasyUI布局. 1.1.通过div创建easyUI布局 easyUI的layout可以通过div来创建,使用div来创建easyUI

EasyUI学习总结(五)——EasyUI组件使用

EasyUI学习总结(五)--EasyUI组件使用 一.EasyUI组件的简单介绍 easyUI提供了很多组件让我们使用,如下图所示: 使用这些组件可以帮助我们快速地进行项目开发,下面以一个用户登录程序为例讲解EasyUI组件的使用 二.EasyUI组件的使用 2.1.创建测试的JavaWeb项目 2.2.编写测试代码 编写一个用户登录页面Login1.html,用于输入用户名和密码进行登录,使用JQuery的ajax方法异步提交表单 Login1.html的代码如下: 1 <!DOCTYPE

EasyUI学习总结(三)——easyloader源码分析

EasyUI学习总结(三)--easyloader源码分析 easyloader模块是用来加载jquery easyui的js和css文件的,而且它可以分析模块的依赖关系,先加载依赖项.模块加载好了会调用parse模块来解析页面.把class是easyui开头的标签都转化成easyui的控件. 先看Demo1例子,再分析源代码. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>easyloader范例</tit

EasyUI学习总结(二)——easyloader分析与使用

EasyUI学习总结(二)--easyloader分析与使用 使用脚本库总要加载一大堆的样式表和脚本文件,在easyui 中,除了可以使用通常的方式加载之外,还提供了使用 easyloader 加载的方式.这个组件主要是为了按需加载组件而诞生.什么情况下使用它呢? 你觉得一次性导入 easyui 的核心 min js 和 css 太大 你只用到 easyui 的其中几个组件 你想使用其中的一个组件,但是你又不知道这个组件依赖了那些组件. 如果你有以上三中情况,那么推荐你使用easyLoader.

EasyUI学习总结(四)——parser源码分析

EasyUI学习总结(四)--parser源码分析 parser模块是easyloader第一个加载的模块,它的主要作用,就是扫描页面上easyui开头的class标签,然后初始化成easyui控件. 1 /** 2 * parser模块主要是解析页面中easyui的控件 3 */ 4 $.parser = { 5 // 是否自动解析 6 auto: true, 7 8 // 可以被解析的控件 9 plugins:['linkbutton','menu','menubutton','splitb

easyui学习笔记1—增删改操作【转载】

最近公司要用easyui,这里自己看了官网几篇文章,遇到些问题,大多数的问题都是敲代码的时候笔误,其他有些地方确实需要注意一下,这里做些笔记. 1.在mysql中建好表之后修改id字段为递增字段,发现这个奇怪的mysql语法,如下 alter table student change id id int auto_increment; 这句是在student表已经建好的情况下来修改字段id为自增列,奇怪的是为嘛change id id,并且后面还要带上id的类型int? 2.html5标记 如何

easyui学习笔记2—在行内进行表格的增删改操作【转载】

第一篇笔记中记录了如何实现表格的增删改,那个是点击之后跳出来一个对话框然后进行的,这里是在表格本身上进行的操作,也很简单,但是这里发现一个版本问题,也可以说是兼容性问题. 1.首先我们看引用的js和css代码 <link rel="stylesheet" href="jquery-easyui-1.3.5/themes/default/easyui.css" /> <link rel="stylesheet" href=&quo

EasyUI学习之menu and button(菜单和按钮)

前言 今天下午的天气感觉格外的气闷,整个人有一种黏糊糊的感觉,格外的不舒服.加之立即要放假了了,感觉自己全然坐不住呢(节前综合症么).只是学习还是的继续的. 原定计划这篇文章本来应该是关于searchBox的介绍的,只是鉴于easyloader里面的依赖关系,searchBox依赖于menubutton,menubutton又依赖于menu和linkbutton.于是乎,打算先对easyui组件中的菜单和按钮进行学习了解. LinkButton(链接button) 对于链接button因为前面已

JQuery EasyUI学习框架

前言 前端技术,新项目的开发拟使用EasyUI框架(基于EasyUI丰富UI组件库),项目负责人的提示EasyUI分配给我这个任务.发展前,我需要这对于一个新手EasyUI框架学习一些基本的入门.记录在学习过程中的问题,在他们自己的问题和实事后. 关于EasyUI EasyUI框架式基于JQuery的,使用它帮助我们快捷的构建web网页. EasyUI框架是一个简单.易用.强大的轻量级web前端javascript框架.现阶段来说.在开发web项目时,前端的开发我们更喜欢使用JQuery取代原生

EasyUI学习心得

因为要修改十几年前的一个项目界面,打9月份开始学习EasyUI,很多事情都要自己试过才知道,小问题会浪费很多时间.所以,就在此记录一下,随时更新. 一.引号 EasyUI的自定义关键字的识别,API文档语焉不详.摸了很久才明白. 基本规律就是: 1. 在HTML中直接定义时,大部分必须加引号,包括自定义函数名.但布尔值.数字例外. 2. 在js中给出定义时,只有字符串类型的需要加引号,仅供EasyUI识别的字符串类型的关键字也要加引号,比如“center”. 例1: <input class=&qu