Strust2 + Layui 实现CURD

Struts2与Layui实现CRUD
本文介绍如何使用Struts2框架配合Layui前端库实现基本的增删查改(CRUD)功能,包括后端Dao类、Action类的编写,以及前端页面的布局与交互。

数据库

在这里插入图片描述

Dao类

/**
 *StrutsClassDao
 * @author 20190313
 *
 */
public class StrutsClassDao extends JsonBaseDao{
	
	/**
	 *查询
	 * @param paMap
	 * @param pageBean
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> query(Map<String, String[]> paMap, PageBean pageBean) throws Exception {
		String sql = "select * from t_struts_class where true ";
		String cname = JsonUtils.getParamVal(paMap, "cname");
		// 是否带名称查询
		if (StringUtils.isNotBlank(cname)) {
			sql = sql + " and cname  like '%" + cname + "%'";
		}
		String cid = JsonUtils.getParamVal(paMap, "cid");
		// 带id查询
		if (StringUtils.isNotBlank(cid)) {
			sql = sql + " and cid  = " + cid ;
		}
		
		return super.executeQuery(sql, pageBean);
	}
	
	
	
	
	/**
	 *修改
	 * 
	 * @param paMap
	 * @return
	 * @throws Exception
	 */
	public int eidt(Map<String, String[]> paMap) throws Exception {
		String sql = "update t_struts_class set cname = ?, cteacher = ?, pic = ? where cid = ?";
		return super.executeUpdate(sql, new String[] {"cname", "cteacher", "pic", "cid"}, paMap);
	}

	
	
	/**
	 *删除
	 * @param paMap
	 * @return
	 * @throws Exception
	 */
	public int remove(Map<String, String[]> paMap) throws Exception {
		// ����������sql���
		String sql = "delete from t_struts_class where cid = ?";
		// ִ�з����� ʹ�õ���Map��ѯ�ķ���
		return super.executeUpdate(sql, new String[] { "cid" }, paMap);
	}
	
	

	/**
	 * 添加
	 * 
	 * @param paMap
	 * @return
	 * @throws Exception
	 */
	public int add(Map<String, String[]> paMap) throws Exception {
		String sql = "insert into t_struts_class (cname, cteacher, pic)values (?,?,?)";
		return super.executeUpdate(sql, new String[] { "cname", "cteacher", "pic"}, paMap);
	}
	
	
	
	
}

curd请求的Action类

/**
 * 这是curl请求aciton
 * @author 20190313
 *
 */
public class StrutsClassAction extends BaseAction{
	private StrutsClassDao strutsClassDao = new StrutsClassDao();
	
	
	/**
	 * 添加
	 * @return
	 * @throws Exception 
	 */
	public  String add() throws Exception {
		int n = strutsClassDao.add(request.getParameterMap());
		ResponseUtil.writeJSON(response, n);
		return null;
	}
	
	/**
	 * 查询
	 * @return
	 * @throws Exception 
	 */
	public  String query() throws Exception {
		PageBean pageBean = new PageBean();
		pageBean.setRequest(request);
		
		List<Map<String, Object>> list  = strutsClassDao.query(request.getParameterMap(), pageBean);
		Map<String, Object> map=new HashMap<>();
		map.put("code", 0);
		map.put("count", pageBean.getTotal());
		map.put("data", list);
		//以JSON格式返回
		ResponseUtil.writeJSON(response, map);
		return null;
	}
	
	
	
	/**
	 *修改
	 * @return
	 * @throws Exception 
	 */
	public  String eidt() throws Exception {
		int n = strutsClassDao.eidt(request.getParameterMap());
		ResponseUtil.writeJSON(response, n);
		return null;
	}
	
	
	
	/**
	 * 删除
	 * @return
	 * @throws Exception 
	 */
	public  String remove() throws Exception {
		int n = strutsClassDao.remove(request.getParameterMap());
		ResponseUtil.writeJSON(response, n);
		return null;
	}
	
	
	
}

strust2的配置文件中添加如下代码

	<package name="sy" extends="base" namespace="/sy">
		<action name="/strutsClassAction_*" class="com.cpc.web.StrutsClassAction" method="{1}">
		</action>
	</package>

前台JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Layui + Struts 实现CURD</title>
<!-- 引入layui的css包 -->
<link rel="stylesheet" href="static/layui/css/layui.css">
<!-- 引入layui的js包 -->
<script src="${pageContext.request.contextPath }/static/layui/layui.js"></script>
<!-- 引入jquery-->
<script type="text/javascript" src="static/js/jquery-3.3.1.js"></script>
</head>
<body class="child-body">

	<!--隐藏域传值  -->
	<input type="hidden" id="path"
		value="${pageContext.request.contextPath}">
		
	<blockquote class="layui-elem-quote">
		<!--搜索框-->
		<div class="layui-form">
			<div class="layui-form-item">
				<label class="layui-form-label">cname:</label>
				<div class="layui-input-inline">
					<input type="text" id='searchName' name="searchName"
						lay-verify="required" placeholder="请输入cname" autocomplete="true"
						class="layui-input">
				</div>
				<button class="layui-btn layui-btn-normal layui-btn-radius"
					data-type="reload">
					<i class="layui-icon">&#xe615;</i>查询
				</button>
				<button class="layui-btn layui-btn-normal" data-type="add">新建</button>
			</div>
		</div>
	</blockquote>

	<!--根据table id 来展示表格数据  -->
	<table class="layui-hide" id="strutsClassTable" lay-filter="test"></table>
	
	<!--行内样式按钮   -->
	<script type="text/html" id="lineBtns">
  		<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon">&#xe642;</i>编辑</a>
 		<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
	</script>
	
	
	<!--弹出层  增改通用-->
	 <div class="site-text" style="margin: 5%; display: none" id="box1"  target="test123">
	    <form class="layui-form layui-form-pane" onsubmit="return false" id="myFrom">
	        <div class="layui-form-item">
	            <label class="layui-form-label"> cname</label>
	            <div class="layui-input-block">
	                <input type="text" class="layui-input"  id="cname"  name=cname><br>
	            </div>
	            
	              <label class="layui-form-label">cteacher</label>
	            <div class="layui-input-block">
	                <input type="text" class="layui-input"  id="cteacher"  name=cteacher><br>
	            </div>
	               <label class="layui-form-label">pic</label>
	            <div class="layui-input-block">
	                <input type="text" class="layui-input"  id="pic"  name=pic><br>
	            </div>
	        </div>
	    </form>
	</div> 

	<!-- 引入当前页面的js -->
	<script src="${pageContext.request.contextPath }/static/js/index.js"></script>
</body>
</html>

index.js

//执行渲染
layui.use(['table','layer','form'],function(){
	//定义通用全局变量
	var path=document.getElementById("path").value;
	var table =layui.table;
	var layer=layui.layer;
	var form = layui.form;
    var $ = layui.$;
	
    //展示数据表格(数据表格初始化)
	table.render({
		 elem:'#strutsClassTable'//表格id
		,url:path+'/sy/strutsClassAction_query.action'//所对应调用的接口
		,method:'post'		//提交方式
	    ,cols:[[
	    	/*根据数据库的表格所对应的名称  */
	         {field:'cid',height:80, width:300, title: 'cid'}
	         ,{field:'cname', height:80,width:300, title: 'cname'}
	         ,{field:'cteacher',height:80, width:300, title: 'cteacher'}
	         ,{field:'pic',height:80, width:300, title: 'pic'}
	         ,{field:'right',height:80, width:300, title: '操作', toolbar:'#lineBtns'}//操作栏
	    ]]
	    ,page:'true'//分页
	    , id: 'testReload'
	});
	
	
    
    //查询和新增事件触发
    var active = {
            //查询
            reload: function () {
                var cname = $('#searchName').val();//获取查询内容
                // 执行重载
                table.reload('testReload', {
                    page: {
                        curr: 1// 从第1页开始展示查询结果
                    },
                    where: {
                        key: 'cname',
                        cname: cname
                    }
                });
            }, 
            add: function () { //添加
                layer.open({//弹出框
                    type: 1,
                    title: '添加信息',
                    maxmin: true,
                    shadeClose: true, //点击遮罩关闭层
                    area: ['60%', '55%'],
                    content: $('#box1'),
                    btn: ['确定', '取消'],
                    //当点击确定触发回掉
                    yes: function (index, layero) {//确定执行函数
                        //通过向后台返回ajax请求来添加数据
                        $.getJSON(path+"/sy/strutsClassAction_add.action", {
                        	//携带参数
                        	cname:$("#cname").val(),
                        	cteacher:$("#cteacher").val(),
                        	pic:$("#pic").val()
                        }, function (data) {
                        	/*根据后台返回的参数来进行判断是否添加成功 */
                            if (data >  0) {
                            	//弹出提示层
                                layer.alert('添加成功', {icon: 1, title: '提示'}, function (i) {
                                    layer.close(i);
                                    layer.close(index);//关闭弹出层
                                    $("#myFrom")[0].reset()//重置form
                                })
                                //重载表格
                                table.reload('testReload', {
                                    page: {
                                        curr: 1// 重新从第 1 页开始
                                    }
                                })
                            } else{
                            	//提示添加失败
                                layer.msg('添加失败')
                            }
                        })

                    }, cancel: function (index, layero) {//取消
                    	//当点击取消按钮
                        $("#myFrom")[0].reset()//重置form  根据id
                        layer.close(index)
                    }
                });
            }
    }
    
    //这是事件的通用触发
    $('.layui-form .layui-btn').on('click', function () {
        var type = $(this).data('type');
        active[type] ? active[type].call(this) : '';
    });
	
	
	
	/*表格 行内操作(编辑  以及  删除 按钮操作)  */
	table.on('tool(test)', function(obj){
	         var data = obj.data; //获得当前行数据
	         var tr=obj.tr//活动当前行tr 的  DOM对象
	         var layEvent = obj.event; //获取操作状态 修改和删除
	         
	         if(layEvent === 'del'){ //删除
	             layer.confirm('确定删除吗?',{title:'删除'}, function(index){
	                 //向服务端发送删除指令og
	                 $.getJSON(path+'/sy/strutsClassAction_remove.action',{cid:data.cid}, function(ret){
	                         layer.close(index);//关闭弹窗
	                         table.reload('testReload', {//重载表格
	                             page: {
	                                 curr: 1// 重新从第 1 页开始
	                             }
	                         })
	                 });
	                 layer.close(index);
	             });
	         } else if(layEvent === 'edit'){ //编辑
	             layer.open({
	            	 type: 1,
	                 title: '修改信息',
	                 maxmin: true,
	                 shadeClose: true, //点击遮罩关闭层
	                 area: ['60%', '55%'],
	                 content: $('#box1'),
	                 btn: ['确定', '取消']
	                 ,content:$('#box1')  //弹窗id
	                 ,success:function(layero,index){
	                	 //数据绑定
		                 $('#cname').val(data.cname);
		                 $('#cteacher').val(data.cteacher);
		                 $("#pic").val(data.pic);
	                 },yes:function(index,layero){
	                	//确定修改回掉
	                	  $.getJSON(path+'/sy/strutsClassAction_eidt.action',{
	                			//携带参数
	                        	cname:$("#cname").val(),
	                        	cteacher:$("#cteacher").val(),
	                        	pic:$("#pic").val(),
	                        	cid:data.cid
	                	  },function(data){
	                	  //根据后台返回的参数,来进行判断
	                		  if(data>0){
	                			  layer.alert('编辑成功',{icon:1,title:'提示'},function(i){
	                				  layer.close(i);
	                                  layer.close(index);//关闭弹出层
	                                  $("#myFrom")[0].reset()//重置form
	                			  })
	                			  table.reload('testReload',{//重载表格
	                				  page:{
	                					  curr:1
	                				  }
	                			  })
	                		  }
	                	  });
	                 }
	               
	             
	             });
	         }
	    });  
});

展示效果

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值