专栏首页海仔技术驿站javaWeb核心技术第十四篇之easyui

javaWeb核心技术第十四篇之easyui

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/zhao1299002788/article/details/100185402

网站是分为网站的前台和网站的后台.
		前台--给用户看的   例如:商城
		后台--给管理员看的  例如:商城后台  目的:用来添加维护数据
	
	BootStrap:jsp 页面显示,效果好,美观,适合作为用户界面.
	EasyUI : jsp页面,快速开发,格式统一,美观效果一般.
	
	EasyUI里面有很多组件(功能模块):有自己的特使,但编写简单,只需固定html代码结构.
	
	EasyUI环境搭建:
		1.导入css , 需要2个css
		2.导入jquery,需要2个js
			<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/easyui.css">
			<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/icon.css">
			<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/demo.css">
			<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>
				
	EasyUI的定义方式:
		easyui规定:我们只需要提供简单html代码结构,就可以生成特殊的效果.
			easyui的定义方式:
				1.html代码结构.
					1.1:需要有class="easyui-*"  *表示组件的名称.
					1.2:easyui提供另外一个属性:data-options:里面可以写easyui提供的属性.
						data-options格式:json格式:key:value,key:value......
				
				2.js渲染.
					2.1:语法 : 对象.组件名称();
					2.2:语法 : 对象.组件名称({key:value,key:value.....});
				
				例如:
					html例子:
					<div class="easyui-window" data-options="title:'this is 标题',width:200,height:400"></div>
					
					js例子:
					<div id="myDiv"></div>
					<script>
						//如果使用js渲染,语法 : 对象.组件名称({key:value,key:value.....});
						$("#myDiv").window({
							title:'这是新的标题',
							width:400,
							height:400
						});
					</script>	
	Easy--属性--事件--方法:
		easyui的属性 : 事件,方法
			属性 : 组件自身特点,事件和属性可以写在一起,格式:key:value,key:value....
			事件 : (被动)完成某件事情后触发的动作.
				$(对象).组件名称({
					属性:属性值,
					属性:属性值,
					事件:函数
				})
			
			方法:(主动)主动完成某件事件.
			语法:
				$(对象).组件名称(方法名称,方法的参数)
				
			<div class="easyui-dialog" data-options="width:200,height:200",onBeforeClose:function(){
					alert('窗口即将关闭');
			}"></div>
			
			例如:
				<div id="myDiv2"></div>
				<input type="button" value="关闭窗口" onclick="closeDialog()">
				<input type="button" value="打开窗口" onclick="openDialog()">
				//事件
				<script type="text/javascript">
					$("#myDiv2").dialog({
						width:200,
						height:200,
						onBeforeClose:function(){
							alert('窗口即将关闭')
						}
					});
				
				function closeDialog() {
					//方法设置的标准语法 : $(对象).组件名称(方法名称[,方法的值])
					$("#myDiv2").dialog("close");
				
				}
				function openDiaLog() {
					$("#myDiv2").dialog("open");
				}
		</script>
	
	表单:
		默认情况下,表单是传统表单,传统表单同步,easyui的表单是异步的.
		<script>
			$("#ff").from({
				url:"${pageContext.request.contextPath}/DemoServlet",//等效action属性,表单提交的路径.
				onSubmit : function() {
					//在此处可以做效验,表单提交前效验.
					//alert(1);
					//return false;
				},
				success:function(data) {
					//回调函数,此处是没有判断状态码为200情况,以后是需要判断data值.
					alert(data)
				}
			});
		</script>
	Tabs:选项卡
		<script>
			function addTabs(){
				var flag = $("#tt").tabs("exists","工资条");
				
				if(flag){
					//如果面板已经存在,选中该面板
					$("#tt").tabs("select","工资条");
				}else{
					//如果面板不存在,添加面板
					$("#tt").tabs("add",{
						title : "工资条",  //标题
						content : "Tab Body",  //内容
						closable : true  //是否可以关闭
						
					});
				}
				
			}
		</script>
			
	下拉框:
		<input id="cc" name="dept" value="请选择">
			<script>
				$("#cc").combobox({
					//可以加载远程事件,支持json   easyui都支持json
					url:"combobox_data.json",
					valueField : "id", //对应value值,需要将json的key放在此处,  // <option value="">文本</option>
					textFiedld : "name"  //将要显示的文本的key放在此处
					
				});
			</script>
	
	Datagrid:数据表单
		url : 加载远程的数据,支持json
			表格中的field的字段名称,必须和json的一致,如果一致,表单将自动填充json数据.
		<table class="easyui-datagrid" data-options="url:'datagrid_data.json',fit:true">
			<thead>
				<tr>
					<th data-options="field:'id',width:100">编码</th>
					<th data-options="field:'name',width:100">名称</th>
					<th data-options="field:'age',width:100,align:'right'">价格</th>
					<th data-options="field:'pimage',width:100,align:'right',formatter:function( value , rows , index){ return '<img src='+value + '>';}">图片</th>
				</tr>
			</thead>
		</table>
	
	<table id="dg"></table>
		value : 表示当前json的值
		rows : 表示当前行的对象
		index : 表示当前行的索引
	<script>
		$('#dg').datagrid({    
		    url:'datagrid_data.json', //url : 加载远程的数据 支持json     
		    columns:[[    
		        {field:'id',title:'id',width:100},    
		        {field:'name',title:'Name',width:100},    
		        {field:'age',title:'age',width:100,align:'right'}, 
		        {field:'pimage',title:'pimage',width:100,align:'right',
		        	formatter:function(value , rows , index){
		        		return  "<img src='"+value+"' style='width:40px'>";
		       		}	
		        }    
		    ]],
		    fit:true ,//表格自动填充
		    fitColumns:true, //列自动填充
		    autoRowHeight:true,//高度填充
		    toolbar:[{
				iconCls: 'icon-edit',
				handler: function(){alert('编辑按钮')}
			},'-',{
				iconCls: 'icon-help',
				handler: function(){alert('帮助按钮')}
			}],
			singleSelect:true, //只能选择一个
			pagination:true,//页面的底部加上分页条
			pageNumber:1, //默认打开第一页
			pageSize:5,
			pageList:[5,10,15,20,25,30]
		});  
	</script>
	
	后台代码:
		接收的分页参数:
		响应回去的数据:
		
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			//问题1: 页面需要传入 pageSize 和 pageNumber
			//问题2: 响应数据 是什么? 页面需要什么数据来进行分页
			
			//0.编码
			request.setCharacterEncoding("utf-8");
			response.setHeader("content-type", "text/html;charset=utf-8");
			//1.获得数据
			String pageNumberStr = request.getParameter("page");
			String pageSizeStr = request.getParameter("rows");
			
			int pageNumber = Integer.valueOf(pageNumberStr);
			int pageSize = Integer.valueOf(pageSizeStr);
			
			//int pageNumber= 1;
			//int pageSize = 5;
			
			//2.处理数据
			ProductService service = new ProductService();
			//List<Product> pList = service.findAll();
			//如果响应回去的只是list 不会进行分页
			//List<Product> pList = service.findByPage( pageNumber , pageSize);
			EasyUIPageBean<Product> easyUIPageBean = service.findByEasyUIPage( pageNumber , pageSize);
			
			//需要响应的数据{total:28 , "rows" : [ {} , {} ,{} ]}   ==>> 可以使用map 也可以封装对象
			//但目前是           [{key:value,key:value},{key:value,key:value}..]
			
			
			//3.响应
			Gson gson = new Gson();
			String json = gson.toJson(easyUIPageBean);
			System.out.println(json);
			response.getWriter().print(json); 
		} catch (Exception e) {
			e.printStackTrace();
		}
	
	}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 并发编程之第三篇(synchronized)

    重量级锁竞争的时候,还可以使用自旋来进行优化,如果当前线程自旋成功(即这时候持锁线程已经退出了同步块,释放了锁),这时当前线程就可以避免阻塞。 自旋重试成功的...

    海仔
  • 并发编程之进程与线程

    单核CPU下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,将CPU的时间片(windows下时间片最小约为15毫秒)分给不同的线程使用,只是由于...

    海仔
  • 操作系统篇之Linux命令操作和redis安装以及基本使用

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    海仔
  • javascript(一):javascript基本介绍及基本语法

    什么是javascript? javascript是一种直译型脚本语言,是一种动态类型、弱类型、基于原型的语言。(所谓“脚本语言”:指的是它不具有开发操作系统的...

    用户1149564
  • ES6新特性

    除此之外还有一个字符串模板,相当于加强版的字符串。用反引号``(之前我们字符串一直使用的是""),可以用来定义多行字符串,还可以在字符串中加入变量和表达式。

    乐心湖
  • 腾讯官方可编程机器人 (该怎么折腾呢)

    腾讯推出了内测的 webhook 机器人,这件事其实预见性就知道了,只是最近没想到出来了,钉钉和一些就支持 webhook 实现机器人,腾讯跟进可还行。

    乔千
  • 面试官:JVM对锁进行了优化,都优化了啥?

    从JDK1.6开始,JVM对锁进行了各种优化,目的就是为了在线程间更高效的共享数据和解决互斥同步的问题。从锁优化的话题开始,可以引申出很多考点面试题,比如锁优化...

    JavaQ
  • PHP无锁内存nosql---Yac的实战

      最近在工作使用了yac,所以比较了下Memcache和Yac的高并发读写性能测试,发现Yac要比Memcache快很多(这里没有比较Yac和Apc的性能情况...

    sunsky
  • Java并发总篇

    AQS是并发基类 , 通过State以及Exclussive Thread来控制资源总数以及资源独占的线程. 通过LockSupport.park/unpar...

    None_Ling
  • Vue.js 快速上手精华梳理-实例

    瑞新

扫码关注云+社区

领取腾讯云代金券